无法删除名为以下内容的特定块:
product.info.options.configurable
在Magento 2中。 这是我要更改的布局文件:
vendor/magento/module-configurable-product/view/frontend/layout/catalog_product_view_type_configurable.xml
它的内容是:
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<attribute name="class" value="page-product-configurable"/>
<referenceBlock name="head.components">
<block class="Magento\Framework\View\Element\Js\Components" name="configurableproduct_product_view_head_components" template="Magento_ConfigurableProduct::js/components.phtml"/>
</referenceBlock>
<referenceContainer name="product.info.type">
<block class="Magento\ConfigurableProduct\Block\Product\View\Type\Configurable" name="product.info.configurable" as="product_type_data" template="Magento_Catalog::product/view/type/default.phtml"/>
<container name="product.info.configurable.extra" after="product.info.configurable" as="product_type_data_extra" label="Product Extra Info">
<block class="Magento\ConfigurableProduct\Block\Stockqty\Type\Configurable" name="product.info.configurable.extra.catalog_inventory_stockqty_composite" template="Magento_CatalogInventory::stockqty/composite.phtml"/>
</container>
</referenceContainer>
<referenceBlock name="product.info.options.wrapper">
<block class="Magento\ConfigurableProduct\Block\Product\View\Type\Configurable" name="product.info.options.configurable" as="options_configurable" before="-" template="Magento_ConfigurableProduct::product/view/type/options/configurable.phtml"/>
</referenceBlock>
</body>
</page>
您可以看到最后一部分是:
<referenceBlock name="product.info.options.wrapper">
<block class="Magento\ConfigurableProduct\Block\Product\View\Type\Configurable" name="product.info.options.configurable" as="options_configurable" before="-" template="Magento_ConfigurableProduct::product/view/type/options/configurable.phtml"/>
</referenceBlock>
我确信我的代码是正确的,
<referenceBlock name="product.info.options.wrapper" remove="true"/>
可以成功删除包装程序块,并且可以看到它已被删除。这告诉我: Magento是正确的。 我的布局文件由Magento读取。 缓存清晰的作品。 生成的代码清除工作。 我编写单行的方式也有效,因为它确实删除了包装程序块。 我的操作系统版本,Magento颠覆版本,作曲家,IDE,PHP和其他版本也无关紧要,因为remove命令适用于以上代码块。 但是,当我尝试:
<referenceBlock name="product.info.options.configurable" remove="true"/>
它根本不起作用。 然后,我将所有可能的行组合都删除,以删除在每个我可以搜索的论坛上发现的内容,但仍不能删除我想要的块:
<referenceBlock name="options_configurable" remove="true"/>
<referenceBlock name="product.info.options.configurable" remove="true"/>
<referenceBlock name="options_configurable" display="false"/>
<referenceBlock name="product.info.options.configurable" display="false"/>
<referenceContainer name="product.info.options.wrapper">
<referenceBlock name="options_configurable" remove="true"/>
<referenceBlock name="product.info.options.configurable" remove="true"/>
<referenceBlock name="options_configurable" display="false"/>
<referenceBlock name="product.info.options.configurable" display="false"/>
</referenceContainer>
<referenceBlock name="product.info.options.wrapper">
<referenceBlock name="options_configurable" remove="true"/>
<referenceBlock name="product.info.options.configurable" remove="true"/>
<referenceBlock name="options_configurable" display="false"/>
<referenceBlock name="product.info.options.configurable" display="false"/>
</referenceBlock>
<referenceContainer name="content">
<referenceBlock name="options_configurable" remove="true"/>
<referenceBlock name="product.info.options.configurable" remove="true"/>
<referenceBlock name="options_configurable" display="false"/>
<referenceBlock name="product.info.options.configurable" display="false"/>
</referenceContainer>
如您所见,我使用了所有可能的选项。块名称,它是别名remove="true"
,display="false"
,内部包装器块,内部包装器块作为容器,上面的每行单独,上面的行的组合,依此类推。
任何想法都受到高度赞赏。预先感谢。
答案 0 :(得分:1)
所以!
出了什么问题?
在Magento后端中启用模板路径提示时,然后可以在magento xml文件中搜索模板名称,以找出哪个块呈现了该模板,这正是我所做的。但是尝试删除该块并没有帮助,如上所述。即使我从原始的magento xml文件中删除了该块。因此我意识到模板是从其他地方渲染的,而我尝试覆盖的xml文件实际上是孤立的过时代码片段,Magento司空见惯!
解决方案
该模板也在php文件中调用:
vendor/magento/module-swatches/Block/Product/Renderer/Configurable.php
正在扩展原始块。然后,在另一个布局xml文件中调用此新的子块:
vendor/magento/module-swatches/view/frontend/layout/catalog_product_view_type_configurable.xml
具有不同的参考名称:
product.info.options.swatches
尝试将其删除:
<referenceBlock name="product.info.options.swatches" remove="true"/>
成功了!
摘要
我试图删除的一部分layout.xml文件已过时,并且该模板文件在另一个块中以另一个xml文件中的另一个引用名称使用。