Infocurci - programmatore Php Roma
Infocurci - programmatore Php Roma
Questo sito non lascia nessun cookie sul vostro pc, consuma pochissimi kb, non profila nulla e non raccoglie dati personali. Siete i benvenuti.

Magento : Come creare un blocco

Oggi vi regalo un tutorial grazie al quale potrete creare dei blocchi personalizzati per Magento. Dal pannello di amministrazione di Magento (CMS) sarà possibile usare questi blocchi passando anche dei parametri, così da poterli personalizzare senza toccare più il codice!

Magento

Oggi vi spiegherò come creare un blocco per Magento, con un proprio layout e personalizzabile con dei parametri passati attraverso il pannello di amministrazione del CMS. In questo modo potrete rilasciare ai vostri clienti un comodo sistema di personalizzazione, ad esempio per poter pubblicare in home page un blocco con un'offerta speciale. Il tutto richiede appena 6, brevissimi, files. 

1) creiamo il codice php del blocco.

Creiamo nella directory di lavoro (nel mio caso, app/code/local/Infocurci/Prodottohome) una sottodirectory Block e dentro salviamo il file Prodottohome.php, con questo semplice contenuto:

<?php
    class Infocurci_Prodottohome_Block_Prodottohome extends Mage_Core_Block_Template
    {
        protected function _construct()
    {
        parent::_construct();
    }
   
        public function _prepareLayout()
        {
            return parent::_prepareLayout();
        }
       
        public function getProductData()
        {
            $_product = Mage::getModel('catalog/product')->load($this->getData('prodotto'));
            $priceIncludingTax = Mage::helper('tax')->getPrice($_product, $_product->getPrice());
            return array('nome'=>$_product->getName(),'prezzoOriginale'=>$_product->getPrice(),'prezzoPromo'=>$_product->getFinalPrice(),'url'=>$_product->getProductUrl(),'thumb'=>(string)Mage::helper('catalog/image')->init($_product, 'image')->resize(190));
        }
    }

 

2) la configurazione del blocco

Dentro app/code/local/Infocurci/Prodottohome/etc, creiamo il consueto config.xml nel quale è sufficiente indicare il file del blocco (appena creato) e il file di aggiornamento del layout, che ci servirà per includere il css:

<?xml version="1.0"?>
<config>
    <modules>
        <Infocurci_Prodottohome>
            <version>0.1.0</version>
        </Infocurci_Prodottohome>
    </modules>
    <global>
        <blocks>
            <prodottohome>
                <class>Infocurci_Prodottohome_Block</class>
            </prodottohome>
        </blocks>
    </global>
    <frontend>
        <layout>
            <updates>
                <prodottohome>
                    <file>prodottohome.xml</file>
                </prodottohome>
            </updates>
        </layout>
    </frontend>
</config>

 

3) aggiornamento del layout

Dentro app/design/frontend/base/default/layout inseriamo il file prodottohome.xml che abbiamo appena inserito nel file di configurazione. Dentro va inserita soltanto l'indicazione per aggiungere il css:

<?xml version="1.0" encoding="UTF-8"?>
<layout version="0.1.0">
    <default>
        <reference name="head">
            <action method="addCss"><name>css/prodottohome.css</name></action>
        </reference>
    </default>
</layout>

 

4) il template

Ecco il file del template (app/design/frontend/base/default/template/prodottohome/prodottohome.phtml):

<?php
    $product =  $this->getProductData();
?>
<div class="prodottoHome_container" >
    <div class="prodottoHome_divInternal">
        <div class="prodottoHome_name"><?php echo $product['nome'];?></div>
        <?php
            if($product['prezzoOriginale'] != $product['prezzoPromo']){
                ?>
                A soli <span id="bannerPrice"><?php echo number_format($product['prezzoPromo'],2,',','.');?> €</span>
                anzichè
                <span id="bannerPriceOld"><?php echo number_format($product['prezzoOriginale'],2,',','.');?> €</span>
            <?php
            }
            else{
                ?>
                <span id="bannerPrice"><?php echo number_format($product['prezzoOriginale'],2,',','.');?> €</span>
                <?php
            }
        ?>
        <br /><a href="<?php echo $product['url'];?>">Scopri l'offerta!!!</a>
    </div>
    <div style="padding-top:5px;">
        <img src="<?php echo $product['thumb'];?>" class="prodottoHome_image" />
    </div>
</div>

5) il css

Ovviamente si tratta di un file (skin/frontend/base/default/css/prodottohome.css) da personalizzare secondo quanto appena inserito nel template, nel mio caso è cosi:

.prodottoHome_container{
    width:900px;
    height:200px;
    background-image:url(../images/sfondo-banner-home.png);
}
.prodottoHome_divInternal{
    padding-left:20px;
    padding-top:70px;
    float:left;
    width:700px;
}
.prodottoHome_name{
    font-family:georgia;
    font-size:40px;
    color:#0085B5;
}
.prodottoHome_image{
    border: solid 1px #FFCFA6;
}

Visto che ho voluto inserire uno sfondo, ho anche creato un png chiamato "sfondo-banner-home.png" e l'ho inserito dentro skin/frontend/base/default/images.

6) attivazione

dentro app/etc/modules non dimentichiamo di attivare il nostro modulo, nel mio caso il file è Infocurci_Prodottohome.xml

<?xml version="1.0"?>
<config>
  <modules>
    <Infocurci_Prodottohome>
      <active>true</active>
      <codePool>local</codePool>
      <version>0.1.0</version>
    </Infocurci_Prodottohome>
  </modules>
</config>

7) Creiamo il blocco

Dentro il menù di amministrazione di Magento, voce "Cms" scegliamo "pages" e quindi "Home page". A sinistra nella tab "Content" inseriamo il codice del blocco:

{{block type="prodottohome/prodottohome" template="prodottohome/prodottohome.phtml" prodotto="2"  }}

dove "prodotto" corrisponde all'id numerico di un qualsiasi prodotto del nostro catalogo.

Ed ecco il risultato finale: