So rendern Sie Text einschließlich Videoeinbettungsfeld

Aug 19 2020

Ich habe ein formatiertes Textfeld und verwende das Modul video_embed, damit Benutzer Videos mithilfe des Submoduls video_embed_wysiwyg in dieses Feld einbetten können.

Ich versuche dann, das Feld in einem Block zu rendern, aber ich erhalte einfach die JSON-Ausgabe im Textfeld:

{"Preview_thumbnail": "/sites/default/files/styles/video_embed_wysiwyg_preview/public/video_thumbnails/A5jNGsBHHUE.jpg?itok=7fW8O9To", "video_url": "https://www.youtube.com ******* "," settings ": {" responsive ": 1," width ":" 854 "," height ":" 480 "," autoplay ": 1}," settings_summary ": [" Embedded Video (Responsive, Autoplaying). "]}

Hier ist mein Render-Array:

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

Ich habe den Videoeinbettungsfilter für das entsprechende Textformat aktiviert und versucht, die Reihenfolge der Filter zu ändern.

Irgendwelche Ideen, was ich hier falsch mache?

Wir verwenden ein Bootstrap-Unterthema.

Vielen Dank für jede Hilfe.

Antworten

3 4k4 Aug 19 2020 at 11:55

check_markup() ist nicht in der Lage, angehängte Metadaten zu verarbeiten, die einige Textfilter benötigen, um ordnungsgemäß zu funktionieren.

Sie müssen das Renderelement verwenden processed_text:

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

Weitere Informationen Wie wird der Knotenkörper in einer benutzerdefinierten Variablen sicher gerendert?