Twig Media: come ricavare i campi Media in Drupal

Se in un template Twig (Drupal 8 o superiore) vogliamo trovare i campi relativi al media basta seguire le semplici istruzioni sotto.

Ipotizziamo di esser in un template e che "node" restituisca il nodo attuale e che “fieldname” sia il nome (il machine name) del campo da analizzare.

Se il campo è multiplo bisognerà considerare l'elemento giusto dell'array che lo definisce. Qui prendiamo in considerazione solo il primo elemento e cioè l'elemento 0 del suo array.

{# mid.value: restituisce il media id #}
{{ node.fieldname[0].entity.mid.value }}
{# bundle(): restituisce il bundle ovvero il nome del Media type #}
{{ node.fieldname[0].entity.bundle() }}
{# name.value: restituisce il nome del campo Media #}
{{ node.fieldname[0].entity.name.value }}

Per trovare il campo predefinito (field_media_image) dal Media Type "Image" usiamo:

{{ node.fieldname[0].entity.field_media_image }}

Questo campo è un oggetto di tipo “ImageItem” che come classe estende sia FileItem che EntityReferenceItem. Quindi ha delle proprietà in più rispetto ad entrambi.

Ricaviamo quindi:

{# alt: restituisce il testo alternativo #}
{{ node.fieldname[0].alt }}
{# title: restituisce il titolo dell'immagine #}
{{ node.fieldname[0].title }}
{# width: restituisce la larghezza in pixel dell'immagine #}
{{ node.fieldname[0].width }}
{# height: restituisce l'altezza in pixel dell'immagine #}
{{ node.fieldname[0].height }}

Mentre per i dati relativi al file immagine usiamo:

{# getFilename(): restituisce il nome del file #}
{{ node.fieldname[0].entity.getFilename() }}
{# getFileUri(): restituisce l'uri interno (public://2021-01/test.txt o private://2021-01/test.txt) #}
{{ node.fieldname[0].entity.getFileUri() }}
{# getMimeType(): restituisce il mime type #}
{{ node.fieldname[0].entity.getMimeType() }}
{# getSize(): restituisce la dimensione in byte #}
{{ node.fieldname[0].entity.getSize() }} {# file_url(): restituisce l'url relativo alla base url del sito #}
{{ file_url(node.fieldname[0].entity.getFileUri()) }}

Per maggiori informazioni vedere l'articolo completo sul come estrarre i dati di un campo Media o su un altro con Twig su Drupal 8.

riferimenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

7 + = 16