Magento 2:禁用比较产品和心愿单模块的安全简便的方法


34

我建立的Magento 2.0仅用于在线销售2种产品。比较产品和愿望清单模块对我来说无关紧要。

我如何安全,轻松地删除那些模块?我不想破解核心代码。

Answers:


52

在Magento 2中,您现在实际上可以通过xml文件删除“比较产品”功能。比较产品模块在vendor/magento/module-catalog/view/frontend/layout/default.xml

您可以通过default.xml在以下主题中添加文件到主题中来删除它:<theme_dir>/Magento_Catalog/layout/default.xml

在其中删除块,如下所示:

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="catalog.compare.sidebar" remove="true"/> 
        <referenceBlock name="wishlist_sidebar" remove="true" />
    </body>
</page>

像魅力一样工作。Magento 2.0.6
camdixon

仅供参考,以下是说明的确切位置:devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/…–
thdoan

11
它不是在版本2.1.x的工作

删除“ 我的愿望清单”块怎么办?
拉兹万·赞菲尔

您可以添加它以从边栏中删除愿望清单块:<referenceBlock name =“ wishlist_sidebar” remove =“ true” />
Frank

32

您可以将以下xml指令添加到自定义主题的默认xml文件中,该文件应位于自定义主题中/app/design/frontend/Vendor/theme/Magento_Theme/layout/default.xml或位于Magento_Catalog/layout/default.xml自定义主题中:

    <referenceBlock name="catalog.compare.sidebar" remove="true"/>
    <referenceBlock name="view.addto.compare" remove="true" />
    <referenceBlock name="view.addto.wishlist" remove="true" />

摆脱了

  • 侧边栏比较块
  • 产品详细信息页面上的比较块
  • 从产品详细信息页面添加到愿望清单

要从类别页面(目录产品列表)中删除要比较的内容,请使用:

<referenceBlock name="category.product.addto.compare" remove="true"/>

5
好的答案,您还需要添加<referenceBlock name="category.product.addto.compare" remove="true"/>从目录产品列表中删除链接。
丹尼斯·普谢诺夫

感谢您的回答,您也错过了<referenceBlock name="catalogsearch.product.addto.compare" remove="true"/>同时从目录搜索结果中删除比较功能的内容。
克里斯蒂亚诺·卡西欧蒂

谢谢@Devtype
Praveen Chelumalla

15

我为所有比较块添加了源代码。对于2.3,这是完整列表。这还将从标头中删除比较链接。

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <!-- Remove compare -->
        <referenceBlock name="catalog.compare.link" remove="true" />
        <referenceBlock name="catalog.compare.sidebar" remove="true"/>
        <referenceBlock name="catalogsearch.product.addto.compare" remove="true"/>
        <referenceBlock name="category.product.addto.compare" remove="true"/>
        <referenceBlock name="crosssell.product.addto.compare" remove="true" />
        <referenceBlock name="related.product.addto.compare" remove="true" />
        <referenceBlock name="upsell.product.addto.compare" remove="true" />
        <referenceBlock name="view.addto.compare" remove="true" />
    </body>
</page>

这完美地工作,而无需修改将来更新中可能更改的任何源文件。
PedroKTFC

这应该进入自定义主题的default.xml吗?
丹尼尔·布莱克

6

在“ 商店”>“配置”>“客户”>“愿望清单”上禁用“ 愿望清单”,并禁用“比较”功能,将此行粘贴在主题的Magento_Catalog / layout / default.xml下方。

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

在以下模板中将$ showCompare设置 false:

Magento / Catalog / view / frontend / templates / product / list / items.phtml Magento / Catalog / view / frontend / templates / product / widget / new / content / new_grid.phtml Magento / Catalog / view / frontend / templates / product / widget / new / content / new_list.phtml Magento / Catalog / view / frontend / templates / product / widget / content / grid.phtml

从以下模板中删除比较相关人员:

Magento / Catalog / view / frontend / templates / product / list.phtml Magento / Catalog / view / frontend / templates / product / listing.phtml Magento / Wishslist / view / frontend / templates / item / configure / addto.phtml

参考:https : //coderwall.com/p/vsqmbw/remove-product-compare-functionality-on-magento-2-frontend


从2.1.x版本开始,此解决方案可能是组合得最好的。
themanwhoknowstheman

4

Magento为其提供命令行实用程序示例

php bin/magento module:disable -f Magento_Wishlist

由于Magento愿望清单也依赖于其他模块,因此不带[-f]使用不会禁用或启用该模块,并且会显示警告,例如

在此处输入图片说明

使用带有[-f]标志的命令后将解决此问题

在此处输入图片说明

强制使用命令时,请检查警告

警报:您使用了--force选项。结果,模块可能无法正常运行。

您也可以在此处查看完整的信息,http://devdocs.magento.com/guides/v2.0/install-gde/install/cli/install-cli-subcommands-enable.html#instgde-cli-subcommands-enable-模组


谢谢。您的回答看起来很有希望,但我有点紧张...这不会破坏任何其他功能吗?
Malaiselvan

您可以在“测试实例”中尝试相同的操作,它不应该主要制动需要更改的权限更改
webkul 2016年

4

可以从以下位置禁用

商店>配置>客户>愿望清单>常规选项>启用:否。


4

更新:在Magento 2核心更新之后,klara的答案现在是禁用比较功能的最佳方法。请在下面阅读!

要禁用“愿望清单”功能,需要进入管理,在“ 商店”>“配置”>“客户”>“愿望清单”下,然后选择“已启用:否”。

要禁用比较功能,管理中没有选项。您需要覆盖module-catalog/view/frontend/templates/product/list.phtml模板。

为此,您需要将我上面命名的文件的内容复制到位于下的主题内的新文件中<theme_dir>/Magento_Catalog/templates/product/list.phtml。然后,您要删除有关的行:

<?php
$compareHelper = $this->helper('Magento\Catalog\Helper\Product\Compare');
?>
<a href="#"
   class="action tocompare"
   title="<?php echo $block->escapeHtml(__('Add to Compare')); ?>"
   aria-label="<?php echo $block->escapeHtml(__('Add to Compare')); ?>"
   data-post='<?php /* @escapeNotVerified */ echo $compareHelper->getPostDataParams($_product); ?>'
   role="button">
    <span><?php /* @escapeNotVerified */ echo __('Add to Compare') ?></span>
</a>

这些在Magento 2.0.1中的111至121行


3

禁用边栏:

<body>
  <referenceBlock name="catalog.compare.sidebar" remove="true"/>
</body>

要删除"Add to compare"产品页面上的链接,您需要覆盖Magento_Catalog/templates/product/view/addto.phtml主题中的文件并在那里删除比较锚点。这样,您可以保留愿望清单,但删除比较功能。


3

对于Magento 2.1.x

在/Magento_Catalog/layout/default.xml中将default.xml文件添加到您的主题中

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="category.product.addto.compare" remove="true"/>
        <referenceBlock name="catalog.compare.sidebar" remove="true"/>
    </body>
</page>

还添加<referenceBlock名称=“catalog.compare.link”删除=“真” />以除去在顶部菜单链接
阿雷夫奔Lazrek

3

这是此处提供的其他解决方案的扩展。使用文件/app/design/frontend/Vendor/theme/Magento_Theme/layout/default.xml并添加以下内容

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
    <referenceBlock name="catalog.compare.sidebar" remove="true"/>
    <referenceBlock name="catalog.compare.link" remove="true"/>
    <referenceBlock name="related.product.addto.compare" remove="true"/>
    <referenceBlock name="view.addto.compare" remove="true"/>
    <referenceBlock name="upsell.product.addto.compare" remove="true"/>
    </body>
</page>

1

您可以添加以下行:<referenceBlock name="catalog.compare.sidebar" remove="true"/> Magento->管理员->产品->类别->自定义设计->自定义布局更新


0

在针对各个产品页面尝试了上述所有方法之后,我发现了一个对于我而言很重要的文件,该文件具有已安装的主题,但使用了自己的子主题addtocart.phtml。其他选项适用于网格类别视图和列表类别视图(前面提到的list.phtml,但在各个产品页面上:

<a href="#" data-post='<?php /* @escapeNotVerified */ echo $compareHelper->getPostDataParams($_product);?>'
            data-role="add-to-links"
            class="action tocompare">
    <i class="fa fa-retweet icons"></i>
    <span><?php /* @escapeNotVerified */ echo __('Compare') ?></span>
</a>

这需要被注释掉。数小时的尝试,正是这个文件。

如果有人发现其他情况,请告诉我!


找到解决方案
。il

0

M2.1快速简便的解决方案。
如果您不想创建自定义主题和/或希望从后端工作,则可以在后端执行以下操作。导航到要更改的cms页面,类别或产品页面。类别页面示例:在设计->布局更新XML下,添加以下代码:

<referenceContainer name="content">
    <referenceBlock name="catalog.compare.sidebar" remove="true" />
    <referenceContainer name="sidebar.additional" remove="true" />
 </referenceContainer>

注意:如果要在侧边栏中保留其他块,请将附加容器设置为“ false”,如下所示:

 <referenceContainer name="content">
     <referenceContainer name="sidebar.additional" remove="false" />
 </referenceContainer> 

0

如其他答案中所述,可以通过后端禁用愿望清单。

有一个FOSS模块可以删除每个商店视图级别的比较功能:

https://github.com/Joshua29LK/disable-compare-magento-2

我做了简短的评论:

  • 它添加了一个布局手柄以删除比较块
  • 它使用与此处答案基本相同的代码(但仅在商店级别激活)
  • 通过将CSS注入头部来删除addto Link,这听起来有些奇怪,但避免了替换核心模板

0

我在Magento 2.3.3上使用Ultimo主题。我无法从主题的catalog_product_view.xml文件中禁用比较链接,因为设置不是来自那里,而是位于:

vendor/magento/module-catalog/view/frontend/layout/catalog_product_view.xml

我寻求快速而肮脏的解决方案,只需删除以下内容:

                    <container name="product.info.social" label="Product social links container" htmlTag="div" htmlClass="product-social-links">
                        <block class="Magento\Catalog\Block\Product\View" name="product.info.addto" as="addto" template="Magento_Catalog::product/view/addto.phtml">
                            <block class="Magento\Catalog\Block\Product\View\AddTo\Compare" name="view.addto.compare" after="view.addto.wishlist"
                                   template="Magento_Catalog::product/view/addto/compare.phtml" >
                                <arguments>
                                    <argument name="addToCompareViewModel" xsi:type="object">Magento\Catalog\ViewModel\Product\Checker\AddToCompareAvailability</argument>
                                </arguments>
                            </block>
                        </block>
                        <block class="Magento\Catalog\Block\Product\View" name="product.info.mailto" template="Magento_Catalog::product/view/mailto.phtml"/>
                    </container>

比较按钮永远消失了,但是,如果您执行Magento升级,它将返回,因此需要再次将其删除。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.