Gloobus Опубликовано 30 сентября, 2013 Жалоба Поделиться Опубликовано 30 сентября, 2013 И так! Что бы не дублировать и не причислять себе уже существующие достяжения и решения, введу предисловие Для орагнизации ответа на комментарий с уведомлением, нам понадобится:1. Решение e-mail в комментариях от пользователя Ps-simpla™2. Решение по редактированию комментариев от пользователя KpoxaUPD: решение по ссылке более не доступно, читаем тутПосле того, как эти два решения интегрированы в Simpla, можно продолжить! 1. В таблице комментариев _comments создаем новое поле otvet с типом TEXT (по аналогии с полем text). После этого правим функцию get_comment и get_comments в файле api/Comments.php, которая получает данные из базе по комментариям, нам нужно в SELECT включить наше новое поле. Я не буду дословно описывать "найдите это, замените на это", действия те-же, как в случае с добавлением поля email в таблицу с комментариями, мы просто ищем SQL запрос SELECT в функциях get_comment и get_comments и добавляем после "c.text," новое поле "c.otvet,". 2. Дале правим шаблон comment.tpl, добавляя туда скрытое поле с e-mail'ом автора комментария, что бы отправить его потом в POST... после <input name="type" type="hidden" value="{$comment->type|escape}"> добавляем: <input name="email" type="hidden" value="{$comment->email|escape}"> А так же, нам понадобится новый textarea для ввода ответа, по аналогии с текстом комментария, выглядеть это должно примерно так: <!-- Комментарий --> <div class="block layer"> <h2>Текст комментария</h2> <textarea name="text" class="editor_small" style="width:100%; height:100px;">{$comment->text|escape}</textarea> </br></br> <h2>Ответ администратора</h2> <textarea name="otvet" class="editor_small" style="width:100%; height:100px;">{$comment->otvet|escape}</textarea> {if $comment->email} <input type="checkbox" value="1" id="notify_user" name="notify_user"> <label for="notify_user">Уведомить пользователя об ответе на комментарий</label> {/if} </div> В итоге мы получаем следующую картинку: 3. Далее в файле CommentAdmin.php добавляем после строки: $comment->name = $this->request->post('name'); строку получения адреса эл.почты, которую мы передали из шаблона: $comment->email = $this->request->post('email'); Чуть ниже, мы заменяем строку: $this->comments->update_comment($comment->id, $comment); на следующий блок: $comment->otvet = $this->request->post('otvet'); $is_notify = $this->request->post('notify_user'); $comment_id = $this->comments->update_comment($comment->id, $comment); if ($comment_id and $is_notify and $comment->email and $comment->otvet) $this->notify->email_comment_user($comment_id); 4. Теперь нам надо создать функцию email_comment_user, открываем файл api/Notify.php и в удобное место, к примеру после функции: public function email_comment_admin($comment_id) { ... } добавляем нашу функцию: // Если админ оставил ответ на комментарий, отправляем письмо пользователю! public function email_comment_user($comment_id) { if(!($comment = $this->comments->get_comment(intval($comment_id)))) return false; $this->design->assign('comment', $comment); // Выбирает объект, который прокомментирован: if($comment->type == 'product') { $products = array(); $products_ids = array(); $products_ids[] = $comment->object_id; foreach($this->products->get_products(array('id'=>$products_ids)) as $p) $products[$p->id] = $p; if(isset($products[$comment->object_id])) $comment->product = $products[$comment->object_id]; } if($comment->type == 'blog') { $posts = array(); $posts_ids = array(); $posts_ids[] = $comment->object_id; foreach($this->blog->get_posts(array('id'=>$posts_ids)) as $p) $posts[$p->id] = $p; if(isset($posts[$comment->object_id])) $comment->post = $posts[$comment->object_id]; } // Отправляем письмо $email_template = $this->design->fetch($this->config->root_dir.'simpla/design/html/email_comment_user.tpl'); $subject = $this->design->get_var('subject'); $this->email($comment->email, $subject, $email_template, $this->settings->notify_from_email); } 5. Готово, теперь же нам нужен сам шаблон, создаем его simpla/design/html/email_comment_user.tplЯ использовал следующий шаблон уведомления: {$subject="Администратор магазина оставил ответ на Ваш комментарий" scope=parent} <h1 style="font-weight:normal;font-family:arial;">Ваш комментарий получил ответ администратора магазина</h1> <div style="font-family:arial; font-size: 11pt;">Уважаемый(ая) {$comment->name|escape}! На ваш комментарий {if $comment->type == 'product'} к товару <a target="_blank" href="{$config->root_url}/products/{$comment->product->url}#comment_{$comment->id}">{$comment->product->name}</a> {elseif $comment->type == 'blog'} к статье <a target="_blank" href="{$config->root_url}/blog/{$comment->post->url}#comment_{$comment->id}">{$comment->post->name}</a> {/if} от {$comment->date|date} {$comment->date|time} с текстом:</div> <span style="font-family:arial; font-size: 10pt; font-style:italic; padding-left:30px">{$comment->text|escape|nl2br}</span> <div style="font-family:arial; font-size: 11pt; padding-top: 10px;">получен официальный ответ:</div> <span style="font-family:arial; font-size: 10pt; font-style:italic; padding-left:30px">{$comment->otvet|escape|nl2br}</span> <div style="font-family:arial; font-size: 10pt; padding-top: 20px;">Посмотреть {if $comment->type == 'product'} <a target="_blank" href="{$config->root_url}/products/{$comment->product->url}#comment_{$comment->id}">комментарий к товару</a> {elseif $comment->type == 'blog'} <a target="_blank" href="{$config->root_url}/blog/{$comment->post->url}#comment_{$comment->id}">комментарий к статье</a> {/if} или перейти в <a href="{$config->root_url}">Магазин</a> </div> в итоге получаем вот такое красивое уведомление: Ну, на этом все, остальное это уже подгон шаблона! Например в шаблоне Product.tpl используем {$comment->otvet|escape|nl2br} для вывода ответа. Аналогично в шаблоне админки comments.tpl, на главной странице списка комментария выводим ответ: Цитата Ссылка на сообщение Поделиться на другие сайты
tumanenko Опубликовано 18 октября, 2013 Жалоба Поделиться Опубликовано 18 октября, 2013 Круто!В комментариях теперь не хватает только разделения текста на текст общий, о минусах и о плюсах. Цитата Ссылка на сообщение Поделиться на другие сайты
Dimon789 Опубликовано 21 октября, 2013 Жалоба Поделиться Опубликовано 21 октября, 2013 Круто!В комментариях теперь не хватает только разделения текста на текст общий, о минусах и о плюсах.у многих уж есть такое разделение Цитата Ссылка на сообщение Поделиться на другие сайты
tumanenko Опубликовано 23 октября, 2013 Жалоба Поделиться Опубликовано 23 октября, 2013 у многих уж есть такое разделениенапример у кого? Это решение в продаже )? Цитата Ссылка на сообщение Поделиться на другие сайты
Dimon789 Опубликовано 29 октября, 2013 Жалоба Поделиться Опубликовано 29 октября, 2013 например у кого? Это решение в продаже )?не в продаже так как нет времени выложить в продажу ) Цитата Ссылка на сообщение Поделиться на другие сайты
mart Опубликовано 29 октября, 2013 Жалоба Поделиться Опубликовано 29 октября, 2013 http://www.simplashop.com/products/faq - аналогичная задача. В принципе давно работаю через этот модуль в своей админке. Цитата Ссылка на сообщение Поделиться на другие сайты
Gloobus Опубликовано 3 ноября, 2013 Автор Жалоба Поделиться Опубликовано 3 ноября, 2013 mart в вашем примере возможна переписка, в моем же варианте ТОЛЬКО ответ... Ну такой небольшой ньюанс как бесплатность Цитата Ссылка на сообщение Поделиться на другие сайты
mart Опубликовано 3 ноября, 2013 Жалоба Поделиться Опубликовано 3 ноября, 2013 Со временем все будет бесплатно...Насчет полноценной переписки - необходима повторная идентификация клиента, т.е. по сути дальнейшие вопрос-ответ с клиентом в Симпле возможны только через авторизацию. Или еще можно попробовать через куки, но это вариант не стабилен Пока склоняюсь к обязательной регистрации, т.е. даже при заказе без авторизации делать скрытую регистрацию.Как раньше многие из http://www.simplashop.com/articles были платными (да и сейчас у некоторых как оказалось. даже мои бесплатные скрипты продают ) Цитата Ссылка на сообщение Поделиться на другие сайты
cop2000 Опубликовано 24 марта, 2014 Жалоба Поделиться Опубликовано 24 марта, 2014 Добрый деньПодскажите как в указанном вами варианте (который уже реализован) сделать возможным вставлять гиперссылки в ответ администратора ? Как не пытался в итоге получаю на сайте текст а не ссылку (например на товар)Заранее благодарю Цитата Ссылка на сообщение Поделиться на другие сайты
lukjanchuks Опубликовано 1 апреля, 2014 Жалоба Поделиться Опубликовано 1 апреля, 2014 здравствуйте! а как сделать чтобы блок с ответом отображался только тогда когда админ ответил, а то он у меня для всех вопросов добавился! <div id="page_title"><h2>{$name_title}({$comments|count})</h2></div> {if $comments} <ul class="comment_list"> {foreach $comments as $comment} <a name="comment_{$comment->id}"></a> <li> <div class="comment_header"> {$comment->name|escape}<i>{$comment->date|date}, {$comment->date|time}</i> {if !$comment->approved}ожидает модерации</b>{/if} </div> {$comment->text|escape|nl2br} <div class="answer"><span>Официальный ответ</span><p>{$comment->otvet|escape|nl2br}</p></div> </li> {/foreach} </ul> {/if} скрин: http://i.imgur.com/UKz5zf8.png Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 1 апреля, 2014 Жалоба Поделиться Опубликовано 1 апреля, 2014 {if $comment->otvet} Официальный ответ{$comment->otvet|escape|nl2br} {/if} Цитата Ссылка на сообщение Поделиться на другие сайты
lukjanchuks Опубликовано 2 апреля, 2014 Жалоба Поделиться Опубликовано 2 апреля, 2014 {if $comment->otvet}<div class="answer"><span>Официальный ответ</span><p>{$comment->otvet|escape|nl2br}</p></div>{/if}Спасибо!)) будем знать Цитата Ссылка на сообщение Поделиться на другие сайты
Gloobus Опубликовано 13 ноября, 2014 Автор Жалоба Поделиться Опубликовано 13 ноября, 2014 Покапался на днях в своем коде, уже на помню что там было сделано Крохой, а что мной доработано! Т.к. его страница более не доступна, попробую восстановить хронологию, но времени много прошло, и за точность не ручаюсь:1. Качаем архив прикрепленный к сообщению и раскидываем файлы согласно структуре папок на сайте2. Открываем simpla/design/html/comments.tpl и перед ссылкой удаления коммента: <a class="delete" title="Удалить" href="#"></a> добавляем ссылку на редактирование: <a class="edit" title="Редактировать" href="{url module=CommentAdmin id=$comment->id return=$smarty.server.REQUEST_URI}"></a> 3. Далее открываем simpla/IndexAdmin.php и перед: 'CommentsAdmin' => 'comments', добавляем 'CommentAdmin' => 'comments', 4. Еще наверно в стили simpla/design/css/style.css нужно добавить стиль для ссылки редактирования: .icons a.edit { background-image: url(design/images/pencil.png); } Вроде все... В прикрепленных файлах уже есть код, который нужно вносить по моей документации из первого поста, так что шаги по изменению этих файлов (2 и 3) можно пропустить!simpla.rar Цитата Ссылка на сообщение Поделиться на другие сайты
AlexanderKi Опубликовано 8 декабря, 2014 Жалоба Поделиться Опубликовано 8 декабря, 2014 спасибо вам. Цитата Ссылка на сообщение Поделиться на другие сайты
AlexanderKi Опубликовано 8 декабря, 2014 Жалоба Поделиться Опубликовано 8 декабря, 2014 Покапался на днях в своем коде, уже на помню что там было сделано Крохой, а что мной доработано! Т.к. его страница более не доступна, попробую восстановить хронологию, но времени много прошло, и за точность не ручаюсь:1. Качаем архив прикрепленный к сообщению и раскидываем файлы согласно структуре папок на сайте2. Открываем simpla/design/html/comments.tpl и перед ссылкой удаления коммента: <a class="delete" title="Удалить" href="#"></a> добавляем ссылку на редактирование: <a class="edit" title="Редактировать" href="{url module=CommentAdmin id=$comment->id return=$smarty.server.REQUEST_URI}"></a> 3. Далее открываем api/simpla.php и перед: 'CommentsAdmin' => 'comments', добавляем 'CommentAdmin' => 'comments', 4. Еще наверно в стили simpla/design/css/style.css нужно добавить стиль для ссылки редактирования: .icons a.edit { background-image: url(design/images/pencil.png); } Вроде все... В прикрепленных файлах уже есть код, который нужно вносить по моей документации из первого поста, так что шаги по изменению этих файлов (2 и 3) можно пропустить!Не работает данный метод( Цитата Ссылка на сообщение Поделиться на другие сайты
Gloobus Опубликовано 8 декабря, 2014 Автор Жалоба Поделиться Опубликовано 8 декабря, 2014 Не работает данный метод(Я даже не знаю, как отвечать на такие сообщения? Вы бы хотя бы какой нибудь информации добавили! Что не работает? Какую ошибку пишет? Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 8 декабря, 2014 Жалоба Поделиться Опубликовано 8 декабря, 2014 П.3, например, нельзя выполнить, потому что в указанном файле нет указанной строки. А то, что п.3 надо выполнять для совсем другого файла, новичку догадаться трудно... Цитата Ссылка на сообщение Поделиться на другие сайты
AlexanderKi Опубликовано 9 декабря, 2014 Жалоба Поделиться Опубликовано 9 декабря, 2014 Я даже не знаю, как отвечать на такие сообщения? Вы бы хотя бы какой нибудь информации добавили! Что не работает? Какую ошибку пишет?НУ почему не знаете как отвечать, данный метод был предназначен для редактирование чужого комментария, и данный метод не позволяет этому совершиться. )) + в api/simpla.php нет строчек'CommentsAdmin' => 'comments', Цитата Ссылка на сообщение Поделиться на другие сайты
Gloobus Опубликовано 9 декабря, 2014 Автор Жалоба Поделиться Опубликовано 9 декабря, 2014 НУ почему не знаете как отвечать, данный метод был предназначен для редактирование чужого комментария, и данный метод не позволяет этому совершиться. )) + в api/simpla.php нет строчек'CommentsAdmin' => 'comments',Да, ошибся, это вставляется в simpla/IndexAdmin.php П.3, например, нельзя выполнить, потому что в указанном файле нет указанной строки. А то, что п.3 надо выполнять для совсем другого файла, новичку догадаться трудно...Вы правы, спешил и не то написал... Но я считаю, что бездумно копипастить как то не хорошо. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 9 декабря, 2014 Жалоба Поделиться Опубликовано 9 декабря, 2014 Да, ошибся, это вставляется в simpla/IndexAdmin.php Вы правы, спешил и не то написал... Но я считаю, что бездумно копипастить как то не хорошо.А я бы сказал, что спешить не надо, а надо заботиться о качестве написанного. Сэкономленная Вами минута оборачивается не только часовыми потерями времени для пользователей на поиск Ваших ошибок и неточностей, но и потерями времени для Вас лично на дополнительную довольно бестолковую переписку. А неуклюжие оправдания типа "я спешил" напоминают классическое "я учил" из безоблачных детских лет, и никак не добавляют положительных элементов имиджу написавшего... Вот еще совсем свежий подобный пример, возможно, там автор тоже куда-то спешил: http://forum.simplacms.ru/topic/1335-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5-%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0/page-10?do=findComment&comment=65802 Как говорится, поспешишь - людей насмешишь... Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 9 декабря, 2014 Жалоба Поделиться Опубликовано 9 декабря, 2014 (изменено) Вот еще совсем свежий подобный пример, возможно, там автор тоже куда-то спешил:http://forum.simplacms.ru/topic/1335-множественное-значение-фильтра/page-10#entry65802 Как говорится, поспешишь - людей насмешишь...Корс да ты как говнюк поступаешь.Автор (то есть я) написал вполне годную, рабочую статью, а ты вместо того чтобы проверить все - базар устраиваешь.P.S. Да корс поспешишь людей насмешишь, вот меня ты точно насмешил своей глупостью. Изменено 13 июня, 2015 пользователем Noxter Цитата Ссылка на сообщение Поделиться на другие сайты
AlexanderKi Опубликовано 13 июня, 2015 Жалоба Поделиться Опубликовано 13 июня, 2015 Не сохраняются изменения.*( Цитата Ссылка на сообщение Поделиться на другие сайты
martinways Опубликовано 13 июня, 2015 Жалоба Поделиться Опубликовано 13 июня, 2015 Тоже проделал всё по пунктам - после нажатия ИЗМЕНИТЬ не сохраняются коменты.... ХЕЛП! Цитата Ссылка на сообщение Поделиться на другие сайты
Gloobus Опубликовано 26 июня, 2015 Автор Жалоба Поделиться Опубликовано 26 июня, 2015 Включите вывод ошибок PHP и пишите что за ошибки при сохранении... Ваши вопросы аналогичны, что я ща зайду на автофорум и буду кричать "все сделал, машина не заводится, хелп, помогите". Что бы включить вывод ошибок, добавьте в файлы simpla/index.php после первой строки <?PHP следующее: ini_set('display_errors', 'On'); error_reporting(E_ALL | E_STRICT); Могу предположить что не сохраняет из-за: $this->notify->email_comment_user($comment_id); в файле CommentAdmin.php Вы точно проделали пункт 4 из первого поста? Попробуйте сохранить комментарий БЕЗ галочки об отправке уведомления. Цитата Ссылка на сообщение Поделиться на другие сайты
martinways Опубликовано 6 сентября, 2015 Жалоба Поделиться Опубликовано 6 сентября, 2015 (изменено) Я еще не дошел до реализации ответа на комментарий и уведомления автору, для начала хотел сделать хотябы редактирование коммента, но ниче не сохраняется, хотя появляется сообщение "комментарий изменен", галочки об отправке уведомления на странице редактирования у меня нет, вверху страницы выдает вроде ошибку Strict Standards: Creating default object from empty value in C:\web\OpenServer\domains\evotime\admin\CommentAdmin.php on line 11 Что это может значить? Или для функции редактирование обязательно должна быть реализована функция уведомления? Изменено 6 сентября, 2015 пользователем martinways Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.