Отключить всю функциональность корзины и оформить заказ в magento2

8

Со стороны администратора я могу отключить одноэтапное оформление заказа, но все же пользователи могут добавлять товары в корзину. Я хочу отображать только товары без оформления заказа. Там есть какое-то расширение? Я имею в виду отключить мини-корзину, добавить в корзину ссылки на весь сайт.

Где я могу настроить с помощью плагинов или обозревателей или переписать (в основном в один выстрел), так что он будет скрывать ссылки добавления в корзину везде. Редактируя list.phtml, я могу сделать. Но есть ли лучший способ?

Шива Кумар Кодуру
источник
Вы можете следовать этому решению. stackoverflow.com/questions/2840441/…
Абхишек,

Ответы:

7

Пожалуйста, попробуйте это приложение / код / ​​поставщик / модуль / 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, чтобы спрятаться?
Шива Кумар Кодуру
Да, добавьте css в любом месте .stock {display: none; }
Нихил Вагела
2
Вы также можете обновить весь свой продукт с Qty = 0?
Франк Гарнье
6

Есть много работ, необходимо сделать этот вопрос: Вот шаги:

Выход блока блока проверки 1.Disable

В этом случае вы отключаете вывод блока модуля оформления заказа, в результате чего поле « Корзина / оформление заказа» остается пустым, а также удаляется всплывающее окно с мини-картой, поэтому клиент не может разместить заказ.

отключить Magento_Checkoutвывод модуля из Admin. Просто admin>Store>Configuration>Advance>Advance.

Есть много вещей, вам нужно сделать это дело.

Для этого случая вам могут понадобиться следующие шаги:

  • Отключить вывод блока Checkout с помощью системной настройки Magento по умолчанию

Затем выберите модуль Magento_Checkout. Измените его статус на Disabledи после этого нажмите кнопку Save Config для сохранения настроек.

введите описание изображения здесь

2. Отключить вывод некоторых блоков с помощью плагина с кнопкой AddtoCart

В случае, если идея отключена, вывод блока из тех блоков, которые генерируют добавление в корзину для блокировки с помощью плагина

Как вы знаете, что из класса Magento \ Framework \ View \ Element \ AbstractBlock ` toHtml () генерируется вывод блока

В моем плагине найдите Which are generate Add to Cart buttonназвание блока ( ) в макете, например :

di.xml create is 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;
    }

}

Затем требуется кеш: сбросить оболочку magento с помощью bin/magento cache:flush

Амит Бера
источник
2
, Magento 2.2 отключить функцию вывода модуля не будет там.
Шива Кумар Кодуру