Как напечатать текст (отформатированный, длинный) в twig без фильтра raw?


У нас есть текстовое (форматированное, длинное) поле, которое используется для вставки кода встраивания, такого как код встраивания Youtube для видео.

При печати поля в twig мы обнаруживаем, что вместо отображения кода вставки он отображает код вставки в виде строки. Чтобы обойти это, мы в настоящее время применяем Необработанный фильтр Twig, но хотели посмотреть, есть ли способ не использовать необработанный фильтр и отобразить поле как есть.

Тип контента (базовый страница):

  1. поле тела (текст, форматированный длинный)
  2. название

Текущие результаты (вставлены в поле тела с использованием полного текстового формата 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>

Желаемые результаты (вывод поля тела показывает видео)

Video shown

Author: usernameabc, 2018-03-06

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>
 4
Author: lamp5, 2018-03-07 08:48:34

С помощью превосходного модуля Twig Tweak вы можете сделать это:

{{ node.FIELD_NAME.value | check_markup(node.FIELD_NAME.format) }}

Эта функция (и многое другое) хорошо документирована в шпаргалке модуля .

 5
Author: Joel Stein, 2019-01-04 16:15:40