_field_header
_と_field_link
_の2つのカスタムフィールドを持つコンテンツタイプArticleがあります。 _field_header
_が設定されていない場合、twigテンプレートで検証を実行してCSSクラスを追加します。_$variables['myVariable'] = TRUE
_を使用してカスタム変数を設定しようとしたときに、 twigテンプレートの値を出力します。これはNULL
値を返します。
mytheme_preprocess_field()
フックを使用してカスタム変数を作成し、twigテンプレートで使用するにはどうすればよいですか?
mytheme.theme
_function mytheme_preprocess_field(&$variables) {
$element = $variables['element'];
if($element['#field_name'] == 'field_header') {
if($element['#items']->first()->isEmpty()) {
$variables['myVariable'] = TRUE;
}
}
}
_
node--article.html.twig
_<div>
{{ kint(myVariable) }} // Returns NULL everytime.
{% if myVariable %}
// If not empty, do something.
{% else %}
// If empty, do something else.
{% endif %}
</div>
_
テンプレート内の変数にはスコープが設定されています-hook_preprocess_field
に追加したものはfield.html.twigとその派生物でのみ使用でき、node.html.twigでは使用できません等.
ノードの前処理に同じロジックを実装できます。
function mytheme_preprocess_node(&$variables) {
if ($variables['node']->hasField('field_header') && $variables['node']->field_header->isEmpty()) {
$variables['myVariable'] = TRUE;
}
}