magento2でカート機能全体とチェックアウトを無効にする


8

管理者側からワンステップチェックアウトを無効にできますが、それでもユーザーは商品をカートに追加できます。チェックアウトなしの商品のみを表示したいのですが。そこに拡張機能はありますか?ミニカートを無効にし、サイト全体のカートリンクに追加します。

プラグインやオブザーバーを通じてカスタマイズしたり、どこにでもカートに追加リンクを非表示にしたりできるように(ほとんどがシングルショットで)書き換えることができる場所はどこですか?list.phtmlを編集することで、私はできます。しかし、もっと良い方法はありますか?


このソリューションに従うことができます。stackoverflow.com/questions/2840441/...
アビシェーク

回答:


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 2017年

はい、.stock {表示:なし; }
Nikhil Vaghela 2017年

2
すべての製品をQty = 0で更新することもできますか?
フランクガルニエ

6

この質問を行うために必要な作業はたくさんあります:ここにステップ:

1.Checkoutモジュールブロックの出力を無効にする

この場合、カート/チェックアウトを空白にするチェックアウトモジュールブロックの出力を無効にし、ミニカートポップも削除するため、お客様は注文できません。

無効化モジュールの Magento_Checkout管理者からの出力に.Just admin>Store>Configuration>Advance>Advance

たくさんのことがあり、あなたはこのケースをする必要があります。

この場合、以下の手順が必要になることがあります。

  • Magentoのデフォルトのシステム設定を使用してチェックアウトモジュールブロックの出力を無効にする

次に、モジュールMagento_Checkout Change it statusを選択し、その後DisabledSave Configボタンをクリックして設定を保存します。

ここに画像の説明を入力してください

2. AddtoCartボタンがあるプラグインを使用して一部のブロック出力を無効にします

場合、アイデアはプラグインを使用してブロックするためにカートに追加を生成するブロックの出力を無効にます

ご存じのとおり、クラスMagento \ Framework \ View \ Element \ AbstractBlock ` toHtml()から、ブロックの出力が生成されます

私のプラグインで、次のようなレイアウトでいくつかのブロック(Which are generate Add to Cart button)名を見つけます

di.xmlの作成はapp \ code [Vendorname] [Module] \ etc \ frontendです

だから、それは管理者ではなくフロントエンドでのみ機能します。

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>

クラスプラグインAbstractBlockPluginに位置しますpp/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シェルを使用して bin/magento cache:flush


2
、Magento 2.2モジュールの出力を無効にする機能はありません。
Siva Kumar Koduru 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.