Magento è costruito su un modello completamente modulare che dà grande scalabilità e flessibilità per il tuo negozio. Durante la creazione di un tema, si sono dotati di molti blocchi di contenuto che è possibile inserire in blocchi strutturali.

Magento offre alcuni blocchi strutturali di default e molti blocchi di contenuto. Questo articolo descrive che cosa si deve fare  per creare nuovo blocco strutturale personalizzato.


Cosa sono i blocchi strutturali?

Sono i blocchi capogruppo di blocchi di contenuto e servono per posizionare i suoi blocchi di contenuti all’interno di un contesto pagina del negozio. I blocchi strutturali magento di default sono i seguenti:

– Header

– Left column

– Right column

– Content

– Footer

Il nostro obiettivo è quello di creare un nuovo blocco strutturale chiamato “newreference”.

Fase 1 : il nome del blocco strutturale

Aprire il file di layout/page.xml nella cartella del tema attivo . All’interno troverete linee come :


<block type=”core/text_list” name=”left” as=”left”/>
<block type=”core/text_list” name=”content” as=”content”/>
<block type=”core/text_list” name=”right” as=”right”/>


Cerchiamo di imitare questo e aggiungere una nuova linea da qualche parte dentro lo stesso tag blocco .


<block type=”core/text_list” name=”newreference” as=”newreference”/>


Ora abbiamo definito a Magento il nuovo blocco strutturale con il nome di ” newreference ” .


Fase 2 : Dire a Magento dove posizionare il blocco

Andiamo nella cartella template/ page folder nella nostra cartella del tema attivo . Si notano diversi layout. Supponiamo che vogliamo che il nuovo blocco strutturale venga visualizzate solo nelle pagine che utilizzano il layout a 2 colonne con la barra laterale di destra . In tal caso dovremmo aprire il file  2columns-right.phtml.

Supponiamo che vogliamo collocare il blocco ” newreference ” sopra il footer di pagina . In questo caso , il nostro file aggiornato potrebbe essere il seguente :

<div class="main-container col2-right-layout">
            <div class="main">
                <?php echo$this->getChildHtml('breadcrumbs') ?>
                <div class="col-main">
                    <?php echo$this->getChildHtml('global_messages') ?>
                    <?php echo$this->getChildHtml('content') ?>
                </div>
                <div class="col-right sidebar"><?php echo$this->getChildHtml('right') ?></div>
            </div>
            <div><?php echo$this->getChildHtml('newreference') ?></div>
        </div>
Fase 3: Popolare il blocco strutturale

Abbiamo il blocco posizionato correttamente, ma ancora non si visualizza nulla sul frontend del sito. Dobbiamo popolare il nuovo blocco con qualcosa. Quindi creiamo un nuovo file

app/design/frontend/
[base]/[default]/template/newreference.phtml

con il seguente contenuto
:

<h1 style=”background-color:yellow”>Hello New Reference!</h1>
Ora si deve aprire l’appropriato file del layout XML (page.xml) e aggiungere questo blocco in un posto adeguato (a scopo di test è possibile inserirlo sotto il “default” handle).
<reference name=”newreference”>
<block type=”core/template” name=”newReferenceBlock” template=”newReference.phtml” />
</reference>
Ora visitando il sito sul frontend si dovrebbe vedere il contenuto del nuovo blocco strutturale.
Nota, è possibile includere qualsiasi blocco Magento in questo modo (non hai bisogno di includere il nostro appena creato:

<block type=”core/template” name=”newReferenceBlock” template=”newReference.phtml” />

Step 4: Aggiungi nuovo riferimento in modo corretto!

Per non modificare i file core di Magento. ripristiniamo i cambiamenti nella page.xml e si può creare il file local.xml.

All’interno del file local.xml inseriamo qualcosa di simile a questo:


<?xml version="1.0" encoding="UTF-8"?>
<layout>
    <default>
        <reference name="root">
            <block type="core/text_list" name="newreference" as="newreference" translate="label">
                <label>New Reference</label>
            </block>
        </reference>
        <reference name="newreference">
            <block type="core/template" name="newreferenceblock" template="newreference.phtml" />
        </reference>
    </default>
</layout>