Bagaimana membuat teks termasuk bidang video embed

Aug 19 2020

Saya memiliki bidang teks yang diformat, dan saya menggunakan modul video_embed untuk memungkinkan pengguna menyematkan video ke bidang itu, menggunakan submodul video_embed_wysiwyg.

Saya kemudian mencoba merender bidang dalam satu blok, tetapi saya hanya mendapatkan keluaran JSON di bidang teks:

{"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 ": [" Tersemat Video (Responsif, putar otomatis). "]}

Ini array render saya:

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

Saya telah mengaktifkan filter penyematan video pada format teks yang relevan, dan telah mencoba mengubah urutan filter.

Ada ide apa yang saya lakukan salah di sini?

Kami menggunakan subtema bootstrap.

Terima kasih atas bantuan yang diberikan.

Jawaban

3 4k4 Aug 19 2020 at 11:55

check_markup() tidak dapat menangani metadata terlampir yang diperlukan beberapa filter teks agar berfungsi dengan baik.

Anda harus menggunakan elemen render processed_text:

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

Info lebih lanjut Bagaimana cara aman merender badan node pada variabel kustom?