Comment rendre du texte, y compris le champ d'intégration vidéo

Aug 19 2020

J'ai un champ de texte formaté et j'utilise le module video_embed pour permettre aux utilisateurs d'intégrer la vidéo dans ce champ, en utilisant le sous-module video_embed_wysiwyg.

J'essaie ensuite de rendre le champ dans un bloc, mais j'obtiens simplement la sortie JSON dans le champ de texte:

{"preview_thumbnail": "/sites/default/files/styles/video_embed_wysiwyg_preview/public/video_thumbnails/A5jNGsBHHUE.jpg?itok=7fW8O9To", "video_url": "https://www.youtube.com/watch ******* "," settings ": {" responsive ": 1," width ":" 854 "," height ":" 480 "," autoplay ": 1}," settings_summary ": [" Embedded Vidéo (responsive, lecture automatique). "]}

Voici mon tableau de rendu:

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

J'ai activé le filtre d'intégration vidéo sur le format de texte approprié et j'ai essayé de changer l'ordre des filtres.

Des idées sur ce que je fais mal ici?

Nous utilisons un sous-thème bootstrap.

Merci pour toute aide apportée.

Réponses

3 4k4 Aug 19 2020 at 11:55

check_markup() ne peut pas gérer les métadonnées attachées dont certains filtres de texte ont besoin pour fonctionner correctement.

Vous devez utiliser l'élément render processed_text:

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

Plus d'infos Comment rendre en toute sécurité le corps du nœud sur une variable personnalisée?