Drupal8 Twigテンプレートの基礎

Drupal8 からテーマのテンプレートエンジンに「Twig」が採用されました。
今回の記事ではDrupal8 でのTwigの基礎をご紹介いたします。

 

変数の出力

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 %}

 

関連記事

Drupal8 Hello World モジュール作成方法

Drupal8の開発環境を整える

 

引用元

こちらの記事は下記サイトより引用しています。
https://sqndr.github.io/d8-theming-guide/introduction/licence.html

https://www.drupal.org/docs/8/api/translation-api-code-text

 

 

関連タグ: 

この記事をシェアする:

Author
この記事を書いた人:阿部 正幸

KDDIウェブコミュニケーションズ
クラウドホスティング事業本部 エバンジェリスト

CPIスタッフブログ編集長。ACE01,SmartReleaseをリリース後、現職の「エバンジェリスト」として、web制作に関する様々なイベントに登場

Line@登録よろしくお願いします

Web制作に関する情報や、CPIノベルティのプレゼント、サーバーの無償提供などを定期的に発信しています。
ぜひ、登録ください。