Désactiver la fonctionnalité et le paiement du panier entier dans magento2


8

Du côté administrateur, je peux désactiver le paiement en une étape, mais les utilisateurs peuvent toujours ajouter des produits au panier.Je souhaite afficher uniquement les produits sans paiement. Y a-t-il une extension? Je veux dire désactiver le mini panier, ajouter au panier des liens sur tout le site.

Où puis-je personnaliser via des plugins ou des observateurs ou réécrire (principalement en une seule fois) afin qu'il masque les liens d'ajout au panier partout. En éditant list.phtml je peux le faire, mais y a-t-il une meilleure façon?


Vous pouvez suivre cette solution. stackoverflow.com/questions/2840441/…
Abhishek

Réponses:


7

Veuillez l'essayer 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> 

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

<?php
namespace Vendor\Module\Plugin;

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

    }

}

Maintenant, le texte `` En stock '' arrive.Alors, de toute façon, je dois utiliser CSS pour cacher?
Siva Kumar Koduru

Oui, ajoutez css n'importe où .stock {display: none; }
Nikhil Vaghela

2
Vous pouvez également mettre à jour tous vos produits avec Qté = 0?
Franck Garnier

6

Il y a beaucoup de travaux à faire pour cette question: Voici les étapes:

1.Désactiver la sortie du bloc du module Checkout

Dans ce cas, vous désactivez la sortie du bloc du module de paiement qui rend le panier / la commande vide et supprimera également le mini-panier, le client ne peut donc pas passer de commande.

désactiver la Magento_Checkoutsortie du module d'Admin .Just to admin>Store>Configuration>Advance>Advance.

Il y a beaucoup de choses, vous devez faire ce cas.

Dans ce cas, vous aurez peut-être besoin des étapes ci-dessous:

  • Désactiver la sortie du bloc du module Checkout à l'aide du paramètre système par défaut de Magento

Sélectionnez ensuite le module Magento_Checkout Modifiez son état Disabledet cliquez ensuite sur le bouton Save Config pour enregistrer le paramètre.

entrez la description de l'image ici

2.Désactivez la sortie de certains blocs à l'aide d'un plugin doté d'un bouton AddtoCart

Dans le cas, l'idée est désactivée de la sortie du bloc ceux qui génèrent ajouter au panier pour bloquer en utilisant le plugin

Comme vous le savez, à partir de la classe Magento \ Framework \ View \ Element \ AbstractBlock ` toHtml (), la sortie du bloc est générée

Dans mon plugin, trouvez des Which are generate Add to Cart buttonnoms de blocs ( ) dans la mise en page comme :

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

, Donc, cela ne fonctionnera que frontend pas pour l'administrateur .

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>

Plugin classe AbstractBlockPlugin situé à un 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;
    }

}

Exiger ensuite un cache: vider le shell magento en utilisant bin/magento cache:flush


2
, La fonctionnalité de sortie du module de désactivation de Magento 2.2 ne sera pas là.
Siva Kumar Koduru
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.