Так что благодаря 4k4 мне наконец удалось получить исходный URI изображения в шаблоне поля через
item.content['#item'].entity.uri.value
и с
{{ file_url(item.content['#item'].entity.uri.value) }}
Я бы получил URL оригинального файла.
У меня есть информация о стиле изображения через
item.content['#item']['#image-style']
этот «средний» запрашивается
Решение PHP уже доступно здесь , но как мне сделать это в TWIG?
Есть несколько попыток создания фильтра для 8.1 здесь - но это мне не помогает в настоящее время.
Ответы:
Вы можете поместить код php в функцию предварительной обработки шаблона поля. У вас есть вся необходимая информация в вашем вопросе.
Но тогда вы бы занялись кодированием, это уже в друпале. Если вы установили # image-style в элементе рендеринга изображения, то поле изображения должно быть сконфигурировано для функций предварительной обработки, которые появятся позже в шаблонах форматирования изображения и стиля изображения, чтобы в атрибутах для них был установлен правильный атрибут src
image-style.html.twig
. Таким образом, вы можете использовать уже существующий код, переопределив этот шаблон.Смотрите код в /core/module/image/image.module:
источник
<img>
встроенный стиль фона. В настоящее время я получаю правильное изображение со стилем как<img>
или исходный путь к файлу, который слишком велик для использования в неширокополосном соединении - так что я просто хочу получить путь к уменьшенной выборке. И я не хочу отменять все рендеры изображений, только одно поле. Конечно, я мог бы взломать путь к стилю, так как я знаю оригинальное имя файла - но это было бы плохо.Мне просто нужно было это сделать. Правильный подход заключается в том, чтобы сохранить URL-адрес изображения стилизованного изображения в переменной (с помощью функции предварительной обработки), и тогда эта переменная будет доступна в вашем файле ветки.
Я написал функцию, которая получит любой файл field_image и вернет оригинальное имя файла, или, если вы укажете имя стиля, он вернет URL стилизованного изображения.
Внутри моего
.theme
файла:Теперь в моем файле ветки (node.html.twig, так как я использовал функцию preprocess_node):
Эта функция
_var_image_url()
должна вызываться изTHEME_preprocess_node()
функции, потому что она ожидает определенной установки в первом$vars
аргументе. Если вы попытаетесь позвонить с негоpreprocess_page
, вам нужно будет изменить его.источник