Magento 2 deshabilita la combinación de elementos en el carrito

Aug 21 2020

Hola, quiero que el cliente agregue el mismo artículo al carrito con una línea separada. No quiero que se fusionen y formen una sola línea. ¿Hay alguna forma de hacer esto? Vi gente preguntando por Magento 1, ¿hay alguna solución para Magento 2? Gracias

Respuestas

2 PratikOza Aug 20 2020 at 23:31

Opción 1:

app / code / VendorName / ModuleName / etc / module.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="VendorName_ModuleName" setup_version="1.0.0">
        <sequence>
            <module name="Magento_Quote" />
        </sequence>
    </module>
</config>

app / code / VendorName / ModuleName / 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\Quote\Model\Quote\Item">
        <plugin name="VendorName_ModuleName_Magento_Quote_Model_Quote_Item" sortOrder="10" type="VendorName\ModuleName\Plugin\Magento\Quote\Model\Quote\Item"/>
    </type>
</config>

app / code / VendorName / ModuleName / Plugin / Magento / Quote / Model / Quote / Item.php

<?php

namespace VendorName\ModuleName\Plugin\Magento\Quote\Model\Quote;

class Item
{
    public function aroundRepresentProduct(
        \Magento\Quote\Model\Quote\Item $subject, \Closure $proceed,
        $product
    ) {
       return false;
    }
}

Opcion 2:

app / code / VendorName / ModuleName / etc / module.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="VendorName_ModuleName" setup_version="1.0.0">
        <sequence>
            <module name="Magento_Quote" />
        </sequence>
    </module>
</config>

app / code / VendorName / ModuleName / 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">
    <preference for="Magento\Quote\Model\Quote\Item" type="VendorName\ModuleName\Model\Quote\Item" />
</config>

app / code / VendorName / ModuleName / Model / Quote / Item.php

<?php

namespace VendorName\ModuleName\Model\Quote;

class Item extends \Magento\Quote\Model\Quote\Item
{
    /**
     * Check product representation in item
     *
     * @param   \Magento\Catalog\Model\Product $product
     * @return  bool
     */
    public function representProduct($product)
    {
        return false;
    }
}