Вы здесь

Как разрешить в заголовке материала использовать HTML?

0

Можно ли разрешить какое-то ограниченное количество HTML-тегов в заголовке материала для Drupal 8?

Версия Drupal: 
8.x
Категория: 
Theming
Вопрос задан 01.02.2017 - 10:27

Ответы

1

Так никто и не запрещает вводить в заголовке ноды html. Просто в процессе вывода в twig шаблонах произойдет escaping символов, чтобы его предотвратить есть фильтр raw. Чтобы разрешить только определенные теги есть фильтр striptags .

Ответ дан 01.02.2017 - 13:13
Аватар пользователя drupby
drupby
456

Переписал шаблон page-title.html.twig:

{#
/**
 * @file
 * Default theme implementation for page titles.
 *
 * Available variables:
 * - title_attributes: HTML attributes for the page title element.
 * - title_prefix: Additional output populated by modules, intended to be
 *   displayed in front of the main title tag that appears in the template.
 * - title: The page title, for use in the actual content.
 * - title_suffix: Additional output populated by modules, intended to be
 *   displayed after the main title tag that appears in the template.
 *
 * @ingroup templates
 *
 * @see template_preprocess_page_title()
 */
#}
{% if title %}
  <h1{{ title_attributes.addClass('page-header') }}>{{ title|raw }}</h1>
{% endif %}

Ничего не изменилось. Кэш сбрасывал

Комментарий оставлен 01.02.2017 - 16:06

page_title - только обертка, сам заголовок ноды в field--node--title.html.twig, а переменная title в page-title.html.twig — объект (\Drupal\Core\Render\Markup), а не строка.

Комментарий оставлен 01.02.2017 - 17:30

Сделал так:

<span{{ attributes }}>
  {%- for item in items -%}
    {{ item.content|raw }}
  {%- endfor -%}
</span>

Но все равно теги выводятся не обработанными (http://joxi.ru/LmGOkjueBLEQml) :(
Может еще что-то упускаю?

Комментарий оставлен 01.02.2017 - 17:54

item.content - рендерный массив, а фильтр применяется к строке.

Комментарий оставлен 01.02.2017 - 17:55

Беда... А как же в данном случае строку обработать?

Комментарий оставлен 01.02.2017 - 18:59

Внутри массива item.content должен быть элемент, который содержит строку с заголовком. Надо дебажить.

Комментарий оставлен 01.02.2017 - 19:15

Спасибо! За одно научился дебажить немного.
Получилось так:

{%- for item in items -%}
  {{ item.content['#context'].value|raw }}
{%- endfor -%}
Комментарий оставлен 01.02.2017 - 19:42

И добавить разрешенные теги

{%- for item in items -%}
  {{ item.content['#context'].value|striptags('<span><i><b>')|raw }}
{%- endfor -%}
Комментарий оставлен 01.02.2017 - 19:57

Все классно работает, только в breadcrumb теперь нужно разрешить теги, чейто не получается по примеру выше

Комментарий оставлен 21.08.2018 - 08:01

Страницы