0

カスタム バンドル (コンテンツ タイプ) を作成し、フィールドを作成しました

これらのフィールドの 1 つはファイル タイプ フィールドで、ビデオ ファイルであり、プライベート ストレージに保存されます。ビデオを視聴できるように、 videojs モジュールをインストールしました。

このフィールドをノード ページに 2 回表示する必要があります。1 つは、ユーザーがファイルをダウンロードできるようにする汎用ファイル フォーマッタで、ビデオを再生する必要もあります。一般的なファイル フォーマッタとしてセットアップし、小枝テンプレートをカスタマイズして、ビデオ プレーヤーで再び表示することにしました。

node--mybundle--full.html.twig テンプレートでこのコードを使用して、設定フォーマッター (汎用ファイル) で 2 回表示することができます。

{{ content.field_sd_video }}

フィールド+フォーマッターのような簡単なものだと思いました:

{{ content.field_sd_video|videojs_formatter }}

しかし、これを達成するための簡単な方法を見つけることができません。もっとトリッキーな方法が必要かもしれませんか?

4

1 に答える 1

1

私は最終的に解決策を見つけました。このコードを前処理ノード関数に入れました。簡単である必要がありますが、方法を知るのは簡単ではありません ;)

function mytheme_preprocess_node(&$variables) {

     $variables['video_caption'] = $variables['node']->get('field_video')
         ->view(array(
            'label' => 'hidden',
            'type' => 'videojs_player_list'
        ));
}

そして、小枝ファイルに次の行を追加するだけです:

{{ video_caption }}

私の場合、 node--mybundle--full.html.twig テンプレート

似たようなものを探してここにたどり着いた人は、41 ページのTwig Recipesに触発されました。Twig のデバッグ
に役立ちました。キントとノード変数、および情報をラップするために使用されるクラスで遊んでいます。次に、フィールドに [FileFieldItemList] が付いていることがわかり、[EntityViewBuilderInterface] を使用するビュー メソッドを見つけました。

于 2017-01-13T11:22:15.293 に答える