Reading list Switch to dark mode

    Overriding Block, Model, Controller in Magento2

    Updated 16 July 2021

    Here we will learn overriding blocks, models and controllers in magento2.

    Overriding Block

    Lets override catalog product ListProduct block. 

    #1 – First of all create di.xml file in Folder Webkul/Hello/etc

    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    	<preference for="Magento\Catalog\Block\Product\ListProduct" type="Webkul\Hello\Block\Rewrite\Product\ListProduct" />
    </config>
    
    
    

    #2 – Now create ListProduct.php Block file in Folder Webkul/Hello/Block/Rewrite/Product

    <?php
    	/**
    	 * Hello Rewrite Product ListProduct Block
    	 *
    	 * @category    Webkul
    	 * @package     Webkul_Hello
    	 * @author      Webkul Software Private Limited
    	 *
    	 */
    	namespace Webkul\Hello\Block\Rewrite\Product;
    
    	class ListProduct extends \Magento\Catalog\Block\Product\ListProduct
    	{
    		public function _getProductCollection()
    		{
    			// Do your stuff here
    		}
    	}
    

    You can override other blocks using same approach.

    Overriding Model

    Lets override catalog product model. 

    #1 – First of all create di.xml file in Folder Webkul/Hello/etc

    Searching for an experienced
    Magento 2 Company ?
    Find out More
    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
     <preference for="Magento\Catalog\Model\Product" type="Webkul\Hello\Model\Rewrite\Catalog\Product" />
    </config>
    
    
    

    #2 – Now create Product.php Model file in Folder Webkul/Hello/Model/Rewrite/Catalog

    <?php
    	/**
    	 * Hello Catalog Product Rewrite Model
    	 *
    	 * @category    Webkul
    	 * @package     Webkul_Hello
    	 * @author      Webkul Software Private Limited
    	 *
    	 */
    	namespace Webkul\Hello\Model\Rewrite\Catalog;
    
    	class Product extends \Magento\Catalog\Model\Product
    	{
    		public function isSalable()
    		{
    			// Do your stuff here
    			return parent::isSalable();
    		}
    
    	}

    You can override other models using same approach.

    Overriding Controller

    Lets override product view controller. 

    #1 – First of all create di.xml file in Folder Webkul/Hello/etc

    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    	<preference for="Magento\Catalog\Controller\Product\View" type="Webkul\Hello\Controller\Rewrite\Product\View" />
    </config>
    
    
    

    #2 – Now create View.php Controller file in Folder Webkul/Hello/Controller/Rewrite/Product

    <?php
    	/**
    	 * Hello Rewrite Product View Controller
    	 *
    	 * @category    Webkul
    	 * @package     Webkul_Hello
    	 * @author      Webkul Software Private Limited
    	 *
    	 */
    	namespace Webkul\Hello\Controller\Rewrite\Product;
    
    	class View extends \Magento\Catalog\Controller\Product\View
    	{
    		/**
    		 * @return \Magento\Framework\Controller\Result\Redirect|\Magento\Framework\View\Result\Page
    		 */
    		public function execute()
    		{
    			// Do your stuff here
    			return parent::execute();
    		}
    	}
    

    You can override other controllers using same approach.

    . . .

    Leave a Comment

    Your email address will not be published. Required fields are marked*


    18 comments

  • Kamlesh Kumar Jha
    • Webkul Support
  • Maha
    • Webkul Support
      • Maha
        • Webkul Support
  • Nilay Chaudhari
    • Webkul Support
  • Manadir
  • Jaimin
  • Michele Fantetti
  • Rafael Corrêa Gomes ♛
  • Attila Attila
  • Ankit Shah
  • mac
  • ND
    • Zuko
      • Rahul
  • Back to Top

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home