Я использую следующий код для предварительной обработки переменных для моего шаблона:
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?
$vars
и вашими ключами (например['image']
). Я уверен, что это запрещено.template_preprocess_imagegallery_format
но шаблон должен быть заменен на вашу тему или название модуля. Вам также понадобится очистить кеш.Ответы:
Я наконец решил проблему, оказалось, что проблема заключалась в том, что я пытался добавить переменные в неправильный препроцессор. Редактирование #theme работает там, но для добавления переменных мне нужно было предварительно обработать тему, которую я там установил:
источник
Название темы: atvdirect
использовать {{logopath}} в page.html.twig
источник