Drupal8 からテーマのテンプレートエンジンに「Twig」が採用されました。
今回の記事ではDrupal8 でのTwigの基礎をご紹介いたします。
「Webサイトからお問い合わせが来ない…」とお悩みの方必見!
当サイトのノウハウを詰め込んだ『Web集客の無料ガイド』をご提供
変数の出力
Twigテンプレートに渡された変数は下記ように値を呼び出すことができます。
{{ variable }}
例えば下記の配列の場合、{{ hoge_array.key }} として値を取得することができます。
php
$hoge_array = array( 'key' => 'value', 'another_key' => array( 'foo' => 'bar', ), );
Twig
{{ hoge_array.key }} # return value {{ hoge_array.another_key.foo }} # return bar
Twig filters
Twigのフィルター機能を使い、文字列の変換や、日付フォーマットなどに変換することができます。
{{ variable|length }} # 文字列の長さを返答 {{ variable|lower }} # 文字列を小文字に変換します。
その他のフィルターについては下記サイトを参照ください。
http://twig.sensiolabs.org/doc/filters/date.html
翻訳
D7の時は、t( ) 関数を使用しサイト内の翻訳を行いました。
D8の場合、下記の通りです。
{% trans %} {{ hoge_array.key }} {% endtrans %}
翻訳対象となったワードは管理画面の「環境設定 > ユーザーインタフェースの翻訳」より、翻訳することができます。
コメント
コメント業は 「#」で囲います。
{# コメント #}
条件分岐
変数の存在チェック
{% if site_slogan %} <div class="site-slogan">{{ site_slogan }}</div> {% endif %}
if elseif else 条件分岐
{% if foo == 'hoge' %} <p>fooはhogeが入っています。</p> {% elseif foo == 'fuga' %} <p>fooはfugaが入っています</p> {% else %} <p>上記以外です</p> {% endif %}
比較
{% if user.id > 18 and user.id < 27 %} <p>ユーザーIDは、19から26です。</p> {% endif %}
ループ
説明は不要ですよね。
{% for i in range(0, 3) %} {{ i }} {% endfor %} {% for item in items %} {{ item.content }} {% endfor %}
またループ中に特別な変数にアクセスすることも可能です。
{% for item in page.header %} {{ loop.index }} {# loop.index ループ数 1 2 3 4 loop.index0 ループ数 0からスタート loop.revindex ループ数(最後から)4 3 2 1 loop.revindex0 ループ数(最後から)0まで loop.first 最初のアイテムがtrue loop.last 最後のアイテムがtrue loop.length アイテム数 loop.parent 親要素のアイテム #} {% endfor %}
関連記事
引用元
こちらの記事は下記サイトより引用しています。
https://sqndr.github.io/d8-theming-guide/introduction/licence.html
https://www.drupal.org/docs/8/api/translation-api-code-text