Creazione di un prodotto copertina per ogni categoria

Creazione attributo copertina:

Accedi al percorso di amministrazione Catalogo > Attributi > Gestione Attributi > Aggiungi nuovo attributo ed utilizza i seguenti dati:

  • Codice attributo -> featured
  • Ambito -> Vista negozio
  • Tipo di Input per il Catalogo per il Proprietario del Negozio -> Sì/No
  • Gestione etichette -> Default -> Copertina

Aggiungi blocco di configurazione al Catalogo:

Apri il percorso app/design/frontend/default/default/layout/catalog.xml ed aggiungi alla riga 73 il seguente codice:

<block type="catalog/product_featured" name="product_featured" as="product_featured"
template="catalog/product/featured.phtml"></block>

Responsabile dell’inserimento del blocco nelle pagine del catalogo.

Creazione nuovo blocco di classe che istanzierà il prodotto copertina:

Crea il percorso app/code/local/MyCompany/Catalog/Block/Product/Featured.php ed inserisci al suo interno il seguente codice:

<?php
class MyCompany_Catalog_Block_Product_Featured extends Mage_Catalog_Block_Product_Abstract
{
    public function getFeaturedProduct()
    {
        // instantiate database connection object
        $storeId = Mage::app()->getStore()->getId();    
        $categoryId = $this->getRequest()->getParam('id', false);
        $resource = Mage::getSingleton('core/resource');
        $read = $resource->getConnection('catalog_read');
        $categoryProductTable = $resource->getTableName('catalog/category_product');
        //$productEntityIntTable = $resource->getTableName('catalog/product_entity_int'); // doesn't work :(
        $productEntityIntTable = (string)Mage::getConfig()->getTablePrefix() . 'catalog_product_entity_int';
        $eavAttributeTable = $resource->getTableName('eav/attribute');
    
        // Query database for featured product
        $select = $read->select()
                       ->from(array('cp'=>$categoryProductTable))
                       ->join(array('pei'=>$productEntityIntTable), 'pei.entity_id=cp.product_id', array())
                       ->joinNatural(array('ea'=>$eavAttributeTable))
                       ->where('cp.category_id=?', $categoryId)
                       ->where('pei.value=1')
                       ->where('ea.attribute_code="featured"');
        
        $row = $read->fetchRow($select);
        return Mage::getModel('catalog/product')->setStoreId($storeId)->load($row['product_id']);
    }
}
?>

Questo blocco di operazioni si incarica di ricercare il prodotto indicato come copertina, scelto tra quelli associati alla categoria visualizzata attualmente sul sito.

Estensione classe catalogo

Crea il percorso app/code/local/MyCompany/Catalog/Block/Category/View.php ed inserisci al suo interno il seguente codice:

<?php
    class MyCompany_Catalog_Block_Category_View extends Mage_Catalog_Block_Category_View
    {
        public function getFeaturedProductHtml()
        {
            return $this->getBlockHtml('product_featured');
        }
    }
?>

Stiamo estendendo una classe del core, ma facendolo esternamente, non dovremo preoccuparci al momento dell’upgrade.

Configurazione di local.xml

Aggiorniamo ora l’xml generale, indicando i nuovi blocchi creati; apriamo il percorso app/etc/local.xml, aggiungendo questo codice all’interno della configurazione globale:

<blocks>
        <catalog>
            <rewrite>
                <product_featured>MyCompany_Catalog_Block_Product_Featured</product_featured>
           </rewrite>
            <rewrite>
                <category_view>MyCompany_Catalog_Block_Category_View</category_view>
            </rewrite>
         </catalog>
    </blocks>

Modifica dei templates

Ora dobbiamo inserire nei templates il codice appena creato; per farlo, modifichiamo il percorso app/design/frontend/default/default/template/catalog/category/view.phtml aggiungendo <? echo $this->getFeaturedProductHtml() ?> subito dopo <? echo $this->getProductListHtml() ?>

Ora siamo finalmente pronti per costruire il nostro blocco, creando il percorso app/design/frontend/default/default/template/catalog/product/featured.phtml, all’interno del quale potremo inserire ciò di cui necessitiamo, per esempio un link sul nome del prodotto copertina:

<?php $_product=$this->getFeaturedProduct() ?>
Prodotto copertina: <a href="<?php echo $_product->getProductUrl() ?>"><?php echo $this->htmlEscape($_product->getName()) ?></a>

Ma ovviamente potremo estrarre tutto ciò che possiamo dall’oggetto $_product e modificare la pagina inserendo HTML o modificando opportunamente il file CSS di Magento, rendendo più completo e gradevole il nostro blocco copertina.

Creazione prodotto copertina

Ora che Magento è pronto a visualizzare il blocco appena creato e configurato, sarà sufficiente scegliere per ogni categoria un prodotto copertina adeguato, avendo cura di indicare ‘Sì’ alla richiesta dell’attributo ‘Featured’. Questo prodotto verrà ora indicato nel blocco.

Aggiornamento cache

Se il blocco non viene inizialmente visualizzato, potrebbe essere un problema di cache: occorre pertanto aggiornarla attraverso l’apposita form presente in Sistema > Gestione cache.

0 commenti

Lascia un Commento

Vuoi partecipare alla discussione?
Sentitevi liberi di contribuire!

Lascia un commento