drupal 7では、エンティティ、ブロック、ビューなど、tpl.phpファイル内の単純なphp関数を使用して、エンティティ、ブロック、ビューなどを読み込むことができました。これは、本当にカスタマイズ可能なブロックを作成するのに非常に強力でした。 D7私たちはこのphpを使うことができます:
$block = block_load('views', 'block_name');
$output = drupal_render(_block_get_renderable_array(_block_render_blocks(array($block ))));
D8に関しては、getParameterについて読みましたが、twig tpl。
たとえば、D8のカスタムフィールドでは、次のコマンドを使用してノードを取得できます。
$node = \Drupal::routeMatch()->getParameter('node');
しかし、ページのビューに対してこれをどのように行うのですか?そして、phpを記述できないtwig.tplでこれをどのように実行しますか?
D8でこれに人々がどのように取り組んでいるのか、またはここに完全に間違った方法があるのかどうかに興味があります。
より良い方法は、前処理関数でそれを行うことです!
そう、fe。 preprocess page では、$ variables配列などを介してノード(存在する場合)にアクセスできます...、次に、twigテンプレートに独自の変数を追加します。
$variables['my_fancy_block'] = \Drupal::service('renderer')->renderRoot($whatever);
そしてこれにアクセスする:
{{ my_fancy_block }}
Twigテンプレートでブロックをレンダリングするには、そのために Twig Tweakmodule を使用できますの場合、次の構文を使用できます。
<dd>{{ drupal_block('myblock') }}</dd>