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.