1

Drupal 8 のすべてのテーマの Twig テンプレートで使用できるようにする必要があるいくつかのグローバル変数を設定したいと考えています。

Drupal 7 のドキュメントでは、前処理機能について言及しています。

themeName_preprocess これは、テーマ自体にちなんで名付けられました。すべてのフックに適用されます。

そのため、以下の関数をthemename.themeファイルに追加しましたが、変数が設定されていません。

function themename_preprocess(&$variables) {
  $theme_path = $variables['base_path'] . $variables['directory'];
  $variables['theme_path'] = $theme_path;
  $variables['images_path'] = $theme_path . "/images/";
  $variables['templates_path'] = $theme_path . "/templates/";
}

定義する代わりにthemename_preprocessI define themename_preprocess_page(以下) を実行すると、変数が適切に定義され、page.html.twigテンプレートで使用できるようになります。

function themename_preprocess_page(&$variables) {
  $theme_path = $variables['base_path'] . $variables['directory'];
  $variables['theme_path'] = $theme_path;
  $variables['images_path'] = $theme_path . "/images/";
  $variables['templates_path'] = $theme_path . "/templates/";
}

しかし、私は変数を だけではなく、すべてのテンプレートで利用できるようにしたいpage.html.twig. どうやってやるの?

4

1 に答える 1