Компоненты для создания комментариев в MODX Revolution

Компоненты для создания комментариев в MODX Revolution
Комментарии: 54

Почти каждый сайт должен иметь обратную связь с посетителями и чаще всего она реализуется через комментирование. В MODX Revolution есть несколько пакетов, предназначенных для организации вывода и создания комментариев. Самый распространенный и старый — «Quip». Альтернативы появились не так давно, но уже успели получить популярность среди разработчиков. Речь идет о «MODX Talks» и «Tickets».

Постараюсь осветить аспекты работы с «Quip», а затем напишу про собственные впечатления от альтернативных решений.

«Quip» — комментарии в MODX

Установка производится из репозитория в несколько кликов.

В шаблоне (или чанке), который планируется использовать для ресурсов с комментариями, прописываем 2 сниппета:

[[!Quip?
	&thread=`[[*alias]]-[[*id]]`
	&useGravatar=`0`
	&dateFormat=`%d %b %Yг. в %H:%M`
	&tplComment=`comment`
]]
[[!QuipReply? 
	&thread=`[[*alias]]-[[*id]]` 
	&moderate=`0` 
	&tplAddComment=`new-comment`
]]

Первый сниппет отвечает за вывод комментариев, второй за форму создания нового комментария. Рассмотрим параметры:

thread — важнейший параметр, должен представлять из себя уникальный идентификатор ресурса, к которому будет привязываться комментарий.

Многие делают ошибку, формируя этот идентификатор из названия ресурса (pagetitle). Этого не стоит делать по следующим причинам:

  • Quip не будет выводить комментарии к ресурсам, название которых содержит кавычки.
  • При смене названия ресурса все комментарии, связанные с ним, будут потеряны.
  • Вы можете нарваться на ошибку «quip.thread_err_nfs» при управлении темой в комментариях Quip MODX Revolution. Возникает она из-за использования кириллицы в уникальном идентификаторе «thread».

Чтобы избежать подобных проблем, я рекомендую формировать его из псевдонима (alias) и идентификатора ресурса (id).

useGravatar — 0, если не требуется выводить аватар пользователя и 1 — если требуется. Аватар берется с сайта gravatar.com. На этом сайте можно привязать к своему почтовому аккаунту маленькую картинку. В большинстве случаев, при оставлении комментария пользователь должен вводить свой e-mail. «Quip» проверяет, есть ли на сайте gravatar.com картинка, соответствующая e-mail'у комментатора. Если есть, то выводит её, а если нет — выводит аватар по умолчанию.

Проблема заключается в том, что мало кто привязывает аватарки к своим почтовым адресам через сервис Gravatar, поэтому я не вижу смысла использовать их.

dateFormat — здесь всё просто, формат выводимого времени, когда был оставлен комментарий. Расписывать его не буду.

tplComment — чанк, содержащий оформление выводимого комментария. Как он выглядит по умолчанию можете посмотреть по ссылке.

moderate — указывает, показывать ли оставленный комментарий сразу, или только после одобрения модератором (через адмику Quip).

tplAddComment — чанк для оформления формы ввода нового комментария. Его содержимое по умолчанию вы можете найти перейдя по ссылке.

У сниппетов так же много других параметров, о которых вы можете прочитать по приведенным ссылкам. Есть возможность создания капчи, разрешение комментирования только зарегистрированным пользователям и многие другие.

Вывод последних комментариев в «Quip»

Осуществляется вызовом сниппета:
[[!QuipLatestComments? 
    &tpl=`latestCommentTpl` 
    &limit=`3` 
]]
limit — указывает, сколько последних комментариев выводить; tpl — чанк оформления одного «последнего» комментария. Его содержимое представляет из себя плейсхолдеры, вывод которых оформляется с помощью html и CSS. Вот пример:
<a class="latest_comment_theme" href="[[+url]]"> [[+pagetitle]] </a> 
<div class="latest_comment_body"> [[+body:ellipsis=`55`]] </div> 

<div class="LastComment"> 
    <span class="latest_comment_author">[[+name]]</span> 
    <span class="latest_comment_ago">[[+createdon:strtotime:date=`%d %b %Yг. в %H:%M`]]</span>
</div>

В этом чанке выводится название ресурса с комментарием, текст комментария, урезанный до 55 символов, имя автора комментария и дата создания с форматом вывода.

Вывод количества комментариев «Quip»

Иногда требуется к описанию поста вывести количество комментариев. Чаще всего краткие описания делаются на главной странице. Тогда в шаблоне, отвечающем за формирование описания, прописываем сниппет:

[[!QuipCount? &thread=`[[+alias]]-[[+id]]`]]

«Quip» хороший и гибкий компонент, но есть у него и недостаток — замедляет генерацию страницы при большом количестве комментариев (более 50 на один ресурс). Если Ваш сайт часто комментируется, то стоит подумать об использовании альтернативных вариантов.

«MODX Talks» — красота из коробки

Что понравилось:
  • Прост в установке и настройке.
  • Работает на Ajax, благодаря чему, при оставлении комментария, страницы не перезагружаются полностью.
  • Современно и красиво выглядит уже из коробки.
Что не понравилось:
  • Сыроват, встречал баги при работе.
  • Внешний вид. Он красив, но в то же время выглядит как-то напыщено, по Джумловски.

Основной причиной моего отказа от этого инструмента для комментирования, стал баг, при котором после оставления комментария окно прокручивалось в самый конец, а не на оставленный только что комментарий. Скорее всего, это баг исправили, а может и возникал он только у меня. Тем не менее, к тому времени у меня уже стоял Quip и менять я его не стал.

«Tickets» — быстрота и надежность

Пакет «Tickets» включает в себя сниппет «TicketComments», который позволяет комментировать не только созданные тикеты, но и обычные ресурсы.

Что понравилось:
  • Работает на Ajax, благодаря чему, при комментировании страница не перезагружается полностью.
  • Гибко настраивается внешний вид.
  • Высокая скорость работы.
Что не понравилось:
  • Не поддерживает возможность оставления комментариев незарегистрированным пользователям.
  • Плохо документирован, поэтому потребуется повозится для подстройки под себя.

Компонент очень понравился, но в связи с тем, что я планировал дать возможность комментирования статей для всех пользователей, в том числе и не зарегистрированных, мой выбор пал на «Quip». Про комментирование статей при помощи компонента «Tickets» у меня есть отдельная статья — Компонент Tickets для MODX

«DISQUS» — сторонний сервис комментирования

Этот сервис используется в разных CMS для организации комментариев. Используют его чаще всего ленивые разработчики, которым влом разбираться с настройками существующих решений под CMS. Для использования DISQUS достаточно зарегистрироваться у них на сайте и получить код для вставки на своём сайте: disqus.com

Что понравилось:
  • Работает используя Ajax.
  • Просто в установке.
  • Неплохо выглядит.
Что не понравилось:
  • Внешний вид нельзя настроить под себя.
  • Комментарии хранятся отдельно от вашего сайта.
  • Дополнительная нагрузка на страницу, так как идет обращение к стороннему сервису.
Ещё интересное — 6
Комментарии —
  1. Alex Clampson
    Alex Clampson26 декабря 2014, 20:45#
    Обзор полезный, спасибо, однако стоило рассмотреть такие вещи как наличие/отсутствие премодерации и капчи, на мой взгляд полезные опции для таких компонентов
    1. Гость
      Гость06 февраля 2015, 12:16#
      Если не ошибаюсь, на этом сайте установлен Tickets и он не мешает оставлять комментарии незарегистрированным пользователям.
      1. Andy Si06 февраля 2015, 12:23(был изменён)#
        Да, так оно и есть. Просто когда статья писалась, компонент не позволял оставлять комментарии не авторизованным пользователям и у меня стоял Quip.
      2. Данила
        Данила09 августа 2015, 20:20#
        Здравствуйте автор, я хочу задать вам вопрос, возможно вы сталкивались с подобным, или же у всех так. Параметр &dateFormat=`%d %b %Yг. в %H:%M` в браузере отображается некорректно ��� 2015г. в 20:51. Я так понимаю нет месяца, с чем это может быть связанно. Заранее спасибо.((ps похоже на неверную кодировку, но остальная страница работает корректно.))
        1. Andy Si09 августа 2015, 21:02#
          Скорее всего какие-то проблемы с настройками даты/времени на хостинге или в самом движке. Например, временная зона в настройках движка не указана (Система и сервер). И ещё вариант попробовать заменить плейсхолдер, который выводит данную дату на
          [[+createdon:date=`%d %b %Yг. в %H:%M`]]
          1. Олег
            Олег03 мая 2017, 16:52#
            На самом деле делается это много проще: в настройках системы есть ключик под названием locale, ну соотственно для нужных контекстов просто задаем ru_RU.UTF8 или для английской версии сайта en_US.UTF8.
        2. Вадим
          Вадим11 сентября 2015, 20:37#
          Спасибо за статью. Попробую установить на одну из страниц.
          1. Вадим
            Вадим11 сентября 2015, 20:37#
            Спасибо
            1. Ден
              Ден07 января 2016, 08:40#
              Хорошая статья, недавно открыл для себя модх, сейчас активно изучаю, потребляю всю доступную информацию. хотя в голове еще каша, но уже многое начинает проясняться. читаю все статьи, одну за другой на этом сайте про модх, нравиться как автор понятно излагает материал.
              1. Andy Si07 января 2016, 21:50#
                Спасибо, стараюсь иногда писать.
              2. Виталий
                Виталий27 января 2016, 01:15#
                Здравствуйте, всё работает, дата в кириллице нормально, а вот сам текст комментария в виде ??????????,
                хотя в сообщение модератору приходит в нормальном виде.
                Подскажите, где искать проблему.
                1. Andy Si27 января 2016, 09:21#
                  Это в QUip? Видимо кодировка, но с такой проблемой не сталкивался, перешел на Tickets
                  1. Виталий
                    Виталий27 января 2016, 13:11#
                    Да, это Quip — MODX Revo 2.4.2
                    Не могу найти, где происходит смена кодировки для поля имени автора и для текста самого сообщения
                    1. Антон
                      Антон26 января 2017, 18:35#
                      тест
                  2. Марат Лопатин
                    Марат Лопатин03 июня 2016, 09:05#
                    еще раз тест, это тикетс?
                    1. Andy Si03 июня 2016, 13:50#
                      Это сниппет TicketComments входящий в состав пакета Tickets
                  3. Комментарий был удален.
                    1. Ника
                      Ника03 мая 2016, 17:09#
                      Здравствуйте. У меня слетает в Tickets :( Кириллица слетает в «Тексте комментария» и в «Авторе»?! Кириллица становится в виде ??????????! В сообщениях приходит в нормальном виде. Помогите, где копать?
                      1. Ника
                        Ника03 мая 2016, 17:11(был изменён)#
                        А слетает кириллица при перезагрузке страницы, то есть когда комментарий на клиенте — он нормальный, как только пишется на сервер — ????????.. Подскажите, где копать?
                        1. Andy Si04 мая 2016, 11:12#
                          Лучше на modx pro спросить, но судя по всему, неправильная кодировка у таблиц с комментариями в базе данных. То есть, когда добавляешь комментарий, то всё нормально потому что аяксом добавляется, не обращаясь к базе, а при перезагрузки страницы комментарии уже подгружаются из БД с неправильной кодировкой.
                        2. Ника
                          Ника04 мая 2016, 16:17#
                          Спасибо за быстрый ответ!
                          1. Комментарий был удален.
                            1. Зуля
                              Зуля26 сентября 2016, 23:21#
                              После установки Tickets, у меня слетел сайт. Pdoresources перестал работать. А в админке Управлении пакетами перестали отображаться установленные модули. Причину не поняла почему так.
                              1. Andy Si27 сентября 2016, 07:46#
                                Необходимо смотреть логи MODX. Установка Тикетов не могла повлиять на Управление пакетами, скорее всего какие-то проблемы в настройке хостинга.
                                1. Зуля
                                  Зуля27 сентября 2016, 09:40#
                                  Вы подскажите где смотреть логи Modx? У меня впс от adminvps. Такое даже не было с сайтом на друпал 7. Пришлось удалить модули Tickets и Jevix.
                                  1. Andy Si27 сентября 2016, 09:50#
                                    В верхнем меню Управление > Отчёты > Журнал ошибок. Но всё же проблема не в движке а в настройках веб сервера.
                              2. Зуля
                                Зуля27 сентября 2016, 15:42#
                                Посмотрела. Там много записей об ошибках.
                                Там примерно такие ошибки:
                                [2016-09-26 23:44:26] (ERROR @ /var/www/.../mysite/core/xpdo/om/xpdoobject.class.php : 240) Error HY000 executing statement: 
                                Array
                                (
                                    [0] => HY000
                                    [1] => 23
                                    [2] => Out of resources when opening file '/tmp/#sql_27a9_0.MYI' (Errcode: 24)
                                )
                                
                                [2016-09-27 00:12:15] (ERROR @ /var/www/.../mysite/core/xpdo/xpdo.class.php : 502) Path specified for package tickets is not a valid or accessible directory: /var/www/.../mysite/core/components/tickets/model/
                                [2016-09-27 00:12:16] (ERROR @ /var/www/.../mysite/core/xpdo/xpdo.class.php : 502) Path specified for package tickets is not a valid or accessible directory: /var/www/.../mysite/core/components/tickets/model/
                                [2016-09-27 00:12:17] (ERROR @ /var/www/.../mysite/core/xpdo/xpdo.class.php : 502) Path specified for package tickets is not a valid or accessible directory: /var/www/.../mysite/core/components/tickets/model/
                                [2016-09-27 01:05:21] (ERROR @ /var/www/.../mysite/core/xpdo/om/xpdoobject.class.php : 240) Error HY000 executing statement: 
                                Array
                                (
                                    [0] => HY000
                                    [1] => 23
                                    [2] => Out of resources when opening file '/tmp/#sql_27a9_0.MYI' (Errcode: 24)
                                )
                                
                                Не знаю что это означает, не поняла.
                                1. Andy Si27 сентября 2016, 16:30#
                                  Явно проблема на стороне хостинга. Пишите в тех. поддержку или просите системного администратора настроить его если у вас VDS
                                  1. Зуля
                                    Зуля27 сентября 2016, 16:32#
                                    Да, у меня впс. Под modx revo наверно есть свои требования к серверу? Спасибо.
                                2. Комментарий был удален.
                                  1. Комментарий был удален.
                                    1. Илья
                                      Илья11 мая 2017, 23:00#
                                      В мобильной версии кнопка «оставить комментарий» приклеивается к шапке сайта… как сделать чтобы этого не было?
                                      1. Andy Si12 мая 2017, 12:03#
                                        Проблемы с CSS стилями, вёрсткой. Смотреть в чём проблема и устранять.
                                        1. Илья
                                          Илья12 мая 2017, 15:26#
                                          Да нет, там яваскрипт делает чтото…
                                          1. Andy Si12 мая 2017, 15:43#
                                            Да я, если честно, вообще не понимаю про что ты. На каком сайте? Какой компонент там используется для комментариев? Очень много прчин может быть.
                                            1. Илья
                                              Илья12 мая 2017, 15:46#
                                              а, сорри, используется Modx Talks.
                                              Вот например здесь:
                                              http://yogadesc.ru/yoga-vrikshasana

                                              при прокручивании на маленьком мониторе вниз — кнопка «оставить комментарий» прилепляется к верху.
                                              1. Andy Si12 мая 2017, 16:10#
                                                Ну что за скрипт это делает и зачем мне лень искать. Могу предложить жёстко прописать CSS стиль:
                                                .mt_scrubberContent { position: relative !important; }
                                      2. Марина
                                        Марина28 августа 2017, 22:22#
                                        Здравствуйте! А если удалить &dateFormat=`%d %b %Yг. в %H:%M` в Параметрах настройки сниппета- будет ли работать Quip?
                                        1. Andy Si29 августа 2017, 17:26#
                                          Да, конечно будет.
                                          1. Марина
                                            Марина29 августа 2017, 17:47#
                                            Andrew, спасибо за ответ! Да, действительно — приложение работает, но вот дата всё-равно отображается в отзывах. Видимо, где-то нужно еще удалять этот параметр (только где?:))
                                            1. Andy Si30 августа 2017, 10:20#
                                              в параметрах сниппета лишь указывается формат даты, а сама она выводится в Чанке, который отвечает за вывод комментария — Quip.Quip.tplComment
                                        2. Aleksey
                                          Aleksey06 сентября 2017, 04:43#
                                          Здравствуйте! Подскажите пожалуйста установил Ticket, появилась форма отправки комментария, заполняю её нажимаю кнопку «опубликовать» перезагружается страница, а комментарий не появляется. В чем может быть причина? Спасибо!
                                          1. Andy Si07 сентября 2017, 16:11#
                                            Проверить, подключена ли библиотека jquery
                                            1. Aleksey
                                              Aleksey09 сентября 2017, 16:45#
                                              Да, подключена.
                                              1. Aleksey
                                                Aleksey09 сентября 2017, 16:48#
                                                Я даже форму не заполняю, нажимаю «опубликовать», страница просто перезагружается не выводя сообщения о ошибках.
                                                1. Andy Si10 сентября 2017, 12:58#
                                                  Явно проблема с javascript. Возможно какие-то сторонние скрипты конфликтуют из-за этого обработчик отправки не срабатывает. Это надо видеть сайт чтобы разобраться в чём дело.
                                                  1. Aleksey
                                                    Aleksey10 сентября 2017, 16:40#
                                                    Андрей! Спасибо Вам огромное, да и правда была проблема в скрипте jquery. Поскольку я не понимаю в javascript ни чего, ошибку не смог найти, я фаил jquery.js взял из другого шаблона и заменил на своем сайте и все встало на свои места. Еще раз спасибо Вам огромное, за то, что направили в нужно русло, а то так бы еще долго блуждал:)
                                            2. Вася пупкин
                                              Вася пупкин13 февраля 2018, 09:56#
                                              Вы сделали тикет коменты без регистрации?? ))))
                                              1. Andy Si13 февраля 2018, 10:13#
                                                Нет. Давно из коробки сделали, просто статью давно не обновлял :)
                                              2. Burzum
                                                Burzum26 ноября 2019, 15:16#
                                                Возможно ли в Quip выводить автоматически аватарки каким то рандомным способом?
                                                А то просто выглядит совсем не очень когда одинаковые тела там нарисованы под всеми комментариями…
                                                1. Andy Si26 ноября 2019, 17:17#
                                                  Либо свой сниппет встраивать в шаблон вывода, либо на js писать скрипт, который будет подменять случайным образом. Стандартных решений нет.
                                                2. noname
                                                  noname24 августа 2020, 17:25#
                                                  Возникают ошибки при установке (пробовал на нескольки разных сайтах)
                                                  Можете помочь?
                                                  Error adding field quipComment->name: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'name' )
                                                  Error adding field quipComment->email: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'email' )
                                                  Error adding field quipComment->website: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'website' )
                                                  Error adding field quipComment->resource: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'resource' )
                                                  Error adding field quipComment->idprefix: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'idprefix' )
                                                  Error adding field quipComment->existing_params: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'existing_params' )
                                                  Error adding index resource to quipComment: Array ( [0] => 42000 [1] => 1061 [2] => Duplicate key name 'resource' )
                                                  Error adding field quipComment->ip: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'ip' )
                                                  Error adding field quipComment->rank: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'rank' )
                                                  Error adding field quipComment->approvedby: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'approvedby' )
                                                  Error adding field quipComment->deleted: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'deleted' )
                                                  Error adding field quipComment->deletedon: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'deletedon' )
                                                  Error adding field quipComment->deletedby: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'deletedby' )
                                                  Error adding index approvedby to quipComment: Array ( [0] => 42000 [1] => 1061 [2] => Duplicate key name 'approvedby' )
                                                  Error adding index deleted to quipComment: Array ( [0] => 42000 [1] => 1061 [2] => Duplicate key name 'deleted' )
                                                  Error adding index deletedby to quipComment: Array ( [0] => 42000 [1] => 1061 [2] => Duplicate key name 'deletedby' )
                                                  Error adding field quipThread->quip_call_params: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'quip_call_params' )
                                                  Error adding field quipThread->quipreply_call_params: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'quipreply_call_params' )
                                                  Could not load class: quipNotifyComment from mysql.quipnotifycomment.
                                                  Could not load class: quipNotifyComment from mysql.quipnotifycomment.
                                                  1. Andy Si24 августа 2020, 17:46#
                                                    Quip морально устарел, советую ставить комментарии из Tickets.
                                                    А так ошибки говорят о том, что либо на сайт уже ставился Quip, либо какие-то ошибки в самом инсталляторе.
                                                  2. Alex
                                                    Alex12 декабря 2021, 10:14#
                                                    Привет
                                                    © REALADMIN.RU   2024 г.
                                                    Страница сгенерирована: 0,2092 s | 6 mb.
                                                    На каком уровне Вы играете в шахматы?
                                                    OPROS