Sometimes we need to change the default behaviour of Magento, such as changing the behavior of a block to display a little more information than now. In this tutorial we will see how to change a native magento block.
When one wants to do this kind of change, it is better to keep in mind one of the basic rules of magento development (careful if I make an exam... it will fall !! xD): DO NOT change the core of magento.... NEVER
Forget the idea of directly editing the files in /app/code/core.
Instead, we will override the Block
you want to change.
So create a class which extend the core Block
and rewrite only the part you want to change
. Then, to be able to use it declare our new class in the config.xml
1- Start by recreating a module in your Pfay folder named MyProduct
So create the folder: /app/code/local/Pfay/MyProduct
With etc/config.xml file and be sure to first create the file Pfay_Myproduct.xml
2- Create the "modified" block
What interests us is to rewrite the block Mage_Catalog_Block_Product_View
. We want to rewrite the method hasRequiredOptions
to always returns TRUE.
So we will create in /app/code/local/Pfay/MyProduct/Block/Product
/ a View.php
Which will contain:
class Pfay_Myproduct_Block_Product_View extends Mage_Catalog_Block_Product_View
* Check if product has required options
* @return bool
public function hasRequiredOptions()
Note that our new block is actually defined as usual when we create a block except that extend this one extends : Mage_Catalog_Block_Product_View
3- Tell Magento to consider the new version of the Block Edit the config.xml
of your module MyProduct like this:
With these tags, you tell Magento that the block whith the code for "catalog/product_view" (Mage_Catalog_Block_Product_View) will be replaced by Pfay_Myproduct_Block_Catalog_Product_View.
He will then take our new Block instead of the native one.
The behavior of our method is changed but we do not lose the other methods of the block thanks to the extends
of the native magento block.
There you go ! You know now how to rewrite a block ;)
As usual, feel free to ask questions and if that does not work for you download the code to compare it with yours.