Come eseguire il rendering del testo incluso il campo di incorporamento del video

Aug 19 2020

Ho un campo di testo formattato e sto utilizzando il modulo video_embed per consentire agli utenti di incorporare video in quel campo, utilizzando il sottomodulo video_embed_wysiwyg.

Sto quindi cercando di eseguire il rendering del campo in un blocco, ma ottengo semplicemente l'output JSON nel campo di testo:

{"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 (reattivo, riproduzione automatica). "]}

Ecco il mio array di rendering:

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

Ho abilitato il filtro di incorporamento video sul formato di testo pertinente e ho provato a cambiare l'ordine dei filtri.

Qualche idea su cosa sto facendo di sbagliato qui?

Stiamo usando un sottotema bootstrap.

Grazie per qualsiasi aiuto dato.

Risposte

3 4k4 Aug 19 2020 at 11:55

check_markup() non è in grado di gestire i metadati allegati di cui alcuni filtri di testo necessitano per funzionare correttamente.

Devi usare l'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,
  ],
];

Ulteriori informazioni Come eseguire il rendering in modo sicuro del corpo del nodo su una variabile personalizzata?