ビデオ埋め込みフィールドを含むテキストをレンダリングする方法

Aug 19 2020

フォーマットされたテキストフィールドがあり、video_embedモジュールを使用して、ユーザーがvideo_embed_wysiwygサブモジュールを使用してそのフィールドにビデオを埋め込むことができるようにしています。

次に、フィールドをブロックでレンダリングしようとしていますが、テキストフィールドでJSON出力を取得するだけです。

{"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 ":{" response ":1、" width ":" 854 "、" height ":" 480 "、" autoplay ":1}、" settings_summary ":[" Embeddedビデオ(応答性、自動再生)。 "]}

これが私のレンダー配列です:

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

関連するテキスト形式でビデオ埋め込みフィルターを有効にして、フィルターの順序を変更してみました。

私がここで間違っていることについて何か考えはありますか?

ブートストラップサブテーマを使用しています。

助けてくれてありがとう。

回答

3 4k4 Aug 19 2020 at 11:55

check_markup() 一部のテキストフィルターが適切に機能するために必要な添付メタデータを処理できません。

レンダリング要素を使用する必要がありますprocessed_text

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

詳細カスタム変数でノード本体を安全にレンダリングする方法は?