
Twigには、テンプレート内で直接使用できる便利な関数が、たくさんあります。
Twig関数リスト(List of Twig Functions)
Drupalコアには、Drupal特有のカスタム関数がいくつか追加されています。この関数は、TwigExtensionクラスで定義されています。
独自のカスタムTwig関数をカスタムモジュールで定義することもできます(しかしテーマには含まれません)。カスタムTwig関数の定義の例は、core / modules / system / tests / modules / twig_extension_test / src / TwigExtension / TestExtension.phpを参照してください。
#attach_library($library[ライブラリアセット])
テンプレートへライブラリアセットを読み込みます。
{{ attach_library('classy/node') }}
#create_attribute($attributes[属性])
Twigテンプレート内のcreate_attribute()関数を使用して、新しいAttribute(属性)オブジェクトを作成します 。このオブジェクトは、Twigテンプレートにある他のAttribute(属性)オブジェクトと同様に使用可能です。
8.3.xで導入されました
変更履歴を参照してください:https : //www.drupal.org/node/2818293
{% set my_attribute = create_attribute() %}
{%
set my_classes = [
'kittens',
'llamas',
'puppies',
]
%}
<div{{ my_attribute.addClass(my_classes).addAttribute('id', 'myUniqueId') }}>
{{ content }}
</div>
<div{{ create_attribute({'class': ['region', 'region--header']}) }}>
{{ content }}
</div>
#file_url($uri)
このヘルパー関数は、ルートからの相対パスを受け取り、そのファイルへの相対URIパスを作成します
{{ file_url(node.field_example_image.entity.uri.value) }}
#link ($text[テキスト], $url, $attributes[属性])
このヘルパー関数は、最初のパラメータでテキストを受け取り、2番目のパラメータでurlを受け取ります。
例:
{{ link(item.title, item.uri, { 'class':['foo', 'bar', 'baz']} ) }}
#path($name[ルート名], $parameters[パラメータ], $options[オプション])
ルート名とパラメータを指定して、相対URLパスを生成します。
{# Link to frontpage view. #}
<a href="{{ path('view.frontpage.page_1') }}">{{ 'View all content'|t }}</a>
{# Link to user entity/profile page. #}
<a href="{{ path('entity.user.canonical', {'user': user.id}) }}">{{ 'View user profile'|t }}</a>
{# Link to node page. #}
<a href="{{ path('entity.node.canonical', {'node': node.id}) }}">{{ 'View node page'|t }}</a>
urlとpath関数は、\ Symfony \ Bridge \ Twig \ Extension \ RoutingExtensionにあるものとほぼ同じように定義されています。
#url($name[ルート名], $parameters[パラメータ], $options[オプション])
ルート名とパラメータを指定して、絶対URLパスを生成:
<a href="{{ url('view.frontpage.page_1') }}">{{ 'View all content'|t }}</a>
現在のURLへの絶対URLパスを生成:
<a href="{{ url('<current>') }}">{{ 'Reload'|t }}</a>
フロントページへの絶対URLパスを生成:
<a href="{{ url('<front>') }}">{{ 'Home'|t }}</a>
関連コンテンツ
Drupal 8初心者講座バックナンバー
Drupal初心者講座について
第1回 歴史に見るDrupal のDNA
第2回 Drupalはフレームワークか?CMSか?
第3回 Drupalの特徴
第4回 Drupal 8のインストール(1)
第5回 Drupal 8のインストール(2)
第6回 コンテンツを投稿してみる
第7回 ボキャブラリとタクソノミーを使う
第8回 コンテンツ管理におけるDrupalと他のCMSとの比較
第9回 Drupal 8のブロックシステム
第10回 Drupalの標準クエリービルダ Views
第11回 Drupalと他のCMSのクエリビルダー機能を比較
第12回 Drupal 8の多言語機能と他のCMSやサービスとの比較
第13回 Drupalの権限設定とWordPressやMovable Typeとの比較
第14回 Drupalのテーマシステムについて
第15回 Drupalの拡張モジュールの選定と利用方法
第16回 Drupalをもっと知りたい方に向けた各種情報