Desativar toda a funcionalidade e checkout do carrinho no magento2

8

Do lado do administrador, posso desativar a verificação em uma etapa, mas os usuários ainda podem adicionar produtos ao carrinho. Quero exibir apenas produtos sem a verificação geral. Existe alguma extensão lá? Quero dizer desativar mini carrinho, adicionar ao carrinho links site inteiro.

Onde posso personalizar através de plugins ou observadores ou reescrever (principalmente em um único arquivo) para que oculte os links para adicionar ao carrinho em qualquer lugar. Editando list.phtml eu posso fazer. Mas existe alguma maneira melhor?

Siva Kumar Koduru
fonte
Você pode seguir esta solução. stackoverflow.com/questions/2840441/…
Abhishek 28/03

Respostas:

7

Tente 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> 

em app / code / Vendor / Module / Plugin / Product.php

<?php
namespace Vendor\Module\Plugin;

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

    }

}
Nikhil Vaghela
fonte
Agora o texto 'Em estoque' está chegando. Então, de qualquer maneira, preciso usar o css para ocultar?
Siva Kumar Koduru 23/03
Sim, adicione css em qualquer lugar .stock {display: none; }
Nikhil Vaghela 23/03
2
Você também pode atualizar todo o seu produto com Qty = 0?
Franck Garnier
6

Há muitos trabalhos necessários para fazer esta pergunta: Aqui as etapas:

1. Desativar saída do bloco do módulo de checkout

Nesse caso, você desativa a saída do bloco do módulo de check-out que deixa o carrinho / check-out em branco e também remove o pop-up do minicart, para que o cliente não possa fazer o pedido.

desativar a Magento_Checkoutsaída do módulo de Admin. Apenas para admin>Store>Configuration>Advance>Advance.

Há muita coisa, você precisa fazer este caso.

Nesse caso, você pode precisar das etapas abaixo:

  • Desativar saída do bloco do módulo Checkout usando a configuração padrão do sistema do Magento

Em seguida, selecione o módulo Magento_Checkout Altere o status para Disablede depois clique no botão Save Config para salvar a configuração.

insira a descrição da imagem aqui

2. Desative a saída de alguns blocos usando o plugin que possui o botão AddtoCart

Caso a ideia seja desativada, a saída do bloco aqueles que geram adicionar ao carrinho para bloquear usando o plugin

Como você sabe que da classe Magento \ Framework \ View \ Element \ AbstractBlock ` toHtml () é gerada a saída do bloco

No meu plugin, encontre alguns Which are generate Add to Cart buttonnomes de blocks ( ) no layout, como :

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

, Portanto, ele funcionará apenas no frontend, não para o administrador .

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>

Classe de plug-in AbstractBlockPlugin localizada em 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;
    }

}

Em seguida, exija um cache: libere o shell magento usando bin/magento cache:flush

Amit Bera
fonte
2
, O recurso de saída do módulo de desativação do Magento 2.2 não estará lá.
Siva Kumar Koduru