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

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

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

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

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

Чтобы изменить отображение тикетов, нужно редактировать набор 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`
]]
30 декабря 2015, 10:47   4202     0

Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.