Настраиваем вывод Tickets
По-умолчанию, в Tickets разрешены не все HTML теги. Из-за чего тикеты и комментарии могут выводится не так как хотелось бы. Чтобы это исправить, давайте разберёмся, как это работает.
Для фильтрации контента Tickets использует Jevix.
Это замечательная система фильтрации и типографирования, разработанная в Тематических Медиа для собственных проектов (в частности Хабрахабр), которая позволяет решить вопрос с фильтраций контента. Она поможет образумить криворукого менеджера или злого скрипт-кидди, распихивающего везде XSS.
При установке Tikets автоматически загружается и Jevix. Найти его можно в сниппетах в дереве элементов. Именно этот сниппет и используется Tickets для обработки тикетов и комментариев. И вот тут главная тонкость. У сниппета Jevix есть 3 набора параметров — по-умолчанию, Ticket и Comment. Именно тут обычно и возникают вопросы по настройке.

Чтобы изменить отображение тикетов, нужно редактировать набор Ticket. Для комментариев — Comment. В параметре cfgAllowTags
указаны все разрешённые теги. Изначально в нём нет тега div. Поэтому, если вы введёте в тикете что-то типа <div class="myblock">Мой блок с информацией</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` ]]
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()