Twigについて
TwigはPHPベースのコンパイル型テンプレート言語です。Webページがレンダリングされるとき、Twigエンジンはテンプレートを取得して「コンパイルされた」PHPテンプレートに変換し、sites/default/files/php/twigの保護されたディレクトリに保存します。コンパイルは一度実行され、テンプレートファイルは再利用のためにキャッシュされ、Twigキャッシュがクリアされると再コンパイルされます。
Drupal TwigイニシアチブはSymfonyイニシアチブと同じ動機を持っています:開発者がDrupalに適切に集中できるようにする、最新で強力なOOPベースのエンジンを導入することです。
1. Docblock
PHPTemplate:
<?php
/**
* @file
* File description
*/
?>
Twig:
Drupalは特定の命名規則に基づいてテンプレートを読み込みます。これにより、テンプレートをテーマに追加して特定の名前を付けることでオーバーライドできます。
テンプレートを追加したら、Drupalが新しいテンプレートを検出するためにキャッシュを再構築する必要があります。
Twigテンプレートをデバッグして、特定の要素のマークアップの出力にどのテンプレートが使用されているかを確認できます。Twigデバッグの詳細はこちら。
Drupalを使用すると、HTMLマークアップの作成に使用されるすべてのテンプレートをオーバーライドできるため、カスタムテーマの出力としてレンダリングされるマークアップを完全に制御できます。高レベルのHTMLから小さなフィールドまで、ページのすべての要素にテンプレートがあります。
テンプレートのオーバーライド
特定の命名規則に一致するテンプレートをテーマのフォルダーに追加することで、Drupalの基本テンプレートをオーバーライドできます。
テンプレートをオーバーライドするには、次のことが必要です:
1. オーバーライドするテンプレートを見つけます。
2. テンプレートファイルを基本の場所からテーマのフォルダーにコピーします。
3.(オプション)テンプレートが使用される領域のより具体的なサブセットを対象にするために、命名規則に従ってテンプレートの名前を変更します。
4. 好みに合わせてテンプレートを変更します。
テンプレートファイルをテーマにコピーしてキャッシュをクリアすると、Drupalは基本バージョンの代わりにテンプレートファイルのインスタンスを使用し始めます。
TwigはPHP用のテンプレートエンジンで、Symfony2フレームワークの一部です。
Drupal 8では、TwigがデフォルトのテンプレートエンジンとしてPHPTemplateに取って代わります。この変更の結果の1つは、すべてのtheme_*関数とPHPTemplateベースの*.tpl.phpファイルが*.html.twigテンプレートファイルに置き換えられたことです。
Drupal 8は現在Twig 1.xを使用していることに注意してください。ただし、Drupal 8.7以降はTwig 2.xと互換性があります。一部のTwig関数はこれらのバージョンで異なります。そのため、テーマ開発者は将来の互換性のために廃止されたTwig関数を避ける必要があります。
このドキュメントはテーマ用です。モジュールについては、Drupal 8モジュールへのスタイルシート(CSS)とJavaScript(JS)の追加のセクションを参照してください。
Drupal 8では、スタイルシート(CSS)とJavaScript(JS)は、モジュール(コード)とテーマの両方で同じシステムを介して読み込まれます:アセットライブラリです。
明確にするために、これらの手順はテーマ専用であり、モジュールには適用されません。
Drupalは高レベルの原則を使用します:アセット(CSSまたはJS)は、Drupalに読み込む必要があると通知した場合にのみ読み込まれます。Drupalはフロントエンドのパフォーマンスを低下させるため、すべてのページでアセットを読み込みません。
テーマにリージョンを追加するには、次のことが必要です:
- THEMENAME.info.ymlファイルへのリージョンメタデータの追加。
- page.html.twigファイルの編集と新しいリージョンの出力。
注:テーマでリージョンを宣言すると、1つだけでも、デフォルトのリージョンはすべて適用されなくなり、使用するすべての領域を宣言する責任があります。
定義しなかったため存在しなくなったリージョンにあったブロックは、無効になります。特にTHEMENAME.info.ymlを編集してdrush crでキャッシュを再構築すると、それぞれについて次のようなメッセージが表示されます:
テーマは、プレゼンテーション層を定義するファイルのセットです。1つ以上の「サブテーマ」またはテーマのバリエーションを作成することもできます。必要なのは.info.ymlファイルだけですが、ほとんどのテーマとサブテーマは他のファイルも使用します。このページでは、一般的なテーマまたはサブテーマにあるファイルとフォルダーを一覧表示します。
テーマの場所
テーマは、Drupalインストールの「themes」フォルダーに配置する必要があります。BartikやSevenなどのDrupalコアテーマは、インストールのcore/themesフォルダーにあることに注意してください。
追加されたテーマは「contrib」サブフォルダーに、独自のテーマは「custom」フォルダーに配置することをお勧めします。
各テーマは、テーマ自体にちなんで名付けられたディレクトリに含まれています。たとえば、fluffiness。名前は小文字で、文字で始まり、スペースの代わりにアンダースコア(_)を使用する必要があります。
Drupal 8テーマを作成するには、まず、テーマに関するメタデータをDrupalに提供するTHEMENAME.info.ymlファイルを作成する必要があります。これはモジュールやインストールプロファイルが定義される方法と似ているため、ファイルの「type」キーを「theme」に設定して区別することが重要です。
このページには、THEMENAME.info.ymlファイルの例と、ファイルに含めることができる情報の概要が含まれています。
Drupalで最も一般的なSELECTクエリは、データベース接続オブジェクトのquery()メソッドを使用した静的クエリです。
静的クエリはほぼそのままの形でデータベースに渡されます。
例:
$database = \Drupal::database();
$query = $database->query("SELECT id, example FROM {mytable}");
$result = $query->fetchAll();
非常に単純なSELECTクエリのみがstatic query()メソッドを使用する必要があります。より複雑なクエリ、動的クエリ生成、または可変性が必要な場合は、動的クエリを使用する必要があります。