在Magento2中以编程方式删除块

时间:2016-03-08 11:40:09

标签: magento2

我们可以使用unsetBlock()方法删除Magento1中的块,但是在Magento2中它不起作用。那么,请帮助如何以编程方式删除Magento2中的块?

4 个答案:

答案 0 :(得分:11)

使用unsetElement()方法删除阻止。 像

一样
$layout = $this->getLayout();
$block = $layout->getBlock('catalog.topnav'); // block name
$layout->unsetElement('catalog.topnav');

答案 1 :(得分:1)

您可以尝试这种方式。例如,我从侧边栏删除比较,所以我覆盖default.xml到app / design / frontend / Your_Theme / theme_name / Magento_Catalog / layout

<?xml version="1.0"?>
<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
<body>
    <referenceBlock name="catalog.compare.sidebar" remove="true"/>
</body>

答案 2 :(得分:1)

要从页面中删除特定块,请打开自定义布局xml,并将以下代码放在body标记

    <?xml version="1.0"?>
    <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body><referenceBlock name="Your_Block" remove="true"/>
    </body>
    </page>

将Your_Block更改为您的块名称需要删除

答案 3 :(得分:0)

理想地,有多种方法可以做到这一点。最好的方法是使用布局文件。

1)如果您已构建模块,则可以在app / code / Namespace / Your_Module / view / frontend / layout / frontname_controllername_controlleraction.xml中创建一个xml文件布局,并添加以下代码

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <referenceBlock name="block_name" remove="true" />
</page>

2)如果尚未创建自定义模块,则只需在app / design / frontend / Custom_Theme / Theme_name / Module_Name / layout中编写自定义xml并添加以下代码即可。

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <referenceBlock name="block_name" remove="true" />
</page>