Donc, grâce à 4k4, j'ai finalement réussi à obtenir mon URI d'image d'origine dans un modèle de champ via
item.content['#item'].entity.uri.value
et avec
{{ file_url(item.content['#item'].entity.uri.value) }}
J'obtiendrais l'url du fichier d'origine.
J'ai les informations de style d'image via
item.content['#item']['#image-style']
ce «moyen» est demandé
Une solution PHP est déjà disponible ici , mais comment faire cela dans TWIG?
Il y a quelques tentatives de création d'un filtre pour 8.1 ici - mais cela ne m'aide pas pour le moment.
Réponses:
Vous pouvez mettre le code php dans la fonction de prétraitement du modèle de champ. Vous avez toutes les informations dont vous avez besoin dans votre question.
Mais alors vous feriez du codage, c'est déjà en drupal. Si vous avez défini # style d'image dans l'élément de rendu d'image, le champ image doit être configuré pour les fonctions de prétraitement qui viendront plus tard dans les modèles de formatage d'image et de style d'image pour placer l'attribut src approprié dans les variables de
image-style.html.twig
. Vous pouvez donc utiliser le code qui existe déjà en remplaçant ce modèle.Voir le code dans /core/module/image/image.module:
la source
<img>
mais en tant qu'image d'arrière-plan en ligne. Actuellement, je reçois soit l'image correcte avec le style en tant que<img>
ou le chemin du fichier d'origine qui est beaucoup trop gros à utiliser sur une connexion non large bande - je veux donc simplement obtenir le chemin vers celui sous-échantillonné. Et je ne veux pas remplacer tous les rendus d'image, juste le seul champ. Bien sûr, je pourrais câbler le chemin vers le style, car je connais le nom de fichier d'origine - mais ce serait mauvais.J'avais juste besoin de faire ça aussi. La bonne approche consiste ici à stocker l'URL de l'image de l'image stylisée dans une variable (via une fonction de prétraitement), puis cette variable sera disponible dans votre fichier de brindille.
J'ai écrit une fonction qui obtiendra n'importe quel fichier field_image et renverra le nom de fichier d'origine, ou si vous spécifiez un nom de style, il renverra l'URL de l'image stylisée.
Dans mon
.theme
dossier:Maintenant dans mon fichier de brindilles (node.html.twig, puisque j'ai utilisé la fonction preprocess_node):
Cette fonction
_var_image_url()
doit être appelée à partir de laTHEME_preprocess_node()
fonction car elle attend une certaine configuration dans le premier$vars
argument. Si vous essayez de l'appeler depuispreprocess_page
, vous devrez le modifier.la source