Les blocks et les helpers
L'attribut block de l'ajout d'un bloc
Lors de l'ajout d'un bloc dans un layout :
<block type="core/template" name="mon_block" template="mon/block.phtml" />
Le type désigne l'appel de la classe qui alimente le template.
Ainsi core/template désigne la classe Mage_Core_Block_Template. Le type core/template est le type de block par défaut de Magento.
Plus généralement, un layout qui ajoute un block de type module/monblock fera donc appel à la classe Namespace_Module_Block_Monblock.
Cette classe se trouve dans app/code/<codePool>/Namespace/Module/Block/Monblock.php.
Convention de nommage Zend
Une classe qui se trouve dans une arborescence a son nom de classe représenté par les noms des dossiers parents séparés par des underscores.
TP - Afficher le prix d'un produit sur la home
Pour cet exemple, nous allons charger un produit directement (à ne jamais faire !)
<?php $_product = Mage::getModel('catalog/product')->load($id) ?>
Utilisation d'un helper
Appel classique d'un helper :
<?php echo Mage::helper('checkout/url')->getCartUrl() ?>
Nous appelons ici la méthode getCartUrl() du helper checkout/url, qui correspond à la classe Mage_Checkout_Helper_Url.
Si seul le module est indiqué :
<?php echo Mage::helper('checkout')->formatPrice(10) ?>
Cela appelle par défaut le helper data (ici la classe Mage_Checkout_Helper_Data).
Chaque module que nous créerons devra avoir le helper par défaut
Data.
Appel à la fonction de traduction
Dans un block / helper :
<?php echo $this->__('Hello') ?>
Il faut ensuite ajouter la traduction dans le fichier app/design/frontend/notre_interface/default/locale/fr_FR/translate.csv.
"Text in english","Texte en français"
Pourquoi est-il possible d'appeler cette même fonction de traduction dans un template phtml ?
TP - Récapitulatif
Dans le footer, recréer un "mini-cart" de la forme "Mon panier (6 items - 2 articles différents). Nous n'afficherons pour le moment pas le total dans le panier.
Attention à la traduction !
Formation Magento Developpeur
Magento 1.X