カスタムテンプレートでサイト名を取得する


7

サイト名をカスタムテンプレートで印刷したい(page--front.html.twig

{{ site_name }} 動作しません。

使用する{{ page['#title'] }}と、「[site_name]へようこそ」のみが表示されます。

site_nameのみを印刷する方法を探しています。誰かがこれを達成する方法を知っていますか?

ありがとう!

回答:


11

これをYOUR_THEME.themeファイルに追加します。

function YOUR_THEME_preprocess_page(&$variables) {
  $variables['site_name'] = \Drupal::config('system.site')->get('name');
}

そして、これをpage--front.html.twigテンプレートに入れます:

{{ site_name }}

6

Drupal 7からDrupal 8にいくつか変更されました。変更されたものの1つは、自分でフェッチしてレンダリングするのではなく、ブロックを使用することが非常に良いことです。主な理由はキャッシュです。

あなたがおそらくやりたいことは、サイトのブランディングブロックをページのどこかに置くことです(サイト名、ロゴ、スローガンを表示することができます)。テーマでハードコーディングされたものの多くはブロックになりました。

Drupal 8で達成されたキャッシングとパフォーマンスの大幅な向上を可能にするため、これを行うには大きな努力が必要でした。

本当にそれをDrupal 7の方法で実行したい場合、@ Aramの答えは、プリプロセスフックでそれを行う方法を示しています。


とても興味深い。ありがとう!次のスニペットを使用して* .twigテンプレートにブロックを実装する方法を見つけました:{%include 'themes / bootstrap / templates / block--system-branding-block.html.twig'%}。これは大丈夫ですか、それとも別のアプローチをお勧めしますか?
Stefan

@Philテーマにリージョンを作成し、ブロックを構成して配置することをお勧めします。生成されたマークアップを変更するためにカスタムテンプレートを作成する必要がある場合、ほとんどの場合は不要です。
googletorp

1

はい、D8 twig templateファイルではデータをフェッチするコードを記述できません。

データが必要な場合は、preprocess関数に変数を設定して使用する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.