Certains des modules natifs de Magento ne correspondent peut-être pas à 100% aux besoins de votre projet, vous aurez alors sûrement besoin de modifier le comportement d’un block, helper, model ou controller de l’un ou plusieurs de ces modules. Voici un petit tutoriel pour vous expliquer comment faire.
Pour notre exemple nous surchargerons un block, un helper, un model et un controller du module Mage_Catalog de Magento. Cette surcharge sera faite dans un nouveau module Sample_Catalog.
Surcharger un Block
Nous allons surcharger le block « catalog/product_list ».
Allez dans le fichier config.xml de votre module et ajoutez-y les lignes suivantes :
<?xml version="1.0" encoding="UTF-8"?> <config> <modules> <Sample_Catalog> <version>0.1.0</version> </Sample_Catalog> </modules> <global> <blocks> <catalog> <rewrite> <product_list>Sample_Catalog_Block_Product_List</product_list> </rewrite> </catalog> </blocks> </global> </config>
Créez le fichier « app/code/local/Sample/Catalog/Block/Product/List.php » avec le contenu suivant :
/** * Product list * * @category Sample * @package Sample_Catalog * @author Nicolas Verhoye <contact@nicolas-verhoye.com> */ class Sample_Catalog_Block_Product_List extends Mage_Catalog_Block_Product_List { }
Surcharger un Helper
Nous allons surcharger le helper « catalog/category ».
Allez dans le fichier config.xml de votre module et ajoutez-y les lignes suivantes :
<?xml version="1.0" encoding="UTF-8"?> <config> <modules> <Sample_Catalog> <version>0.1.0</version> </Sample_Catalog> </modules> <global> <helpers> <catalog> <rewrite> <category>Sample_Catalog_Helper_Category</category> </rewrite> </catalog> </helpers> </global> </config>
Créez le fichier « app/code/local/Sample/Catalog/Helper/Category.php » avec le contenu suivant :
/** * Catalog category helper * * @category Sample * @package Sample_Catalog * @author Nicolas Verhoye <contact@nicolas-verhoye.com> */ class Sample_Catalog_Helper_Category extends Mage_Catalog_Helper_Category { }
Surcharger un Model
Nous allons surcharger le model « catalog/product ».
Allez dans le fichier config.xml de votre module et ajoutez-y les lignes suivantes :
<?xml version="1.0" encoding="UTF-8"?> <config> <modules> <Sample_Catalog> <version>0.1.0</version> </Sample_Catalog> </modules> <global> <models> <catalog> <rewrite> <product>Sample_Catalog_Model_Product</product> </rewrite> </catalog> </models> </global> </config>
Créez le fichier « app/code/local/Sample/Catalog/Model/Product.php » avec le contenu suivant :
/** * Catalog product model * * @category Sample * @package Sample_Catalog * @author Nicolas Verhoye <contact@nicolas-verhoye.com> */ class Sample_Catalog_Model_Product extends Mage_Catalog_Model_Product { }
Surcharger un controller
Nous allons surcharger le controller « ProductController ».
Allez dans le fichier config.xml de votre module et ajoutez-y les lignes suivantes :
<?xml version="1.0" encoding="UTF-8"?> <config> <modules> <Sample_Catalog> <version>0.1.0</version> </Sample_Catalog> </modules> <frontend> <routers> <catalog> <args> <modules> <Sample_Catalog before="Mage_Catalog">Sample_Catalog</Sample_Catalog> </modules> </args> </catalog> </routers> </frontend> </config>
Créez le fichier « app/code/local/Sample/Catalog/controllers/ProductController.php » avec le contenu suivant :
/** * Product controller * * @category Sample * @package Sample_Catalog * @author Nicolas Verhoye <contact@nicolas-verhoye.com> */ require_once(Mage::getModuleDir('controllers','Mage_Catalog').DS.'ProductController.php'); class Sample_Catalog_ProductController extends Mage_Catalog_ProductController { }