Vô hiệu hóa toàn bộ chức năng giỏ hàng & kiểm tra trong magento2


8

Từ phía quản trị viên tôi có thể vô hiệu hóa kiểm tra một bước, nhưng người dùng vẫn có thể thêm sản phẩm vào giỏ hàng. Tôi muốn chỉ hiển thị các sản phẩm mà không cần thanh toán. Có phần mở rộng nào ở đó không? Tôi có nghĩa là vô hiệu hóa giỏ hàng nhỏ, thêm vào giỏ hàng liên kết toàn bộ trang web.

Tôi có thể tùy chỉnh ở đâu thông qua các plugin hoặc trình quan sát hoặc viết lại (chủ yếu là trong một lần chụp) để nó sẽ ẩn thêm các liên kết giỏ hàng ở mọi nơi. Bằng cách chỉnh sửa list.phtml tôi có thể làm được. Nhưng có cách nào tốt hơn không?


Bạn có thể làm theo giải pháp này. stackoverflow.com/questions/2840441/
Abhishek

Câu trả lời:


7

Vui lòng thử ứng dụng / mã / Nhà cung cấp / Mô-đun / 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> 

trong ứng dụng / mã / Nhà cung cấp / Mô-đun / Plugin / Product.php

<?php
namespace Vendor\Module\Plugin;

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

    }

}

Bây giờ văn bản 'Trong kho' đang đến. Vì vậy, dù sao tôi cũng cần sử dụng css để ẩn?
Siva Kumar Koduru

Có, thêm css bất kỳ nơi nào .stock {display: none; }
Nikhil Vaghela

2
Bạn cũng có thể cập nhật tất cả sản phẩm của mình với Qty = 0?
Franck Garnier

6

Có rất nhiều công việc cần làm câu hỏi này: Dưới đây là các bước:

1. đầu ra khối mô-đun Checkout.

Trong trường hợp này, bạn vô hiệu hóa đầu ra khối mô-đun kiểm tra làm cho Cart / Checkout trống và cũng sẽ loại bỏ minicart pop, vì vậy Khách hàng không thể đặt địa điểm đặt hàng.

vô hiệu hóa Magento_Checkoutđầu ra mô-đun từ Admin. Chỉ cần admin>Store>Configuration>Advance>Advance.

Có rất nhiều điều, bạn cần làm trường hợp này.

Đối với trường hợp này, bạn có thể cần các bước dưới đây:

  • Vô hiệu hóa đầu ra khối mô-đun Checkout bằng cài đặt mặc định Magento

Sau đó, chọn mô-đun Magento_Checkout Thay đổi trạng thái thành Disabledvà sau đó nhấp vào nút Lưu Cấu hình để lưu cài đặt.

nhập mô tả hình ảnh ở đây

2. Có thể tạo một số khối đầu ra bằng cách sử dụng plugin có nút AddtoCart

Trong trường hợp, ý tưởng bị vô hiệu hóa đầu ra của khối những khối tạo ra thêm vào giỏ hàng để chặn bằng cách sử dụng plugin

Như bạn biết rằng đầu ra của khối Magento \ Framework \ View \ Element \ AbstractBlock ` toHtml () của khối được tạo

Trong plugin của tôi, tìm một số Which are generate Add to Cart buttontên khối ( ) trong bố cục như :

tạo di.xml là ứng dụng \ code [Vendorname] [Module] \ etc \ frontend

Vì vậy, nó sẽ chỉ hoạt động frontend không dành cho quản trị viên .

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>

Lớp Plugin Tóm tắtBlockPlugin đặt tại 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;
    }

}

Sau đó yêu cầu bộ đệm: xóa magento shell bằng cách sử dụng bin/magento cache:flush


2
, Magento 2.2 vô hiệu hóa tính năng đầu ra mô-đun sẽ không có ở đó.
Siva Kumar Koduru
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.