Компонент Tickets в MODX для реализации комментариев
Есть замечательный компонент для CMS MODX Revolution — «Tickets». Написал его наш соотечественник «bezumkin», за что ему большой респект. Компонент может быть использован как альтернатива «Quip», для комментирования статей. Точное его описание и видео с быстрым стартом вы можете найти на официальной страничке компонента:
Компонент Tickets - https://docs.modx.pro/components/tickets/
Я опишу лишь некоторые моменты установки и настройки компонента Tickets версии 1.0.0 для использования только комментирования статей. Создание тикетов при помощи компонента я опущу.
1. Устанавливаем компонент Tickets.
Оставлять комментарии при помощи Tickets могут только зарегистрированные пользователи, которые находятся в группе с определенными правами.
2. Создаем группу «Users» (можно и по другому назвать), пользователи которой смогут оставлять комментарии:
В меню заходим «Безопасность > Контроль доступа».
Создаем новую группу. Задаем ей имя (например «Users»). Политика бэкенда — «TicketUserPolicy».
После создания группы переходим к её редактированию (ПКМ>Редактировать).
Открываем вкладку — «Доступ к контекстам»
Редактируем контекст web (ПКМ > Редактировать)
Устанавливаем политику доступа — «TicketUserPolicy»
Группу создали, права дали. Дальше необходимо этих пользователей откуда-то взять. У меня на сайте отсутствовала регистрация и напрягать ей пользователей я не хотел, поэтому воспользовался компонентом «Loginza».
3. Устанавливаем компонент Loginza и вызываем его в нужном месте:
[[!Loginza? &groups=`Users`]]
Теперь пользователи, которые будут авторизоваться на вашем сайте через социальные сети при первом входе автоматически регистрируются в группе «Users» и получают возможность оставлять комментарии.
4. Добавляем в шаблон статей сниппет комментирования:
[[!TicketComments]]
Сниппет можно использовать без параметров, но лучше ознакомиться с ними, а так же с используемыми чанками.
Параметры сниппета TicketComments
thread — имя ветки комментариев.
по умолчанию recource-[[*id]]
fastMode — если включено, в чанк результата будут подставлены только значения из БД. Все необработанные теги MODX, такие как фильтры, вызов сниппетов и другие — будут вырезаны.
по умолчанию Да (Нет)
gravatarIcon — если аватарка пользователя не найдена грузить эту картинку на замену.
по умолчанию mm
gravatarSize — размер загружаемого аватара.
по умолчанию 24
gravatarUrl — адрес для загрузки аватаров.
по умолчанию http://www.gravatar.com/avatar/
tplCommentForm — чанк для формы добавления нового комментария.
по умолчанию tpl.Tickets.comment.form
tplCommentAuth — чанк комментария для показа авторизованному пользователю.
по умолчанию tpl.Tickets.comment.one.auth
tplCommentGuest — чанк комментария для показа гостям.
по умолчанию tpl.Tickets.comment.one.guest
tplCommentDeleted — чанк удаленного комментария.
по умолчанию tpl.Tickets.comment.one.deleted
tplComments — обертка для всех комментариев страницы.
по умолчанию tpl.Tickets.comment.wrapper
tplLoginToComment — чанк с требованием авторизоваться.
по умолчанию tpl.Tickets.comment.login
tplCommentEmailOwner — чанк для уведомления владельца тикета о новом комментарии.
по умолчанию tpl.Tickets.comment.email.owner
tplCommentEmailReplay — чанк для уведомления пользователя о том, что на его комментарий появился ответ.
по умолчанию tpl.Tickets.comment.email.replay
autoPublish — автоматически публиковать все новые комментарии, без премодерации.
по умолчанию Да (Нет)
formBefore — расположить форму комментирования перед комментариями.
по умолчанию Нет (Да)
depth — Целое число, для указания максимальной глубины ветки комментариев.
по умолчанию 0
5. Подстраиваем под себя чанки
Я редактировал в основном только 2 чанка — «tpl.Tickets.comment.one.auth» и «tpl.Tickets.comment.one.guest», которые отвечают за показ комментариев авторизованному пользователю и не авторизованному.
Некоторое время я потратил на то, чтобы понять как отображать аватар пользователя, выполнившего вход через социальную сеть. По умолчанию компонент искал аватарку пользователя с сайта www.gravatar.com и, не находя её там, подставлял серенького человечка. Решение оказалось простым — в вышеприведенных чанках достаточно изменить плейсхолдер «[[+avatar]]» на «[[+photo]]»
После этого всё встало на свои места и осталось только радоваться работе компонента Tickets.
Про другие варианты создания комментариев в MODX Revolution можете почитать здесь: Комментарии в MODX Revolution. Quip и его альтернативы - http://realadmin.ru/saytostroy/comments-in-modx-revo.html
С недавнего времени в компоненте появилась возможность комментирования без авторизации. Для этого в последней версии компонента следует указать параметр «allowGuest» равным 1.
[[!TicketComments? &allowGuest=`1`]]