我们可以使用unsetBlock()
方法删除Magento1中的块,但是在Magento2中它不起作用。那么,请帮助如何以编程方式删除Magento2中的块?
答案 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>