我正在使用以下代码对模板的变量进行预处理:
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变量已经存在,如果我只修改它,一切都可以正常工作。但是我需要在此处添加其他变量,因为我需要同一张图片的两种不同样式。但是,仅将这些变量添加到数组中是行不通的。
如果我使用来将Twig模板中的可用变量转储{{ dump(_context|keys) }}
,则看不到在其中添加的变量。如果我尝试在模板中使用它们,则不会插入任何内容。
我可以看到这些值已添加到数组中,当我在呈现整个字段的主题中转储图像变量时,我会在数组中看到变量。但是它们在渲染图像变量本身的模板中仍然不可用。
要在Twig模板中可以使用的预处理函数中添加变量,我还需要做什么?
我删除了空格,这实际上并不重要,无论有无空格,我都得到相同的结果。空格来自我从示例中复制的代码。
—
疯狂科学家
您是否重命名了功能?不应,
—
–othermachines
template_preprocess_imagegallery_format
但应使用主题或模块名称替换“模板”。您还需要清除缓存。
找到了几个很好的资源:Twig最佳实践-预处理功能和模板以及Theme系统概述。
—
–othermachines
$vars
和键(例如['image']
)之间有一个空格。我很确定这是不允许的。