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

&allowGuest 0 Включить возможность комментирования для неавторизованных пользователей?
&allowGuestEdit 1 Разрешать неавторизованным пользователям редактировать свои комментарии?
&allowGuestEmails 0 Отправлять гостям почтовые уведомления об ответах?
&autoPublish 1 Автоматически публиковать все новые комментарии, без премодерации.
&autoPublishGuest 1 Автоматически публиковать все новые комментарии неавторизованных пользователей, без премодерации.
&depth 0 Целое число, для указания максимальной глубины ветки комментариев.
&enableCaptcha
1 Включить защиту от спама для неавторизованных пользователей?
&fastMode 1 Если включено - в чанк результата будут подставлены только значения из БД. Все необработанные теги MODX, такие как фильтры, вызов сниппетов и другие - будут вырезаны.
&formBefore 0 Расположить форму комментирования перед комментариями. По умолчанию - нет.
&toPlaceholder Не выводить результат работы сниппета, а поместить в плейсхолдер toPlaceholder
&separatePlaceholder 0 При параметре 1 вывести форму и комментарии в плейсхолдеры toPlaceholder_form, toPlaceholder_thread.
&gravatarIcon mm Если аватарка пользователя не найдена, грузить эту картинку на замену.
&gravatarSize 24 Размер загружаемого аватара
&gravatarUrl http://www.gravatar.com/avatar/ Адрес для загрузки аватаров
&maxCaptcha 10 Максимальное число для генерации кода защиты от спама.
&minCaptcha 1 Минимальное число для генерации кода защиты от спама.
&thread Имя ветки комментариев. По умолчанию, "resource-[[*id]]".
&tplCommentAuth tpl.Tickets.comment.one.auth Чанк комментария для показа авторизованному пользователю.
&tplCommentDeleted tpl.Tickets.comment.one.deleted Чанк удалённого комментария.
&tplCommentEmailBcc tpl.Tickets.comment.email.bcc Чанк для уведомления админов сайта о новом комментарии.
&tplCommentEmailOwner tpl.Tickets.comment.email.owner Чанк для уведомления владельца тикета о новом комментарии.
&tplCommentEmailReply tpl.Tickets.comment.email.reply Чанк для уведомления пользователя о том, что на его комментарий появился ответ.
&tplCommentEmailSubscription tpl.Tickets.comment.email.subscription Чанк для уведомления подписанного пользователя, что в теме появился новый комментарий.
&tplCommentForm tpl.Tickets.comment.form Чанк для формы добавления нового комментария.
&tplCommentFormGuest tpl.Tickets.comment.form.guest Чанк для формы добавления нового комментария гостям.
&tplCommentGuest tpl.Tickets.comment.one.guest Чанк комментария для показа гостям.
&tplComments tpl.Tickets.comment.wrapper Чанк обертка для всех комментариев страницы.
&tplLoginToComment tpl.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

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

Параметры

Название По умолчанию Описание
&depth 10 Глубина поиска ресурсов от каждого родителя.
&fastMode 0 Если включено - в чанк результата будут подставлены только значения из БД. Все необработанные теги MODX, такие как фильтры, вызов сниппетов и другие - будут вырезаны.
&includeContent 0 Выбирать поле «content» у ресурсов.
&includeTVs Список ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+action]] и [[+time]].
&limit 10 Лимит выборки результатов
&offset 0 Пропуск результатов с начала выборки
&outputSeparator Необязательная строка для разделения результатов работы.
&parents Список категорий, через запятую, для поиска результатов. По умолчанию выборка ограничена текущим родителем. Если поставить 0 - выборка не ограничивается.
&resources Список ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с минуса, этот ресурс исключается из выборки.
**&showDeleted 0 Показывать удалённые ресурсы.
&showHidden 1 Показывать ресурсы, скрытые в меню.
&showLog 0 Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте «mgr».
&showUnpublished 0 Показывать неопубликованные ресурсы.
&sortby createdon Сортировка выборки.
&sortdir DESC Направление сортировки
&toPlaceholder Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
&tpl tpl.Tickets.list.row Чанк оформления для каждого результата
&tvPrefix Префикс для ТВ плейсхолдеров, например «tv.». По умолчанию параметр пуст.
&user Выбрать только элементы, созданные этим пользователем.
&where Строка, закодированная в JSON, с дополнительными условиями выборки.

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

Примеры

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

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

[[!+page.nav]]

getTicketsSections

getTicketsSections

03 мая 2019, 07:00

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

Параметры

Название По умолчанию Описание
&depth 0 Глубина поиска ресурсов от каждого родителя.
&fastMode 0 Если включено - в чанк результата будут подставлены только значения из БД. Все необработанные теги MODX, такие как фильтры, вызов сниппетов и другие - будут вырезаны.
&includeContent 0 Выбирать поле "content" у ресурсов.
&includeTVs Список ТВ параметров для выборки, через запятую. Например: "action,time" дадут плейсхолдеры [[+action]] и [[+time]].
&limit 10 Лимит выборки результатов
&offset 0 Пропуск результатов с начала выборки
&outputSeparator Необязательная строка для разделения результатов работы.
&parents Список категорий, через запятую, для поиска результатов. По умолчанию выборка ограничена текущим родителем. Если поставить 0 - выборка не ограничивается.
&resources Список ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с минуса, этот ресурс исключается из выборки.
&showDeleted 0 Показывать удалённые ресурсы.
&showHidden 0 Показывать ресурсы, скрытые в меню.
&showLog 0 Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте "mgr".
&showUnpublished 0 Показывать неопубликованные ресурсы.
&sortby views Сортировка выборки.
&sortdir DESC Направление сортировки
&toPlaceholder Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
&tpl tpl.Tickets.sections.row Чанк оформления для каждого результата
&tvPrefix Префикс для ТВ плейсхолдеров, например "tv.". По умолчанию параметр пуст.
&where Строка, закодированная в JSON, с дополнительными условиями выборки.

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

Примеры

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

[[!getTicketsSections?]]

TicketComments

TicketComments

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

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

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

Название По умолчанию Описание
&allowGuest 0 Включить возможность комментирования для неавторизованных пользователей?
&allowGuestEdit 1 Разрешать неавторизованным пользователям редактировать свои комментарии?
&allowGuestEmails 0 Отправлять гостям почтовые уведомления об ответах?
&autoPublish 1 Автоматически публиковать все новые комментарии, без премодерации.
&autoPublishGuest 1 Автоматически публиковать все новые комментарии неавторизованных пользователей, без премодерации.
&depth 0 Целое число, для указания максимальной глубины ветки комментариев.
&enableCaptcha 1 Включить защиту от спама для неавторизованных пользователей?
&fastMode 1 Если включено - в чанк результата будут подставлены только значения из БД. Все необработанные теги MODX, такие как фильтры, вызов сниппетов и другие - будут вырезаны.
&formBefore 0 Расположить форму комментирования перед комментариями. По умолчанию - нет.
&toPlaceholder Не выводить результат работы сниппета, а поместить в плейсхолдер toPlaceholder
&separatePlaceholder 0 При параметре 1 вывести форму и комментарии в плейсхолдеры toPlaceholder_form, toPlaceholder_thread.
&gravatarIcon mm Если аватарка пользователя не найдена, грузить эту картинку на замену.
&gravatarSize 24 Размер загружаемого аватара
&gravatarUrl http://www.gravatar.com/avatar/ Адрес для загрузки аватаров
&maxCaptcha 10 Максимальное число для генерации кода защиты от спама.
&minCaptcha 1 Минимальное число для генерации кода защиты от спама.
&thread Имя ветки комментариев. По умолчанию, "resource-[[*id]]".
&tplCommentAuth tpl.Tickets.comment.one.auth Чанк комментария для показа авторизованному пользователю.
&tplCommentDeleted tpl.Tickets.comment.one.deleted Чанк удалённого комментария.
&tplCommentEmailBcc tpl.Tickets.comment.email.bcc Чанк для уведомления админов сайта о новом комментарии.
&tplCommentEmailOwner tpl.Tickets.comment.email.owner Чанк для уведомления владельца тикета о новом комментарии.
&tplCommentEmailReply tpl.Tickets.comment.email.reply Чанк для уведомления пользователя о том, что на его комментарий появился ответ.
&tplCommentEmailSubscription tpl.Tickets.comment.email.subscription Чанк для уведомления подписанного пользователя, что в теме появился новый комментарий.
&tplCommentForm tpl.Tickets.comment.form Чанк для формы добавления нового комментария.
&tplCommentFormGuest tpl.Tickets.comment.form.guest Чанк для формы добавления нового комментария гостям.
&tplCommentGuest tpl.Tickets.comment.one.guest Чанк комментария для показа гостям.
&tplComments tpl.Tickets.comment.wrapper Чанк обертка для всех комментариев страницы.
&tplLoginToComment tpl.Tickets.comment.login Чанк с требованием авторизоваться.

Примеры

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

TicketForm

TicketForm

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

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

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

Название По умолчанию Описание
&allowedFields parent,pagetitle,content,published Поля тикета, которые разрешено заполнять пользователю. Можно указывать имена ТВ параметров.
&context Список контекстов для поиска секций, через запятую.
&parents По умолчанию выводятся все доступные разделы тикетов, но вы можете ограничить их, указав конкретных родителей через запятую. Указав через знак минус "-" можно исключить родителя
&resources Можно точечно через запятую указать конкретные разделы, доступные в списке или исключить их через знак минус "-" в комбинации с параметром parents
&permissions section_add_children Проверка прав на публикацию в раздел. По умолачанию проверяется разрешение "section_add_children".
&tid Этот параметр дает возможность вызывать через сниппет редактирование конкретного тикета без использования url-параметра $_REQUEST['tid'] .
&redirectUnpublished 0 Вы можете указать, на какой документ отправлять пользователя при создании неопубликованного тикета.
&redirectDeleted 0 Вы можете указать, на какой документ отправлять пользователя при удалении тикета.
&redirectUnDeleted 0 Вы можете указать, на какой документ отправлять пользователя при восстановлении тикета.
&requiredFields parent,pagetitle,content Обязательные поля тикета, которые пользователь должен заполнить для отправки формы.
&sortby pagetitle Поле для сортировки списка разделов.
&sortdir ASC Направление сортировки списка разделов.
&tplFormCreate tpl.Tickets.form.create Чанк для создания нового тикета
&tplFormUpdate tpl.Tickets.form.update Чанк для обновления существующего тикета
&tplPreview tpl.Tickets.form.preview Чанк для предпросмотра тикета перед публикацией
&tplSectionRow @INLINE <option value="[[+id]]" [[+selected]]>[[+pagetitle]]</option> Чанк для оформления раздела вопросов в форме
&tplTicketEmailBcc tpl.Tickets.ticket.email.bcc Чанк для уведомления админов сайта о новом тикете.

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

[[!TicketForm?]]

TicketLatest

TicketLatest

03 мая 2019, 07:00

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

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

Параметры

Название По умолчанию Описание
&action Comments Режим работы сниппета. Доступно Comments или Tickets
&cacheKey Имя кэша сниппета. Если пустое - кэширование результатов будет отключено.
&cacheTime 1800 Время кэширования.
&depth 10 Глубина поиска ресурсов от каждого родителя.
&fastMode 0 Если включено - в чанк результата будут подставлены только значения из БД. Все необработанные теги MODX, такие как фильтры, вызов сниппетов и другие - будут вырезаны.
&includeContent 0 Выбирать поле контент у ресурсов.
&includeTVs Список ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+action]] и [[+time]].
&limit 10 Лимит выборки результатов
&offset 0 Пропуск результатов с начала выборки
&outputSeparator Необязательная строка для разделения результатов работы.
&parents Список категорий, через запятую, для поиска результатов. По умолчанию выборка ограничена текущим родителем. Если поставить 0 - выборка не ограничивается.
&resources Список ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с минуса, этот ресурс исключается из выборки.
&showDeleted 0 Показывать удалённые ресурсы.
&showHidden 1 Показывать ресурсы, скрытые в меню.
&showLog 0 Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте «mgr».
&showUnpublished 0 Показывать неопубликованные ресурсы.
&sortby createdon Сортировка выборки.
&sortdir DESC Направление сортировки.
&toPlaceholder Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
&tpl tpl.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

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

Название По умолчанию Описание
&getSection 1 Сделать дополнительный запрос в БД для получения родительской секции?
&getUser 1 Сделать дополнительный запрос в БД для получения профиля автора?
&tpl tpl.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 не будет опубликован. Обязательные поля помечены *