Cómo renderizar texto, incluido el campo de inserción de video

Aug 19 2020

Tengo un campo de texto formateado y estoy usando el módulo video_embed para permitir a los usuarios incrustar video en ese campo, usando el submódulo video_embed_wysiwyg.

Luego estoy tratando de representar el campo en un bloque, pero simplemente obtengo la salida JSON en el campo de texto:

{"preview_thumbnail": "/sites/default/files/styles/video_embed_wysiwyg_preview/public/video_thumbnails/A5jNGsBHHUE.jpg?itok=7fW8O9To", "video_url": "https://www.youtube.com/watch?v=* ******* "," settings ": {" responsive ": 1," width ":" 854 "," height ":" 480 "," autoplay ": 1}," settings_summary ": [" Embedded Video (responsivo, reproducción automática). "]}

Aquí está mi matriz de renderizado:

$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; 

Tengo el filtro de inserción de video habilitado en el formato de texto relevante y he intentado cambiar el orden de los filtros.

¿Alguna idea de lo que estoy haciendo mal aquí?

Estamos usando un subtema de bootstrap.

Gracias por la ayuda brindada.

Respuestas

3 4k4 Aug 19 2020 at 11:55

check_markup() no puede manejar metadatos adjuntos que algunos filtros de texto necesitan para funcionar correctamente.

Tienes que usar el elemento render processed_text:

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

Más información ¿Cómo representar de forma segura el cuerpo del nodo en una variable personalizada?