Deshabilite la funcionalidad completa del carrito y finalice la compra en magento2

8

Desde el lado del administrador, puedo deshabilitar el proceso de pago en un solo paso, pero aún así los usuarios pueden agregar productos al carrito. Quiero mostrar solo productos sin pago. ¿Hay alguna extensión allí? Me refiero a desactivar mini carrito, agregar al carrito enlaces a todo el sitio.

¿Dónde puedo personalizar a través de complementos u observadores o reescribir (principalmente en una sola toma) para que se oculte agregar enlaces al carrito en todas partes. Editando list.phtml que puedo hacer, pero ¿hay alguna manera mejor?

Siva Kumar Koduru
fuente
Puedes seguir esta solución. stackoverflow.com/questions/2840441/…
Abhishek

Respuestas:

7

Por favor, inténtelo 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> 

en 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
fuente
Ahora viene el texto 'En stock'. ¿De todos modos necesito usar CSS para ocultar?
Siva Kumar Koduru
Sí, agregue css en cualquier lugar .stock {display: none; }
Nikhil Vaghela
2
También puede actualizar todo su producto con Cantidad = 0?
Franck Garnier el
6

Hay muchos trabajos necesarios para hacer esta pregunta: Aquí los pasos:

1.Salida de bloque del módulo Checkout desactivado

En este caso, deshabilita la salida del bloque del módulo de pago que deja el Carrito / Pago en blanco y también elimina el minicart emergente, por lo que el Cliente no puede realizar el pedido.

desactivar la Magento_Checkoutsalida del módulo de Admin. Solo para admin>Store>Configuration>Advance>Advance.

Hay muchas cosas, necesitas hacer este caso.

Para este caso, es posible que necesite los siguientes pasos:

  • Deshabilite la salida del bloque del módulo Checkout utilizando la configuración predeterminada del sistema Magento

Luego seleccione el módulo Magento_Checkout Cambie su estado a Disabledy luego haga clic en el botón Guardar configuración para guardar la configuración.

ingrese la descripción de la imagen aquí

2. Desactive la salida de algunos bloques usando el complemento que tiene el botón AddtoCart

En el caso, la idea es deshabilitar la salida del bloque aquellos bloques que generan agregar al carrito para bloquear usando el complemento

Como saben, desde la clase Magento \ Framework \ View \ Element \ AbstractBlock ` toHtml () se genera la salida del bloque

En mi complemento, encuentre algunos bloques ( Which are generate Add to Cart button) nombre en diseño como :

di.xml create es app \ code [Nombre del proveedor] [Módulo] \ etc \ frontend

, Por lo que solo funcionará frontend no para el 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>

Clase de complemento AbstractBlockPlugin ubicado en 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;
    }

}

Luego requiera un caché: enjuague el magento shell usando bin/magento cache:flush

Amit Bera
fuente
2
, La función de salida del módulo de desactivación de Magento 2.2 no estará allí.
Siva Kumar Koduru