私はDrupal 8をカスタムテーマで使用しようとしています。要件に大きな構造の違いがあるため、ページを持っています。front.twig.htmlとpage.twig.htmlです。は、通常のSymfony2プロジェクトのphrozn oderで使用されているテンプレートパーツ(footer.html.twigやheader.html.twigなど)を作成します。これらのテンプレートは、サブディレクトリ/ parts /に保存されます。
しかし、このテンプレートを通常どおり呼び出すと、テンプレートの名前を含む文字列を受け取るだけです。
例えば:
{# in page.html.twig or page--front.html.twig #}
{% include 'parts/footer.html.twig' %}
ファイル名を文字列として返します。
parts/footer.html.twig
Drupal 8?
相対パスを実行することはできません。すべてのパスはDrupalルートからであるか、 'templates'ディレクトリへの名前空間パスに基づいている必要があります: https://www.drupal .org/node/2143557 。
「Drupalルートから)」を避け、少なくとも https://www.drupal.org/node/2291449 が解決されるまで名前空間を使用します。
{% include '@mytheme/parts/footer.html.twig' %}
編集:追加の引数をループに渡す場合、またはインクルードされた
twig
テンプレートにいくつかの変数をチェックする場合は、次のように記述する必要があります。
{% include '@mytheme/includes/form-block.html.twig' with {dog: true} %}
編集: https://www.drupal.org/node/2291449 がコミットされたので、次のこともできます:
{% include 'footer.html.twig' %}
有用な例外ではなく文字列としてファイル名を表示した理由については、 https://www.drupal.org/node/2369981 を参照してください。
テーマディレクトリへのフルパスを使用してください。名前空間を使用する場合、コードを別のサイトまたはテーマに持ってくると、名前空間を変更する必要があります。
これはうまくいくはずです:
{% include directory ~ '/templates/parts/footer.html.twig' %}
with
キーワードの後に変数を渡すことができます:
{# template.html will have access to the variables from the current context and the additional ones provided #}
{% include 'template.html' with {'foo': 'bar'} %}
{% set vars = {'foo': 'bar'} %}
{% include 'template.html' with vars %}
Twigドキュメンテーション http://twig.sensiolabs.org/doc/tags/include.html を参照してください
Twigの配列を使用して、ファイルが存在しない場合にフォールバックを作成することもできます。
例えば。 footer.html.twigが使用できない場合、defaultfooter.html.twigが使用されます。
{{ include([
'@yourthemename/parts/footer.html.twig',
'@yourthemename/parts/defaultfooter.html.twig'
]) }}
Nb:これがベストプラクティスであるかどうか、私はまだ解決しようとしています。
Add Twigテンプレートの継承がテーマレジストリに基づいて継承され、追加を有効にするTwigローダー がコミットされたので、次の行。
{% include 'footer.html.twig' %}
Drupal 8の場合
twigファイルを含めるを含む場合{% include 'FILE_NAME.html.twig' %}
Drupalは、FILEが現在のテーマディレクトリにあることを期待しています。そこに置くだけで機能します。
twigファイルを含める
MODULEに追加する場合は、THEME関数で宣言する必要があります。 .moduleファイルに次の行を追加するだけです。
<?php function YOUR_MODULE_NAME_theme($existing, $type, $theme, $path) {
'FILE_NAME' => [
'variables' => [
],
'template' => 'FILE_NAME',
], ?>
次に、TwigファイルをYOUR_MODULE/template/FILE_NAME.html.twigに配置します