Как напечатать текст (отформатированный, длинный) в twig без фильтра raw?
У нас есть текстовое (форматированное, длинное) поле, которое используется для вставки кода встраивания, такого как код встраивания Youtube для видео.
При печати поля в twig мы обнаруживаем, что вместо отображения кода вставки он отображает код вставки в виде строки. Чтобы обойти это, мы в настоящее время применяем Необработанный фильтр Twig, но хотели посмотреть, есть ли способ не использовать необработанный фильтр и отобразить поле как есть.
Тип контента (базовый страница):
- поле тела (текст, форматированный длинный)
- название
Текущие результаты (вставлены в поле тела с использованием полного текстового формата HTML, отображаются в виде строки):
<script type="text/javascript" id="vidyard_embed_code_SkWfXrpFKFpS9JrytJwqMt" src="//play.vidyard.com/SkWfXrpFKFpS9JrytJwqMt.js?v=3.1.1&type=lightbox"></script><div class="outer_vidyard_wrapper"><div class="vidyard_wrapper" onclick="fn_vidyard_SkWfXrpFKFpS9JrytJwqMt();"><img width="360" src="//play.vidyard.com/SkWfXrpFKFpS9JrytJwqMt.jpg?" alt="Generating Leads with Video Content"><div class="vidyard_play_button"><a href="javascript:void(0);"></a></div></div></div>
Желаемые результаты (вывод поля тела показывает видео)
2 answers
Вам необходимо подготовить отрисованный массив, это пример для поля абзаца.
<div class="accordion-body">
{% set accordion_body = paragraph.field_text_of_accordion_entry.value %}
{% if accordion_body|length == 0 %}
{% set accordion_body = ' ' %}
{% endif %}
{% set body = {
'#type': 'processed_text',
'#text': accordion_body,
'#format': paragraph.field_text_of_accordion_entry.format,
} %}
<div class="accordion-body-container">
{{body}}
</div>
</div>
С помощью превосходного модуля Twig Tweak вы можете сделать это:
{{ node.FIELD_NAME.value | check_markup(node.FIELD_NAME.format) }}
Эта функция (и многое другое) хорошо документирована в шпаргалке модуля .