如何禁用Magento 2条评论


24

我正在尝试禁用Magento 2产品评论功能。我尝试在Magento 2 admin Stores \ Advanced \ Advanced \ Magento_Review中禁用模块,但是每个产品上的评论标签仍然存在。有什么办法可以禁用它吗?我知道我们可以在Magento 1中将其禁用。

Answers:


1

使用命令行选项代替:

php bin/magento module:disable --clear-static-content Magento_Review

如果要刷新缓存:

php bin/magento cache:flush

(从您的Magento 2目录的根目录运行它)


15
现在在M2.2中是不可能的。它具有过多的依赖关系。
安东尼

8
无法禁用Magento_Review,因为模块依赖于许多模块核心。
mahmoudismail

这是不可能的,因为Review模块在M2中有很多依赖项。
Rishabh Rk Rai

51

在命令行上禁用模块可解决不同位置的错误。一个更好的主意是用XML隐藏它。只需创建一个子主题(如果还没有子主题),如下所示:

如何在Magento 2中创建儿童主题

然后在子主题内创建:

app / design / frontend / company_name / theme_name / Magento_Theme / 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="reviews.tab" remove="true" />
        <referenceBlock name="product.review.form" remove="true" />
        <referenceBlock name="product.info.review" remove="true" />
    </body>
</page>

请记住,所有评论都在“客户”标签的“评论”页面中(也已禁用)。在2.1.7中工作出色。仅在产品页面布局上添加时,其工作原理相同。
Patryk Padus

正是我需要的!
矢量

1
扩展到@Patryk Padus帖子:<!-删除我的产品评论-> <referenceBlock name =“ customer-account-navigation-product-reviews-link” remove =“ true” />在Magento_Customer / layout / customer_account中。 xml
fogx

这应该是正确的答案。我们绝不应该禁用模块Magento_Review。许多其他模块都依赖于此。
Magento Learner

1
在magento 2.3.1中运作良好
电动

26

在Magento 2.0.2中,如果尝试@MagePsycho建议的操作,则会收到错误消息。您仍然可以通过更改Magento 2的高级设置中的状态来禁用模块输出。

商店>配置>高级>高级,然后搜索“查看”。

之后,您可能想清空缓存。


3
这是要走的路。评论模块被其他核心模块(例如客户)标记为从属模块,并且不能禁用。
米尔

从magento 2.2的“商店”>“配置”>“高级”>“高级”中,已删除,请接受Mike的回答。
LucScu

1
但是Magento 2.2.2中没有高级选项卡
D Singh

8

在Magento 2.1中,按照@Max建议禁用输出,将在产品视图编辑中引起麻烦的弹出窗口。

在此处输入图片说明

不太好 它是由Ajax请求引起的,该请求在503中完成。您将注意到在“产品评论”标签上有一个表格。它在2.0上有效,因为管理员仍被渲染为阻塞。现在,使用UiComponent完成。

“产品审核标签”添加低谷adminhtml/di.xmlMagento_Review

  <virtualType name="Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Pool">
        <arguments>
            <argument name="modifiers" xsi:type="array">
                <item name="review" xsi:type="array">
                    <item name="class" xsi:type="string">Magento\Review\Ui\DataProvider\Product\Form\Modifier\Review</item>
                    <item name="sortOrder" xsi:type="number">20</item>
                </item>
            </argument>
        </arguments>
    </virtualType>

无法(或至少没有找到方法)删除参数。因此,我们必须以一种或另一种方式重写它。

首先,我想到在上做一个插件Magento\Review\Ui\DataProvider\Product\Form\Modifier\Review。但是深入研究核心代码使我发现了一个Dummy.php类。因此,在自定义模块中,创建一个adminhtml/di.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <virtualType name="Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Pool">
        <arguments>
            <argument name="modifiers" xsi:type="array">
                <item name="review" xsi:type="array">
                    <item name="class" xsi:type="string">Magento\Ui\DataProvider\Modifier\Dummy</item>
                </item>
            </argument>
        </arguments>
    </virtualType>
</config>

而且不要忘记添加<sequence><Magento_Review/>在你的module.xml。因为XML是按精确顺序合并的。必须在Magento_Review之后

并且请注意:禁用Ouput 不会禁用模块,因为此线程的标题已提及。它只会隐藏它:

  1. 控制器仍将处于活动状态。如果您按照适当的操作进行发布,则控制器仍将工作,并且前端甚至还会显示“成功”消息。

  2. 您仍然可以在管理员的“报告”中找到菜单

  3. 每种模型的逻辑,注入,观察者仍将适用。

无论如何,从我的角度来看,它仍然是最好的解决方案。因为强制禁用模块module:disable -f似乎有点苛刻...


非常有趣-似乎Magento开发人员需要整理更多东西。很好抓!
最大

8

创建:

app / design / frontend / company_name / theme_name / Magento_Theme / layout / default.xml

并添加以下内容:

<?xml version="1.0"?>
<page layout="3columns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
      ...
      ...
         <referenceBlock name="reviews.tab" remove="true" />
         <referenceBlock name="customer-account-navigation-product-reviews-link" remove="true" />
         <referenceBlock name="customer_account_dashboard_info1" remove="true" />
         <referenceBlock name="review_customer_list" remove="true" />
         <referenceBlock name="customers_review" remove="true" />
         <referenceBlock name="product.review.form" remove="true" />
         <referenceBlock name="review_view" remove="true" />
         <referenceBlock name="product.info.product_additional_data" remove="true" />

      ...
      ...
 </body>
</page>

谢谢,也可以在Layout Update XML下的单个产品中使用它,以删除特定项目的评论。
dawhoo

似乎至少有一个指向当时不存在的审阅表单的链接仍然出现在产品页面上。可以通过隐藏使用CSS将其隐藏.product-reviews-summary,但是也许可以添加另一条规则default.xml以实际删除它?
ACJ


5

至少在Magento 2.3 Commerce中,您可以在商店>配置>目录>产品评论中以管理员身份禁用评论。 在此处输入图片说明


3

php bin/magento module:disable -f Magento_Review禁用其他模块所依赖的模块。必须首先在测试环境中完成它,以便发现功能上的任何中断。


2

商店>配置>高级>高级,然后搜索“查看”

要不然

app / etc / config.php'Magento_Review'=> 0,


2

至少在Magento 2.2.5中,通过禁用模块输出app/etc/config.php似乎可以解决问题:

'system' => [
    'default' => [
        'advanced' => [
            'modules_disable_output' => [
                'Magento_Review' => '1',
                'Magento_Newsletter' => '1',
            ],
        ],
        // … other config
    ],
],

这将从商店前台以及管理界面中删除相关的模块输出(表单,消息)。


0

请注意,在Magento 2.3.0中,这种情况得到了改善(因为在不安装module-review时前端没有显示错误),但是DI编译仍然失败,如Magento\Review\Block\Adminhtml\Grid所引用Magento\Customer\Block\Adminhtml\Edit\Tab\1Reviews

最好的办法仍然是禁用模块输出或完全禁用模块(但仍自动加载代码)。

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.