Компонент Tickets в MODX для реализации комментариев
Есть замечательный компонент для CMS MODX Revolution — «Tickets». Написал его наш соотечественник «bezumkin», за что ему большой респект. Компонент может быть использован как альтернатива «Quip», для комментирования статей. Точное его описание и видео с быстрым стартом вы можете найти на официальной страничке компонента.
Опишу некоторые моменты установки и настройки компонента Tickets для использования комментирования статей. Создание тикетов при помощи компонента опущу.
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 и его альтернативы.
С недавнего времени в компоненте появилась возможность комментирования без авторизации. Для этого в последней версии компонента следует указать параметр «allowGuest» равным 1.
[[!TicketComments? &allowGuest=`1`]]
В чанке tpl.Tickets.comment.form.guest пришлось добавить в label for=«comment-email» — class=«myLabelWidth». Что бы поле с емейлом ровно под полем с автором стояло.
В моём случае уникальный идентификатор состоит из resource и id документа, в которой отображается коммент. По умолчанию именно так. Поэтому в качестве параметра сниппету я передаю id документа, а он уже подставляет его в TicketThread. Если у тебя ветка комментов привязывается не к id документа, а ещё к чему-то, то работать не будет, надо переписывать сниппет.
у Вас капча 9+2…
[[!TicketComments@NaborTicket? &limit=`20`]]
[[!HybridAuth?
&providers=`Yandex,Google,Facebook,Vkontakte`
]]
потом залажу в Компоненты->Тикеты, а там во вкладке «Комментарии» — пусто, во вкладке «Ветви комментариев» —
имя ветки | создана | комментарий | тикет |
resource-91 | 13.05.15 19:51 | 0 | тест2 |
тоесть сниппет не берет данные с поля комментария,
доступы группе Users поставил как тут в статье
может быть по скайпу поможете, я просто туплю похоже(((
В консоли:
TypeError: $(...).ajaxSubmit is not a function
ссылается на файл default.js
Может сталкивались с такой задачей — на главную страницу надо вывести 3 последних отзыва, а на внутреннюю страницу «Все отзывы» — соответственно все имеющиеся отзывы.
Подстроил «под себя», при добавлении отзыва получаю всплывающую ошибку «Указана неверная ветвь комментариев.»
На главной вызываю так: [[!TicketComments@NaborTicket? &limit=`3`]]
Хотя мне кажется что-то здесь не так.
Саму форму отредактировал, подставил нужные поля, но нужен свой сниппет, который выберет и выведет данные в нужном виде из селектбокса с вариантами. Спасибо
Спасибо вам за блог и полезные статьи.
Может быть вы знаете: почему то на моем сайте, когда я нажимаю кнопку ответить (под комментарием) то появляется целых две формы ответа, а если при этом еще раз нажать кнопку ответить на другом комментарии, то форм становится уже целых четыре и идут они одна за другой.
В общем каждый раз нажимая кнопку ответить я получаю две дополнительные формы, независимо от того авторизован я на сайте или нет.
Я уже пробовал полностью удалять Tikets, пробовал заходить с разных браузеров, все равно формы ответа размножаются :((. С чем это может быть связанно?
Спасибо.
jQuery подключен так:
И еще:
— каждый первый ввод капчи считает ошибочным
— так же пробовал подключать премодерацию, не работает
— емайлы тоже не отправляет когда пишешь ответы
Просто печаль какая то :(((.
Ни один из советов не помог, но благодаря тебе я получил верное направление мысли, перелопатил весь код и оказалось, что я сам продублировал вызов, когда делал отдельные чанки для десктопной и мобильной версии сайта. Из за этого размножались формы и не работал весь вышеперечисленный функционал компонента Tickets.
Сейчас я полностью переписал код с ошибками и сделал правильно — теперь все работает прекрасно и формы, и премодерация, и капча и уведомления об ответах.
Еще раз благодарю за полезные советы Андрей! :))
Твои статьи реально помогают, особенно таким людям как я, потому что я ни сколько не программист и осваиваю MODX как раз по таким авторским мануалам.
Размести в аналогичной папке и установи через Управление пакетами. Пункт — Искать пакеты локально
Комментарии ограничиваются параметром limit, картинки в комментарий не вставлял никогда.
А есть возможность в обратном порядке отобразить комментарии?
и ничего не отображается где искать ошыбку?
подскажите, где копать?
Оключал все плагины — тоже самое.
jquery-3.1.1.min.js
всё же дали правильное направление
Спасибо.
Настройки для гостей, все по умолчанию, ничего не менял в чанках, ошибок в консоли нет, прям печаль беда :((( Из за этого глюка не возможно использовать.
Вот вызов [[!TicketComments? &allowGuest=`1`]]
Все снипеты Jevix и тд установлены, сайт на TIMEWEB на поддомене, версия php 5.6, MODX REVO версия 2.5.2.
Что за глюк, с чем может быть связанно? Подскажите куда копать пожалуйста, всю голову изломал с этим.
И кстати у вас тоже есть момент этого глюка, по крайней мере у меня, когда написал этот комментарий, вместо моего имени автора, было ваше «Simkin Andrew»? обновил страницу стало мое.
С именем разобрался, вместо [[+fullname]] написал [[+name]] и баг с именем админа ушел.
и готово.
Прописал (в настройках компонента ничего не менял). Появилась на страницах форма комментария. Пишу комментарии и… они не появляются. Впрочем, в админке Tickets в списке комментов они вроде есть, но пустые.
Ладно. Перерыл интернет в поисках толкового мануала, где подробно, шаг за шагом бы объяснялось, как установить, как настроить… не нашел. Прочитал на некоем ресурсе, будто Tickets 1.6.16-pl плохой, у многих не работает.
Ладно, скачал у самого автора в репрозории последнюю версию Tickets 1.7.5-pl, установил.
Результат такой же.
Прочел на другом ресурсе инета, что на Modx Revo 2.5.1-pl у людей Тикет не пашет, а на 2.4.2 пашет. Установил Modx Revo 2.4.2-pl и накатил на него тот же Tickets 1.7.5-pl.
Однофигственно.
Так и не понял, в чем загвоздка. Может, в настройках что-то дописывать надо или где-то пути (например, к jquery) указывать?
Попробуй подключить на странице самостоятельно библиотеку jquery версии 2 или 3.
и… появились кнопки форматирования и заработало :)
Спасибо за подсказку! Будем дальше тестить…
Вот он: http://realadmin.ru/assets/templates/main/style/test.css
В настройках нашел параметр «Максимальный размер текста без сut» — стояло ограничение 1000 — подумал в этом проблема. Изменил на значение 5000. Но при редактировании обрезанного комментария все равно сохраняется и выводится на сайте обрезанная версия. Причем обрезается в старом месте. При повторном редактировании комментария в админке отображается опять урезанная версия комментария. Уже и кэш сбрасывал и страницу с выводом комментариев пересохранял… Как вывести длинный комментарий полностью, чтобы он не обрезался ни в админке, ни на сайте?
Не могли бы вы помочь с Tickets, возможно не бесплатно? Хочу сделать страничку для отзывов пока на тестовом сайте на основе тикетс http://kids-don.ru/otzyvy (ссылочку удалите, если нужно). Установил их на сайт. Форма на странице появилась. Пишу тестовые отзывы, нажимаю на предварительный просмотр — все хорошо. Но при публикации (отправке) комментария сам комментарий из формы пропадает, при этом визуально не понятно, все ли прошло хорошо, отправился ли комментарий. При этом уведомления на почту о новом комментарии приходят и сам отзыв все же публикуется (он становится виден при обновлении страницы). Заметил, что при отправке отзыва в консоли браузера возникает ошибка в скриптах (думал какие-то конфликты). Пробовал подключать разные версии jquery, отключал в шаблоне дополнительно подключенные скрипты шаблона — ошибка не пропадает…
Уже не знаю, куда копать. Уже начинаю грешить на тикетс, хотя думаю, что подобную ошибку давно бы заметили и уже пофиксили )
Спасибо