Modx revo tickets настройка – Tickets в modx revo, как решить проблему? почему не работает форма комментариев? — Хабр Q&A

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

Компонент 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`]]

MODX Revo — Настройка прав пользователей для Tickets.

MODX Revo - Настройка прав пользователей для TicketsMODX Revo

Автор Алексей На чтение 1 мин. Опубликовано

Последнее изменение поста: 24 октября 2018 в 10:35

Для того чтобы компонент Tickets правильно функционировал и его можно было использовать по полной, необходимо что бы все авторизованные пользователи находились в общей группе со специальными правами.

Создание группы пользователя

Шестеренка -> Контроль доступа -> Новая группа пользователей

  • Название — Member
  • Политика бэкэнда — (нет политики)

И сохраняем.

Создание группы member

Настройка прав доступа

После сохранения данная группа появиться слева, нажимаем по ней ПКМ и выбираем редактировать.

Редактировать группу member

На вкладке Права доступа — Доступ к контекстам, нажмите Добавить контекст

  • Контекст — Web
  • Минимальная роль — Member — 9999
  • Политика доступа — TicketUserPolicy

Добавляем контекст в группу member

Все, теперь можно к примеру разрешать комментирование только авторизованным пользователям, для этого вы можете воспользоваться любым компонентом авторизации, например HybridAuth.

Tickets / Пользователи / Дополнения MODX / modstore.pro

Версия 1.11.2-pl

Дата выпуска 19.09.2019

Просмотры 29 384

Внимание, этот компонент требует версию PHP

5.3 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.

Внимание, этот компонент требует версию MODX не ниже 2.3 !

Основные возможности MODX Tickets


  • Создание особых разделов для тикетов в админке, со своим интерфейсом.
  • Создание тикетов в админке, тоже со своими панелями и табами.
  • Создание страниц с фронтенда.
  • Редактирование страниц с фронтенда, с проверкой прав.
  • Чумовые ajax-комментарии.
  • Редактирование\удаление комментариев с админки.
  • Права доступа на добавление страниц в раздел и создание комментариев.
  • Собственное кэширование тикетов.
  • Принудительная фильтрация тикетов при выводе на экран Jevix.
  • Автоматическая установка и настройка Jevix при инсталляции пакета. 2 набора параметров, раздельно для тикетов и комментариев.
  • Удобный редактор MarkItUp для тикетов и комментариев.
  • Почтовые уведомления о комментариях автору тикета, и тем, кому ответили на его комментарий.
  • Вывод последних комментариев и тикетов, с разбивкой по разделам и возможностью кэширования.
  • Все нужные чанки оформления, прописанные параметры у сниппетов, 2 языка — русский и английский.

TicketComments / Сниппеты / Tickets / docs.modx.pro

&allowGuest0Включить возможность комментирования для неавторизованных пользователей?
&allowGuestEdit1Разрешать неавторизованным пользователям редактировать свои комментарии?
&allowGuestEmails0Отправлять гостям почтовые уведомления об ответах?
&autoPublish1Автоматически публиковать все новые комментарии, без премодерации.
&autoPublishGuest1Автоматически публиковать все новые комментарии неавторизованных пользователей, без премодерации.
&depth0Целое число, для указания максимальной глубины ветки комментариев.
&enableCaptcha1Включить защиту от спама для неавторизованных пользователей?
&fastMode1Если включено — в чанк результата будут подставлены только значения из БД. Все необработанные теги MODX, такие как фильтры, вызов сниппетов и другие — будут вырезаны.
&formBefore0Расположить форму комментирования перед комментариями. По умолчанию — нет.
&toPlaceholderНе выводить результат работы сниппета, а поместить в плейсхолдер toPlaceholder
&separatePlaceholder0При параметре 1 вывести форму и комментарии в плейсхолдеры toPlaceholder_form, toPlaceholder_thread.
&gravatarIconmmЕсли аватарка пользователя не найдена, грузить эту картинку на замену.
&gravatarSize24Размер загружаемого аватара
&gravatarUrlhttp://www.gravatar.com/avatar/Адрес для загрузки аватаров
&maxCaptcha10Максимальное число для генерации кода защиты от спама.
&minCaptcha1Минимальное число для генерации кода защиты от спама.
&threadИмя ветки комментариев. По умолчанию, «resource-[[*id]]».
&tplCommentAuthtpl.Tickets.comment.one.authЧанк комментария для показа авторизованному пользователю.
&tplCommentDeletedtpl.Tickets.comment.one.deletedЧанк удалённого комментария.
&tplCommentEmailBcctpl.Tickets.comment.email.bccЧанк для уведомления админов сайта о новом комментарии.
&tplCommentEmailOwnertpl.Tickets.comment.email.ownerЧанк для уведомления владельца тикета о новом комментарии.
&tplCommentEmailReplytpl.Tickets.comment.email.replyЧанк для уведомления пользователя о том, что на его комментарий появился ответ.
&tplCommentEmailSubscriptiontpl.Tickets.comment.email.subscriptionЧанк для уведомления подписанного пользователя, что в теме появился новый комментарий.
&tplCommentFormtpl.Tickets.comment.formЧанк для формы добавления нового комментария.
&tplCommentFormGuesttpl.Tickets.comment.form.guestЧанк для формы добавления нового комментария гостям.
&tplCommentGuesttpl.Tickets.comment.one.guestЧанк комментария для показа гостям.
&tplCommentstpl.Tickets.comment.wrapperЧанк обертка для всех комментариев страницы.
&tplLoginToCommenttpl.Tickets.comment.loginЧанк с требованием авторизоваться.

Создание блога на MODX Revo при помощи Tickets

Автор Алексей На чтение 5 мин. Опубликовано

Последнее изменение поста: 22 октября 2018 в 20:38

Для того чтобы создать полноценный блог на MODX нам как минимум понадобятся следующие пакеты: PdoTools, Tickets, DateAgo и hybridauth (последнее не обязательно, но желательно чтобы комментировать могли только авторизованные пользователи), установите их если они еще не установлены, так же рекомендую установить основные пакеты.

Создание ресурсов блога

Перед тем как создавать ресурсы, нам нужно подготовить 2 шаблона, 1й для категорий, 2й для записей, про работу с шаблонами писал здесь, углубляться в верстку не буду.

Буду считать что 2 шаблона вы подготовили.

Создание раздела блога и постов

Открываем вкладку «Ресурсы» (находится в левой панели), щелкаем по «Website» правой кнопкой мыши (или папке с любой вложенностью) и выбираем Создать -> Раздел с тикетами и заполняем поля: как минимум Заголовок (например блог) и Шаблон (для категории) и переходим в Настройки.

Создание разделас тикетами

Во вкладке Основные, убираем галку Использовать HTML-редактор.

Отключаем html редактор

На вкладке Дочерние тикеты: указываем шаблон для тикетов, в Формирование URI указываем %alias и сохраняем, так же рекомендую отключить jelyx и разрешить выполнение тегов (если с фронт энда пользователи ни могут не чего писать).

Настройка дочерних тикетов

Снова идем в настройки раздела — основные и вставляем вот такую базовую конструкцию (HTML редактор должен быть отключен)

[[!pdoPage? &element=`getTickets`]] [[!+page.nav]]

и сохраняем.

вставляем базовый вывод тикета

Создание нескольких статей в блоге

Открываем созданный ранее раздел — «Блог» и выполняем следующее действия:

На вкладке «Раздел», нажимаем на кнопку «Создать тикет» чтобы создать стать;
Заполняете все основные поля и опубликуйте

создание поста

Точно таким же образом создайте еще пару статей

 

Далее если вы сделали шаблоны правильно, то перейдя на на страницу блога увидите

вывод статей

Выводиться все содержимое и это не есть хорошо, давайте это исправим, для этого сделаем копию чанка tpl.Tickets.list.row и назовем ее tpl.Tickets.list.row.custom, откроем его допишем к значению [[+introtext]] модификатор эллипсис :

 [[+introtext:ellipsis=`330`]]

Он будет обрезать текст, так же к примеру здесь используется шрифт глипсон которого у меня нет, поэтому я перепишу его под фонт авесоме, в итоге у меня получилось:

<div>
    <h4><a href="[[~[[+id]]]]">[[+pagetitle]]</a></h4>
    <div>
        [[+introtext:ellipsis=`330`]]<br/>
        <a href="[[~[[+id]]]]">[[%ticket_read_more]]</a>
    </div>
    <div data-id="[[+id]]">
        <span>
            <i></i> [[+date_ago]]
        </span>
        <span>
            <i></i> [[+fullname]]
        </span>
        <span><i></i> <a href="[[~[[+section.id]]]]">[[+section.pagetitle]]</a></span>
        <span>
            <span>[[+stared]][[+unstared]] <span
                       >[[+stars]]</span></span>
            &nbsp;&nbsp;
            <i></i> [[+views]]
            &nbsp;&nbsp;
            <i></i> [[+comments]]  [[+new_comments]]
        </span>
        <span>
            <span title="[[%ticket_like]]"><i></i></span>
            [[+can_vote]][[+cant_vote]]
            <span title="[[%ticket_dislike]]"><i></i>
        </span>
    </div>
</div>
<!--tickets_can_vote <span title="[[%ticket_refrain]]"><i></i></span>-->
<!--tickets_cant_vote <span title="[[%ticket_rating_total]] [[+rating_total]]: ↑[[+rating_plus]] [[%ticket_rating_and]] ↓[[+rating_minus]]">[[+rating]]</span>-->
<!--tickets_new_comments <span>+[[+new_comments]]</span>-->
<!--tickets_active  active-->
<!--tickets_inactive  inactive-->
<!--tickets_voted_plus  voted-->
<!--tickets_voted_minus  voted-->
<!--tickets_rating_positive  positive-->
<!--tickets_rating_negative  negative-->
<!--tickets_can_star  active-->
<!--tickets_stared <i></i>-->
<!--tickets_unstared <i></i>-->

Теперь укажем в выводе новый чанк

[[!pdoPage? &element=`getTickets`&tpl=`tpl.Tickets.list.row.custom`]] [[!+page.nav]]

После сохранения получим.

Новый вывод статей

Уже норм, а если перейти на статью

вывод статьи

Пока не очень красиво все (если вы используете стандартный bootstrap3 шаблон, будут иконки по умолчанию), но в следующих уроках мы это исправим. И начнем пожалуй с вывода мета информации о статье внутри нее.

Tickets. Комментарии и публикации из фронт энда

Отредактировано: 24 Декабря 2018

Tickets — компонент включающий в себя функционал комментариев, возможность голосовать за страницу и комментарии, возможность добавления страниц из фронт-энда и некоторые другие функции. 

Для того, чтобы пользователи могли оставлять записи или комментарии, они должны обладать соответствующими правами. При установке, Tickets создает следующие политики доступа:

  • TicketSectionPolicy — разрешение для создания новых тикетов в разделе;
  • TicketUserPolicy — разрешение на управление возможностями Tickets, добавление, удаление, чтение и т.п.;
  • TicketVipPolicy — тоже самое что TicketUserPolicy, но с воможностью просматривать приватные Тикеты.

Сам компонент состоит из нескольких сниппетов, каждый из которых отвечает за определенные действия.

Публикация из фронт-энда


[[!TicketForm?
&allowedFields=`parent,pagetitle,content,published,image`
&requiredFields=`parent,pagetitle,content`
&tplFormCreate=`shareForm`
&redirectUnpublished=`31`
]]

Ресурсы Tickets находятся в той же таблице SQL что и остальные ресурсы &mdash;&nbsp;prefix_site_content. Несмотря на то, что в админке нет возможности сделать из тикета обычный ресурс, это можно сделать с помощью SQL запросов.

Показ пользователю опубликованных им же ресурсов 


[[!getTickets?
	&user=`[[!+modx.user.id]]`
	&showUnpublished=`1`
	&parents=`21`
	&includeTVs=`tags,image,slider,year,view,like`
	&tpl=`getArticle`
]]

Вставка файлов в Tickets — плейсхолдер [[+files]]

Можно добавлять файлы при помощи 

Файлы загружаются сразу при добавлении и сохраняются в таблицу TicketFile.

Параметры сниппета TicketForm для испоьзования файлов:

  • allowFiles — Разрешить загрузку файлов? Если да — то подключится загрузчик и нужные скрипты.
  • source — Источник медиа-файлов, в который будут сохранены изображения. По умолчанию берется системны настройка tickets.source_default, в которую прописывается источник Tickets Files.
  • tplFiles — Чанк-обертка всего блока работы с файлами. Загружчик, список файлов и прогрессбар.
  • tplFile — Чанк оформление файла, который не является изображением.
  • tplImage — Чанк офомрления картинок.

Выводом файлов занимается снипет TicketMeta, но также можно использовать pdoResources, добавив к вызову параметры &class=`TicketFile` &sortby=`createdon`
&sortdir=`ASC`
. Если не указать сортировку, сниппет попытается сортировать по колонке publishedon, которая у TicketFile отсутствует.

Голосование и прочее meta


[[!TicketMeta]]

TicketMeta позволяет голосовать, сохранять ресурсы в избранное,

Избранное сохраняется в таблицу TicketStar, где пишется имя класса (Ticket или TicketComment), id объекта, id его автора и дата.

Добавление\удаление избранного работает через процессоры, которые требуют прав: ticket_star и comment_star.

Параметры сниппета TicketMeta для вывода файлов:

  • getFiles — Выводить список загруженных файлов?
  • tplFile — Чанк оформления сслыки на файл.
  • unusedFiles — Выводить только файлы, неиспользованные в контенте документа.

Обертка для вывода файлов прописана в чанке tpl.Tickets.meta, в быстром плейсхолдере has_files.

Комментарии

Построение дерева комментариев


[[!TicketComments]]

Для вывода списка комментариев


[[getComments]]

Параметры сниппета getComments

  • parents — выбор родительского раздела комментариев;
  • resources — выбор родительского ресурса комментариев;
  • threads — выбор ветки;
  • comments — id комментариев.

Избранное

Для вывода избранных тикетов можно использовать:


[[!pdoPage? 
&element=`getTickets` 
&sortby=`{"star_createdon":"DESC"}` 
&groupby=`star_id HAVING star_id IS NOT NULL AND star_user = [[!+modx.user.id]]`
]]

Для вывода избранных тикетов и комментариев можно использовать:


[[getStars]]
  • class — указывается Ticket или TicketComment.

Выберет id избранного и передаст в getTickets или getComments. Если не указан параметр &user, то будет показано избранное текущего пользователя.

Документации

getTickets

getTickets

03 мая 2019, 07:00

Выводит список созданных тикетов. *Сниппет вызывается не кэшированным.

Параметры

НазваниеПо умолчаниюОписание
&depth10Глубина поиска ресурсов от каждого родителя.
&fastMode0Если включено — в чанк результата будут подставлены только значения из БД. Все необработанные теги MODX, такие как фильтры, вызов сниппетов и другие — будут вырезаны.
&includeContent0Выбирать поле «content» у ресурсов.
&includeTVsСписок ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+action]] и [[+time]].
&limit10Лимит выборки результатов
&offset0Пропуск результатов с начала выборки
&outputSeparatorНеобязательная строка для разделения результатов работы.
&parentsСписок категорий, через запятую, для поиска результатов. По умолчанию выборка ограничена текущим родителем. Если поставить 0 — выборка не ограничивается.
&resourcesСписок ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с минуса, этот ресурс исключается из выборки.
**&showDeleted0Показывать удалённые ресурсы.
&showHidden1Показывать ресурсы, скрытые в меню.
&showLog0Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте «mgr».
&showUnpublished0Показывать неопубликованные ресурсы.
&sortbycreatedonСортировка выборки.
&sortdirDESCНаправление сортировки
&toPlaceholderЕсли не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
&tpltpl.Tickets.list.rowЧанк оформления для каждого результата
&tvPrefixПрефикс для ТВ плейсхолдеров, например «tv.». По умолчанию параметр пуст.
&userВыбрать только элементы, созданные этим пользователем.
&whereСтрока, закодированная в JSON, с дополнительными условиями выборки.

*Список может быть расширен общими параметрами pdoTools так как Tickets работает на этой библиотеке.

Примеры

Стандартный вызов.

[[!pdoPage?
    &element=`getTickets`
]]

[[!+page.nav]]

getTicketsSections

getTicketsSections

03 мая 2019, 07:00

Выводит список секций с тикетами. *Сниппет вызывается не кэшированным.

Параметры

НазваниеПо умолчаниюОписание
&depth0Глубина поиска ресурсов от каждого родителя.
&fastMode0Если включено — в чанк результата будут подставлены только значения из БД. Все необработанные теги MODX, такие как фильтры, вызов сниппетов и другие — будут вырезаны.
&includeContent0Выбирать поле «content» у ресурсов.
&includeTVsСписок ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+action]] и [[+time]].
&limit10Лимит выборки результатов
&offset0Пропуск результатов с начала выборки
&outputSeparatorНеобязательная строка для разделения результатов работы.
&parentsСписок категорий, через запятую, для поиска результатов. По умолчанию выборка ограничена текущим родителем. Если поставить 0 — выборка не ограничивается.
&resourcesСписок ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с минуса, этот ресурс исключается из выборки.
&showDeleted0Показывать удалённые ресурсы.
&showHidden0Показывать ресурсы, скрытые в меню.
&showLog0Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте «mgr».
&showUnpublished0Показывать неопубликованные ресурсы.
&sortbyviewsСортировка выборки.
&sortdirDESCНаправление сортировки
&toPlaceholderЕсли не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
&tpltpl.Tickets.sections.rowЧанк оформления для каждого результата
&tvPrefixПрефикс для ТВ плейсхолдеров, например «tv.». По умолчанию параметр пуст.
&whereСтрока, закодированная в JSON, с дополнительными условиями выборки.

*Список может быть расширен общими параметрами pdoTools так как Tickets работает на этой библиотеке.

Примеры

Простой вызов.

[[!getTicketsSections?]]

TicketComments

TicketComments

24 августа 2019, 07:00

Выводит комментарии и форму для ко мментирования ресурса. *Может использоваться с любым документом MODX *Сниппет вызывается не кэшированным.

Параметры вызова сниппета

НазваниеПо умолчаниюОписание
&allowGuest0Включить возможность комментирования для неавторизованных пользователей?
&allowGuestEdit1Разрешать неавторизованным пользователям редактировать свои комментарии?
&allowGuestEmails0Отправлять гостям почтовые уведомления об ответах?
&autoPublish1Автоматически публиковать все новые комментарии, без премодерации.
&autoPublishGuest1Автоматически публиковать все новые комментарии неавторизованных пользователей, без премодерации.
&depth0Целое число, для указания максимальной глубины ветки комментариев.
&enableCaptcha1Включить защиту от спама для неавторизованных пользователей?
&fastMode1Если включено — в чанк результата будут подставлены только значения из БД. Все необработанные теги MODX, такие как фильтры, вызов сниппетов и другие — будут вырезаны.
&formBefore0Расположить форму комментирования перед комментариями. По умолчанию — нет.
&toPlaceholderНе выводить результат работы сниппета, а поместить в плейсхолдер toPlaceholder
&separatePlaceholder0При параметре 1 вывести форму и комментарии в плейсхолдеры toPlaceholder_form, toPlaceholder_thread.
&gravatarIconmmЕсли аватарка пользователя не найдена, грузить эту картинку на замену.
&gravatarSize24Размер загружаемого аватара
&gravatarUrlhttp://www.gravatar.com/avatar/Адрес для загрузки аватаров
&maxCaptcha10Максимальное число для генерации кода защиты от спама.
&minCaptcha1Минимальное число для генерации кода защиты от спама.
&threadИмя ветки комментариев. По умолчанию, «resource-[[*id]]».
&tplCommentAuthtpl.Tickets.comment.one.authЧанк комментария для показа авторизованному пользователю.
&tplCommentDeletedtpl.Tickets.comment.one.deletedЧанк удалённого комментария.
&tplCommentEmailBcctpl.Tickets.comment.email.bccЧанк для уведомления админов сайта о новом комментарии.
&tplCommentEmailOwnertpl.Tickets.comment.email.ownerЧанк для уведомления владельца тикета о новом комментарии.
&tplCommentEmailReplytpl.Tickets.comment.email.replyЧанк для уведомления пользователя о том, что на его комментарий появился ответ.
&tplCommentEmailSubscriptiontpl.Tickets.comment.email.subscriptionЧанк для уведомления подписанного пользователя, что в теме появился новый комментарий.
&tplCommentFormtpl.Tickets.comment.formЧанк для формы добавления нового комментария.
&tplCommentFormGuesttpl.Tickets.comment.form.guestЧанк для формы добавления нового комментария гостям.
&tplCommentGuesttpl.Tickets.comment.one.guestЧанк комментария для показа гостям.
&tplCommentstpl.Tickets.comment.wrapperЧанк обертка для всех комментариев страницы.
&tplLoginToCommenttpl.Tickets.comment.loginЧанк с требованием авторизоваться.

Примеры

  • Стандартный вызов сниппета
[[!TicketComments?]]
  • Вызов сниппета с комментариями для не авторизированных
[[!TicketComments? &allowGuest=`1`]]

TicketForm

TicketForm

24 августа 2019, 07:00

Выводит форму для создания тикета пользователем из фронтэнда. *Сниппет вызывается не кэшированным.

Параметры вызова сниппета

НазваниеПо умолчаниюОписание
&allowedFieldsparent,pagetitle,content,publishedПоля тикета, которые разрешено заполнять пользователю. Можно указывать имена ТВ параметров.
&contextСписок контекстов для поиска секций, через запятую.
&parentsПо умолчанию выводятся все доступные разделы тикетов, но вы можете ограничить их, указав конкретных родителей через запятую. Указав через знак минус «-» можно исключить родителя
&resourcesМожно точечно через запятую указать конкретные разделы, доступные в списке или исключить их через знак минус «-» в комбинации с параметром parents
&permissionssection_add_childrenПроверка прав на публикацию в раздел. По умолачанию проверяется разрешение «section_add_children».
&tidЭтот параметр дает возможность вызывать через сниппет редактирование конкретного тикета без использования url-параметра $_REQUEST[‘tid’] .
&redirectUnpublished0Вы можете указать, на какой документ отправлять пользователя при создании неопубликованного тикета.
&redirectDeleted0Вы можете указать, на какой документ отправлять пользователя при удалении тикета.
&redirectUnDeleted0Вы можете указать, на какой документ отправлять пользователя при восстановлении тикета.
&requiredFieldsparent,pagetitle,contentОбязательные поля тикета, которые пользователь должен заполнить для отправки формы.
&sortbypagetitleПоле для сортировки списка разделов.
&sortdirASCНаправление сортировки списка разделов.
&tplFormCreatetpl.Tickets.form.createЧанк для создания нового тикета
&tplFormUpdatetpl.Tickets.form.updateЧанк для обновления существующего тикета
&tplPreviewtpl.Tickets.form.previewЧанк для предпросмотра тикета перед публикацией
&tplSectionRow@INLINE <option value="[[+id]]" [[+selected]]>[[+pagetitle]]</option>Чанк для оформления раздела вопросов в форме
&tplTicketEmailBcctpl.Tickets.ticket.email.bccЧанк для уведомления админов сайта о новом тикете.

Способы вызова

[[!TicketForm?]]

TicketLatest

TicketLatest

03 мая 2019, 07:00

Выводит ленту последних созданных и\или прокомментированных тикетов.

*Сниппет вызывается не кэшированным.

Параметры

НазваниеПо умолчаниюОписание
&actionCommentsРежим работы сниппета. Доступно Comments или Tickets
&cacheKeyИмя кэша сниппета. Если пустое — кэширование результатов будет отключено.
&cacheTime1800Время кэширования.
&depth10Глубина поиска ресурсов от каждого родителя.
&fastMode0Если включено — в чанк результата будут подставлены только значения из БД. Все необработанные теги MODX, такие как фильтры, вызов сниппетов и другие — будут вырезаны.
&includeContent0Выбирать поле контент у ресурсов.
&includeTVsСписок ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+action]] и [[+time]].
&limit10Лимит выборки результатов
&offset0Пропуск результатов с начала выборки
&outputSeparatorНеобязательная строка для разделения результатов работы.
&parentsСписок категорий, через запятую, для поиска результатов. По умолчанию выборка ограничена текущим родителем. Если поставить 0 — выборка не ограничивается.
&resourcesСписок ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с минуса, этот ресурс исключается из выборки.
&showDeleted0Показывать удалённые ресурсы.
&showHidden1Показывать ресурсы, скрытые в меню.
&showLog0Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте «mgr».
&showUnpublished0Показывать неопубликованные ресурсы.
&sortbycreatedonСортировка выборки.
&sortdirDESCНаправление сортировки.
&toPlaceholderЕсли не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
&tpltpl.Tickets.comment.latestЧанк оформления для каждого результата
&tvPrefixПрефикс для ТВ плейсхолдеров, например «tv.». По умолчанию параметр пуст.
&userВыбрать только элементы, созданные этим пользователем.
&whereСтрока, закодированная в JSON, с дополнительными условиями выборки.

*Список может быть расширен общими параметрами pdoTools так как Tickets работает на этой библиотеке.

Примеры

  • Вывод последних тикетов
[[!TicketLatest? &limit=`5` &fastMode=`1` &action=`tickets` &tpl=`tpl.Tickets.ticket.latest`]]
  • Вывод последних комментариев
[[!TicketLatest? &limit=`5` &fastMode=`1` &action=`comments` &tpl=`tpl.Tickets.comment.latest`]]

TicketMeta

TicketMeta

03 мая 2019, 07:00

Выводит информацию о текущем тикете, так же позволяет голосовать за тикет на его собственной странице. С версии 1.4.0 Сниппет может использоваться с любыми ресурсами MODX

Параметры вызова сниппета

НазваниеПо умолчаниюОписание
&getSection1Сделать дополнительный запрос в БД для получения родительской секции?
&getUser1Сделать дополнительный запрос в БД для получения профиля автора?
&tpltpl.Tickets.metaЧанк оформления информации о тикете.

Примеры вызова

  • Стандартный вызов сниппета
[[!TicketMeta?]]
  • Что бы посмотреть все доступные стандартные плейсхолдеры
[[!TicketMeta? &tpl=``]]

Настраиваем вывод Tickets | Зона MODX

По-умолчанию, в Tickets разрешены не все HTML теги. Из-за чего тикеты и комментарии могут выводится не так как хотелось бы. Чтобы это исправить, давайте разберёмся, как это работает.

Для фильтрации контента Tickets использует Jevix.

Это замечательная система фильтрации и типографирования, разработанная в Тематических Медиа для собственных проектов (в частности Хабрахабр), которая позволяет решить вопрос с фильтраций контента. Она поможет образумить криворукого менеджера или злого скрипт-кидди, распихивающего везде XSS.

При установке Tikets автоматически загружается и Jevix. Найти его можно в сниппетах в дереве элементов. Именно этот сниппет и используется Tickets для обработки тикетов и комментариев. И вот тут главная тонкость. У сниппета Jevix есть 3 набора параметров — по-умолчанию, Ticket и Comment. Именно тут обычно и возникают вопросы по настройке.

Можно указать Tickets не использовать Jevix. Для этого на странице редактирования тикета нужно отметить чекбокс «Отключить Jevix». Но я не советю этого делать, если тикеты добавляют пользователи.

Чтобы изменить отображение тикетов, нужно редактировать набор Ticket. Для комментариев — Comment. В параметре cfgAllowTags указаны все разрешённые теги. Изначально в нём нет тега div. Поэтому, если вы введёте в тикете что-то типа <div>Мой блок с информацией</div>, то на странице вы получите только текст «Мой блок с информацией». Тег div будет вырезан.

Чтобы этого избежать, нужно в параметр cfgAllowTags добавить тег div. Теперь текст выведется в блоке, но без нужного оформления. Это потому, что класс у блока не появился. И если вы попробуете добавить другие аттрибуты блоку, например, id или title, то обнаружите, что и они не появляются. Это легко исправить. Для этого нужно разрешить аттрибуты у разрешённых тегов.

Используем параметр cfgAllowTagParams. Это строка в JSON формате. Добавляем в него параметры id и class для тега div


"div":["id","class"]

Обновляем страницу с тикетом и видим, что блок с нашей информацией отображается как нужно. Аналогично делаем правки и для комментариев в наборе параметров «Comment» (если нужно конечно).

Кроме того, в параметре cfgAllowTagParams можно не только указать аттрибуты элемента, но и значения этих аттрибутов. Например, для класс блока div мы разрешаем только значения «container»,«article»,«aside»:


"div":{"class":["container","article","aside"]}

А можно вместо названий указать модификаторы:

  • #int — можно указывать только цифры.
  • #text — любые символы.
  • #link — проверка на соответствие url.
  • #image — путь до файла.
В заключение

Jevix не только фильтрует контент и вырезает запрещённые теги, но и выполняет функции типографа. Поэтому его можно использовать отдельно от Tickets для обработки любого контента.


[[Jevix?
    &input=`[[*content]]`
]]

В данном случае Jevix использует параметры по-умолчанию. Но их можно переопределить при вызове сниппета.


[[Jevix?
    &input=`[[*user_tv]]`
    &cfgAllowTags=`b,a,img`
    &cfgSetAutoLinkMode=`1`
]]
0   6099

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *