J'implémente un modèle de nœud qui utilise une image deux fois; une fois de manière «normale» (c'est-à-dire en utilisant le style d'image défini dans la configuration d'affichage du champ pour ce mode d'affichage), et l'autre est une propriété d'arrière-plan css.
J'ai besoin de deux choses:
(idéalement) un moyen d'obtenir l'URL pour un style d'image différent de la même image.
un moyen d'obtenir l'URL du champ d'image.
J'ai du mal à utiliser dump()
et kint()
à m'aider à trouver une réponse. Ils produisent tous les deux beaucoup trop (grâce aux liens intégrés vers "parent", etc.) et semblent ne pas avoir les informations dont j'ai besoin. Par exemple, en regardant la dump(content.field_image)
sortie, l'URL réelle de l'image n'est pas là (alors d'où vient-elle de telle sorte qu'elle puisse être rendue avec {{ content.field_image }}
?!). kint()
d'un autre côté, il meurt complètement si je lui passe un argument et que la version de haut niveau est encore beaucoup trop grande pour pouvoir naviguer. Le débogage était tellement plus facile avec phptemplate + xdebug. (Oui, je sais que c'est bien que les utilisateurs ne puissent pas supprimer la base de données.)
Il y a une réponse à (1) qui implique que vous ne pouvez pas le faire , mais je ne comprends pas pourquoi je ne peux pas obtenir l'URL existante dans (2)?
La première partie est déjà répondue dans la question liée, où il y a le code pour le faire. Pour répondre à la deuxième partie de la question, vous pouvez accéder à l'image d'origine dans l'objet nœud:
Une remarque sur
content
:Dans un modèle de nœud, le champ d'image dans
content
n'est pas prêt à être rendu. Le champ contient la configuration de son affichage et l'objet champ qui contient toutes les données brutes. Plus tard, cela sera mis en place sur le terrain, le formateur d'image et les modèles d'image. C'est la raison pour laquelle vous ne trouvez pas l'URL que vous recherchezcontent
à ce stade.Dans le modèle de nœud, vous pouvez utiliser les champs au niveau supérieur du tableau de contenu, par exemple afficher le champ d'image
tel que configuré dans le mode d'affichage.
Éditer:
Il y a un nouveau filtre dans le module Twig Tweak . Vous pouvez maintenant générer l'URL de style d'image en brindille directement à partir d'un uri ou d'une URL de l'image d'origine:
la source
{{ content.field_image }}
et pas avant? En outre, je pense que l'URL que je vais obtenir de votre suggestion est l'URL d'origine - la partie 2 de mon Q demandait l'URL du style d'image, comme le configure le mode d'affichage. Est-ce possible?.entity
deux fois, d'abord pour accéder à l'entité et ensuite pour l'image.{{ node.field_ref.entity.field_image.entity.uri.value }}
Installez le module Twig Tweak https://www.drupal.org/project/twig_tweak
Et ce module Twig Field https://www.drupal.org/project/twig_field_value
Si vous utilisez des images de champ de téléchargement d'images régulières, utilisez-les dans votre modèle de nœud:
Si vous utilisez l'image de référence d'entité, utilisez ceci:
la source
image
aprèsfield_target_entity
fait référence au champ d'image sur l'entité référencée. Vous devrez peut-être l'ajuster.file_url(node.field_image.entity.field_referenced_image.entity.uri.value | image_style('thumbnail'))