在magento2中禁用整个购物车功能和结帐


8

从管理员的角度来看,我可以禁用一步结帐,但是用户仍然可以将产品添加到购物车。我只想显示未结帐的产品。那里有分机吗?我的意思是禁用迷你购物车,添加到购物车链接整个网站。

我在哪里可以通过插件或观察者进行自定义,或者可以重写(主要是单次执行),以便在任何地方都隐藏添加到购物车的链接。通过编辑list.phtml我可以做到。但是还有更好的方法吗?


您可以遵循此解决方案。stackoverflow.com/questions/2840441/…–
Abhishek

Answers:


7

请尝试一下 app / code / Vendor / Module / etc / 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">   

    <type name="Magento\Catalog\Model\Product">
        <plugin name="module-filter" type="Vendor\Module\Plugin\Product" sortOrder="1" />
    </type>

</config> 

应用程序/代码/供应商/模块/插件/Product.php中

<?php
namespace Vendor\Module\Plugin;

class Product
{               
    public function afterIsSaleable(\Magento\Catalog\Model\Product $product)
    {           
            return false;

    }

}

现在“库存”文本即将到来。所以无论如何,我需要使用CSS进行隐藏吗?
Siva Kumar Koduru

是的,在任何.stock {display:none; }
Nikhil Vaghela

2
您还可以使用Qty = 0更新所有产品吗?
Franck Garnier

6

有很多工作要做这个问题:这里的步骤:

1.禁用Checkout模块块输出

在这种情况下,您将禁用使购物车/结帐栏为空白的结帐模块块输出,并且还将删除小型购物车弹出,因此客户无法下订单。

禁用模块 Magento_Checkout输出从管理员。刚到admin>Store>Configuration>Advance>Advance

有很多东西,你需要做这种情况。

对于这种情况,可能需要执行以下步骤:

  • 使用Magento默认系统设置禁用Checkout模块块输出

然后选择模块Magento_Checkout将其状态更改为Disabled,然后单击保存配置按钮以保存设置。

在此处输入图片说明

2.使用具有AddtoCart按钮的插件禁用某些块输出

如果禁用了 idea,则使用插件将那些生成添加到购物车的block的block 禁用

如你所知,从类的Magento \框架\查看\元素\ AbstractBlock ` toHtml()的输出生成块

在我的插件中,在布局中找到一些block(Which are generate Add to Cart button)名称,例如

di.xml创建的是app \ code [供应商名称] [模块] \ etc \ frontend

,因此它将仅适用于前端,不适用于admin

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">
     <type name="\Magento\Framework\View\Element\AbstractBlock">
        <plugin name="disabledOutofAddtoCartblock" type="[Vendorname]\[Module]\Plugin\AbstractBlockPlugin" />
    </type>
</config>

位于的插件类AbstractBlockPluginpp/code/[Vendorname]/[Module]/Plugin/

<?php
namespace [Vendorname]\[Module]\Plugin;

class AbstractBlockPlugin{

    /**
     * @var \Psr\Log\LoggerInterface
     */
    protected $logger;

    public function __construct(
        \Psr\Log\LoggerInterface $logger
    ){

          $this->logger = $logger;
    }
    /**
    * Using after method change  return value of toHtml
    */
    public function afterToHtml(\Magento\Framework\View\Element\AbstractBlock $block ,$result){

       $moduleName = $block->getModuleName();
       $nameInLayout = $block->getNameInLayout();

       $_disableBlocksNameInLayout = array(
            'product.info.addtocart','product.info.addtocart.additional','product.info.addtocart.bundle',

        );
       /** 
       * If block name is match then return Blank
       */
       if(in_array($nameInLayout ,$_disableBlocksNameInLayout)){
           return "";
       }
       return $result;
    }

}

然后需要使用cache:flush magento shell bin/magento cache:flush


2
,Magento 2.2禁用模块输出功能将不存在。
Siva Kumar Koduru
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.