有两个步骤可以覆盖块,模型和控制器文件
1)在di.xml中添加替代首选项
2)在模块中创建块,模型和控制器文件
命名空间:Prince
模块名称:Helloworld
用于覆盖目录产品ListProduct块。
1)在Prince / Helloworld / etc文件夹中创建di.xml文件
<?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="Prince\Helloworld\Model\Rewrite\Catalog\Product" />
</config>
Run Code Online (Sandbox Code Playgroud)
2)在文件夹Prince / Helloworld / Block / Rewrite / Product中创建ListProduct.php阻止文件
<?php
namespace Prince\Helloworld\Block\Rewrite\Product;
class ListProduct extends \Magento\Catalog\Block\Product\ListProduct
{
public function _getProductCollection()
{
// Do your code here
}
}
Run Code Online (Sandbox Code Playgroud)
用于替代目录产品型号。
1)在之前在di.xml中添加首选项
<preference for="Magento\Catalog\Model\Product" type="Prince\Helloworld\Model\Rewrite\Catalog\Product" />
Run Code Online (Sandbox Code Playgroud)
2)在文件夹Prince / Helloworld / Model / Rewrite / Catalog中创建Product.php模型文件
<?php
namespace Prince\Helloworld\Model\Rewrite\Catalog;
class Product extends \Magento\Catalog\Model\Product
{
public function isSalable()
{
// Do your code here
return parent::isSalable();
}
}
Run Code Online (Sandbox Code Playgroud)
对于覆盖控制器
1)在之前在di.xml中添加首选项
<preference for="Magento\Catalog\Controller\Product\View" type="Prince\Helloworld\Controller\Rewrite\Product\View" />
Run Code Online (Sandbox Code Playgroud)
2)在文件夹Prince / Helloworld / Controller / Rewrite / Product中创建View.php控制器文件
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();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用相同的方法覆盖其他块,模型和控制器。
| 归档时间: |
|
| 查看次数: |
19407 次 |
| 最近记录: |