Disabilita la funzionalità e il checkout dell'intero carrello in magento2


8

Da parte dell'amministratore posso disabilitare il checkout in un'unica fase, ma gli utenti possono comunque aggiungere prodotti al carrello. Voglio visualizzare solo i prodotti senza checkout. C'è qualche estensione lì? Intendo disabilitare mini carrello, aggiungere al carrello collegamenti dell'intero sito.

Dove posso personalizzare tramite plug-in o osservatori o riscrivere (principalmente in uno scatto singolo) in modo da nascondere ovunque i collegamenti al carrello. Modificando list.phtml posso fare. Ma c'è un modo migliore?


Puoi seguire questa soluzione. stackoverflow.com/questions/2840441/…
Abhishek,

Risposte:


7

Si prega di provare app / code / Venditore / modulo / 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> 

in app / codice / fornitore / modulo / plugin / product.php

<?php
namespace Vendor\Module\Plugin;

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

    }

}

Ora sta arrivando il testo "In stock", quindi devo usare CSS per nascondermi?
Siva Kumar Koduru,

Sì, aggiungi css in qualsiasi punto .stock {display: none; }
Nikhil Vaghela,

2
Puoi anche aggiornare tutto il tuo prodotto con Qtà = 0?
Franck Garnier,

6

Ci sono molti lavori necessari per fare questa domanda: Ecco i passaggi:

1.Disabilitare l'uscita del blocco del modulo Checkout

In questo caso, disabiliti l'output del blocco del modulo di checkout che rende vuoto il carrello / checkout e rimuoverà anche il pop minicart, quindi il cliente non può effettuare l'ordine.

disabilita l' Magento_Checkoutoutput del modulo da Admin. Solo a admin>Store>Configuration>Advance>Advance.

Ci sono molte cose, devi fare questo caso.

In questo caso, potrebbe essere necessario seguire i passaggi seguenti:

  • Disabilita l'output del blocco del modulo di Checkout utilizzando l'impostazione di sistema predefinita di Magento

Quindi seleziona il modulo Magento_Checkout Cambia lo stato in Disablede successivamente fai clic sul pulsante Salva configurazione per salvare l'impostazione.

inserisci qui la descrizione dell'immagine

2. Disabilitare l'output di alcuni blocchi usando il plugin che ha il pulsante AddtoCart

Nel caso in cui l'idea sia disabilitata, l'output del blocco è quello che blocca generando aggiungi al carrello per bloccare usando il plugin

Come sai che dalla classe Magento \ Framework \ View \ Element \ AbstractBlock ` toHtml () viene generato l' output del blocco

Nel mio plugin, trova alcuni Which are generate Add to Cart buttonnomi di blocchi ( ) nel layout come :

di.xml create è app \ code [Vendorname] [Modulo] \ etc \ frontend

, Quindi funzionerà solo frontend non per 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>

Classe plug-in AbstractBlockPlugin situato in 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;
    }

}

Quindi richiede una cache: svuota la shell magento usando bin/magento cache:flush


2
, La funzione di output del modulo di disabilitazione Magento 2.2 non sarà presente.
Siva Kumar Koduru,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.