Как визуализировать текст, включая поле для встраивания видео

Aug 19 2020

У меня есть форматированное текстовое поле, и я использую модуль video_embed, чтобы пользователи могли вставлять видео в это поле с помощью подмодуля video_embed_wysiwyg.

Затем я пытаюсь отобразить поле в блоке, но просто получаю вывод JSON в текстовом поле:

{"preview_thumbnail": "/sites/default/files/styles/video_embed_wysiwyg_preview/public/video_thumbnails/A5jNGsBHHUE.jpg?itok=7fW8O9To", "video_url": "https://*/www.voutube.com ******* "," settings ": {" responseive ": 1," width ":" 854 "," height ":" 480 "," autoplay ": 1}," settings_summary ": [" Embedded Видео (адаптивное, с автоматическим воспроизведением). "]}

Вот мой массив рендеринга:

$text=check_markup($node->get('field_html_containing_video_content')->value, $node->get('field_html_containing_video_content')->format); $renderArray=[
      'content'=>[
        '#type'=>'inline_template',
        '#template'=>$text ] ]; return $renderArray; 

У меня включен фильтр встраивания видео для соответствующего текстового формата, и я попытался изменить порядок фильтров.

Есть идеи, что я здесь делаю не так?

Мы используем подтему начальной загрузки.

Спасибо за любую предоставленную помощь.

Ответы

3 4k4 Aug 19 2020 at 11:55

check_markup() не может обрабатывать прикрепленные метаданные, которые необходимы для правильной работы некоторых текстовых фильтров.

Вы должны использовать элемент рендеринга processed_text:

$renderArray = [ 'content' => [ '#type' => 'processed_text', '#text' => $node->field_html_containing_video_content->value,
    '#format' => $node->field_html_containing_video_content->format,
  ],
];

Подробнее Как безопасно отрисовать тело узла в пользовательской переменной?