次のコードを使用して、テンプレートの変数を前処理しています。
function template_preprocess_imagegallery_format(&$vars) {
template_preprocess_image_formatter($vars);
$vars['image']['#theme'] = 'igimage';
$vars['image']['#thumbnail'] = ImageStyle::load('thumbnail')->buildUrl($vars ['image']['#uri']);
$vars['image']['#fullimage'] = file_create_url($vars ['image']['#uri']);
}
#uri変数はすでに存在しており、変更するだけですべて正常に動作します。ただし、同じ画像の2つの異なるスタイルが必要なため、ここに変数を追加する必要があります。ただし、これらの変数を配列に追加するだけでは機能しません。
Twigテンプレートで使用可能な変数をでダンプした場合{{ dump(_context|keys) }}
、そこに追加した変数が表示されません。テンプレートでそれらを使用しようとすると、何も挿入されません。
値が配列に追加されていることがわかります。フィールド全体をレンダリングするテーマに画像変数をダンプすると、配列に変数が表示されます。ただし、画像変数自体をレンダリングするテンプレートではまだ使用できません。
Twigテンプレートで使用できる変数をプリプロセス関数に追加するには、他に何が必要ですか?
スペースを削除しました。それは実際には問題ではなく、スペースの有無にかかわらず同じ結果が得られます。スペースは、例からコピーしたコードからのものです。
—
マッドサイエンティスト
関数の名前を変更しましたか?そうではありませんが
—
othermachines
template_preprocess_imagegallery_format
、「テンプレート」はテーマまたはモジュール名に置き換える必要があります。また、キャッシュをクリアする必要があります。
いくつかの優れたリソースを見つけました。Twigのベストプラクティス-前処理機能とテンプレート、テーマシステムの概要。
—
othermachines
$vars
とキーの間にはスペースがあります(例:)['image']
。それは許されないと確信しています。