Come funzionano i layouts
Il Layout è un componente virtuale di Magento. Modificando i componenti layout puoi costruire la tua pagina del negozio dinamicamente aggiornabile.
Diagramma 1

Il Layout è compreso dal layout di default e aggiornamenti di layout che sono costituiti da una semplice sintassi XML molto facile da capire.
Con questi comandi di layout potrai modificare ed assegnare dei blocchi strutturali o di relazione e anche controllare le funzionalità del negozio lato utente ( come ad es: la visualizzazione di un specifico blocco di javascript in una pagina).
I files di Layout sono separati a seconda della loro funzionalità, ogni modulo porta con sè i suoi file di configurazione di layout (per l’istanza ‘catalog.xml’ c’è un file di layout per il modulo catalogo, ‘customer.xml’ è per il modulo costumer…etc).
Questi files di layout sono presenti in app/design/frontend/tua_interfaccia/tuo_tema/layout/ e ogni file è ulteriormente separato da handles (vedi il diagramma 1), ogni handle (con l’eccezione di <default>) assegna degli aggiornamenti nella specifica pagina del negozio.
Alcuni file di configurazione possono contenere l’handle <default>.
Quando Magento analizza i files di layout prima prende gli aggiornamenti di layout assegnati nell’handle di <default> di quasi tutti i files di configurazione, leggendoli nell’ordine di assegnazione impostato in app/etc/modules/Mage_All.xml.
Analizza quindi la pagina specifica con gli aggiornamenti di layout e finalizza la costruzione della pagina del negozio.
Il sistema è stato creato in questo modo per permettere l’aggiunta e la rimozione di moduli senza influenzare gli altri moduli già presenti nel sistema.
Anatomia del Layout
Il layout contiene un piccolo set di tags XML che fungono da istruzioni dettagliate per l’applicazione su come costruire una pagina, su cosa costruire nella stessa pagina (blocchi) e il comportamento di ciascun blocco di costruzione.
Il miglior modo per approcciarsi al layout è quella di considerare tutte le possibilità di visualizzazione nel nostro template. Per poter fare questo, di seguito alcune proprietà comportamentali di ogni tag dello schema XML_
Handle
Handle (diagramma 1) è un identificatore tramite il quale l’applicazione determina cosa dovrà fare con gli aggiornamenti nidificati al suo interno.
Se il nome dell’handle è <default>, allora l’appicazione saprà che gli aggiornamenti nidificati al suo interno dovranno essere caricati su tutte le pagine del negozio prima di caricare il layout specifico per quella pagina (Diciamo ‘quasi tutti’, perché alcune pagine come il popup per l’immagine del prodotto non viene caricato)
Se Magento trova altri handles diversi da <default>, saranno assegnati gli aggiornamenti nidificati al suo interno alla pagina specifica definita nell’handle.
L’istanza, <catalog_product_view> conterrà gli aggiornamenti di layout per la Pagina di visualizzazione dei prodotti, mentre l’istanza <catalog_product_compare_index> conterrà quelli per la pagina di comparazione dei prodotti.
Gli Handles sono identificatori che non dovrebbero mai essere necessari modificare.
<block>
Magento determina il comportamento e la rappresentazione visiva di ogni blocco di costruzione di una pagina tramite l’etichetta <block>.
Abbiamo già citato i due tipi di blocchi che Magento impiega – blocchi strutturali e blocchi di contenuto. Il miglior modo di distinguere tra i due è quello di esaminare il comportamento assegnato visualizzando gli attributi del blocco. Il blocco strutturale solitamente contiene l’attributo ‘as’ attraverso il quale l’applicazione potrà comunicare con l’area designata (attraverso il metodo getChildHtml) in un template.
Ci sono molti altri usi di questo attributo ‘as’ nel layout di default perchè questo layout è nato per “costruire il terreno di lavoro” sul quale si baserà la pagina specifica di layout che poi andrà a definire moduli da aggiungere o togliere.
Per l’istanza nel layout di default ci sono dei blocchi strutturali quali ‘left‘, ‘right‘, ‘content‘ e ‘footer‘. Non per dire che questi blocchi non possono esistere negli aggiornamenti di layout ma perchè non settarli nel default layout in quanto sono blocchi ricorsivi in tutte le pagine?
Vediamo ora gli attributi visualizzabili per l’etichecca <block>.
- type – Questo è l’identificatore del modulo di classe che definisce le funzionalità del blocco. Questo attributo non può essere modificato.
- name – Questo è il nome con cui gli altri blocchi possono fare riferimento al blocco in cui questo attributo viene assegnato (vedi figura 3).
- before (e) after – Questi sono due modi per posizionare un blocco di contenuto all’interno di un blocco strutturale. before = “-” e after = “-” sono i comandi utilizzati per posizionare il blocco di conseguenza al molto superiore o molto inferiore di un blocco strutturale.
- template – Questo attributo determina il modello che rappresenterà la funzionalità di blocco in cui questo attributo è stato assegnato. Ad esempio, se questo ha come attributo ‘
catalog/category/view.phtml’, l’applicazione caricherà il file di template: ‘app/design/frontend/template/catalog/category/view.phtml.
- action – <action> è utilizzato per controllare funzionalità del negozio quali operazioni di carico o di scarico di un Javascript. Un elenco completo dei metodi d’azione diventerà ben presto disponibile.
- as – Questo è il nome tramite il quale un template richiama il blocco nel quale l’attributo è assegnato. Quando vedi getChildHtml(’block_name’) un metodo PHP richiamato dal template, puoi stare sicuro che si stà riferendo al blocco dove l’attributo ‘as’ è assegnato al nome ‘block_name’.
(es: Il metodo <?=$this->getChildHtml(’header’)?>
nello scheletro del template è correlato a: <block as=“header”> )
<reference>
Diagramma 3

<reference> è usato per creare un riferimento ad un’altro blocco. Creando una referenza ad un’altro blocco, gli aggiornamenti interni all’etichetta <reference> saranno applicati all’etichetta correlata <block> (vedi diagramma 3).
Al fine di creare il riferimento dovrai etichettare il riferimento usando l’attributo nome che si riferisce all’attributo nome del blocco. Es: <reference name=”right”> si riferirà al blocco <block name=”right”>.
Ruoli dell’XML
Diagramma 4

L’unica cosa che bisogna ricordarsi nel settare un file XML è quando un tag viene aperto bisogna chiuderlo in questo modo (<xml_tag></xml_tag>) oppure (<xml_tag/>) esattamente come vuole lo standard (X)HTML.
Share on Facebook