Nonaktifkan seluruh fungsi keranjang & checkout di magento2

8

Dari sisi admin saya dapat menonaktifkan checkout satu langkah, tetapi pengguna masih dapat menambahkan produk ke troli. Saya hanya ingin menampilkan produk tanpa checkout. Apakah ada ekstensi di sana? Maksud saya nonaktifkan kereta mini, tambahkan ke tautan seluruh situs.

Di mana saya dapat menyesuaikan melalui plugin atau pengamat atau menulis ulang (kebanyakan dalam satu tembakan) sehingga akan menyembunyikan menambahkan ke tautan keranjang di mana-mana. Dengan mengedit list.phtml saya bisa melakukannya. Tapi apakah ada cara yang lebih baik?

Siva Kumar Koduru
sumber
Anda dapat mengikuti solusi ini. stackoverflow.com/questions/2840441/…
Abhishek

Jawaban:

7

Silakan coba aplikasi / kode / Vendor / Modul / 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> 

dalam aplikasi / kode / Vendor / Modul / Plugin / Product.php

<?php
namespace Vendor\Module\Plugin;

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

    }

}
Nikhil Vaghela
sumber
Sekarang teks 'Stok' akan datang. Jadi, saya harus menggunakan css untuk menyembunyikan?
Siva Kumar Koduru
Ya, tambahkan css di mana saja. Stock {display: none; }
Nikhil Vaghela
2
Anda juga dapat memperbarui semua produk Anda dengan Qty = 0?
Franck Garnier
6

Ada banyak pekerjaan yang perlu dilakukan pertanyaan ini: Berikut langkah-langkahnya:

1. Output blok modul Checkout yang dapat dinonaktifkan

Kasus ini, Anda menonaktifkan keluaran blok modul checkout yang membuat Cart / Checkout kosong dan juga akan menghapus popart mini, Jadi Pelanggan tidak dapat melakukan pemesanan tempat.

menonaktifkan Magento_Checkoutoutput modul dari Adminadmin>Store>Configuration>Advance>Advance . Hanya untuk .

Ada banyak hal, Anda perlu melakukan hal ini.

Untuk kasus ini, Anda mungkin perlu langkah-langkah di bawah ini:

  • Nonaktifkan keluaran blok modul Checkout menggunakan pengaturan Sistem default Magento

Kemudian Pilih modul Magento_Checkout Ubah statusnya ke Disableddan setelah itu klik tombol Save Config untuk menyimpan pengaturan.

masukkan deskripsi gambar di sini

2. Nonaktifkan beberapa blok keluaran menggunakan plugin yang memiliki tombol AddtoCart

Dalam hal, ide dinonaktifkan output dari blok yang menghasilkan add to cart untuk memblokir menggunakan plugin

Seperti yang Anda ketahui bahwa dari kelas Magento \ Framework \ View \ Element \ AbstractBlock ` toHtml () output dari blok dihasilkan

Di plugin saya, cari beberapa blok ( Which are generate Add to Cart button) nama dalam tata letak seperti :

di.xml create adalah app \ code [Vendorname] [Module] \ etc \ frontend

, Jadi itu hanya akan berfungsi frontend bukan untuk 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>

Kelas plugin AbstractBlockPlugin terletak di a 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;
    }

}

Kemudian membutuhkan cache: gunakan flush magento shell bin/magento cache:flush

Amit Bera
sumber
2
, Magento 2.2 menonaktifkan fitur keluaran modul tidak akan ada di sana.
Siva Kumar Koduru