Magento 2-覆盖块,扩展类方法仍然被触发

时间:2018-06-25 04:30:32

标签: magento2 class-extensions

如果管理员在产品级别输入其自己的属性,我将尝试覆盖产品页面上的规范标签。我创建了一个模块,扩展了块类Magento\Catalog\Block\Product\View

<?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\View" type="Chris\Canonical\Block\Product\View" />
</config>

我想覆盖方法_prepareLayout

protected function _prepareLayout()
{

        ... 

        if ($this->_productHelper->canUseCanonicalTag()) {
            $productUrl = $this->getCanonicalOverride($product);
            $this->pageConfig->addRemotePageAsset(
                $productUrl,
                'canonical',
                ['attributes' => ['rel' => 'canonical']]
            );
        }

        $pageMainTitle = $this->getLayout()->getBlock('page.main.title');
        if ($pageMainTitle) {
            $pageMainTitle->setPageTitle($product->getName());
        }
        // return parent::_prepareLayout(); # commented the original line to try and stop parent being called
}

理想情况下,我会使用插件拦截器,但是由于受到了保护,因此我别无选择,只能覆盖。

所以这没问题,但是父方法和我的方法一样被调用。结果,我在页面上有2个规范标签。我以为覆盖类实际上会覆盖方法...

如何停止调用父方法?我想念什么?

0 个答案:

没有答案