Magento 2 отключить слияние элементов в корзину

Aug 21 2020

ПРИВЕТ Я хочу, чтобы покупатель добавил такой же товар в корзину отдельной строкой. Я не хочу, чтобы они сливались в одну строку. Есть какой-либо способ сделать это? Я видел, как люди спрашивали Magento 1, есть ли какое-нибудь решение для Magento 2? благодаря

Ответы

2 PratikOza Aug 20 2020 at 23:31

Опция 1:

приложение / код / ​​имя поставщика / имя модуля / 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>

приложение / код / ​​имя поставщика / имя модуля / 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>

приложение / код / ​​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;
    }
}

Вариант 2:

приложение / код / ​​имя поставщика / имя модуля / 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>

приложение / код / ​​имя поставщика / имя модуля / 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>

приложение / код / ​​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;
    }
}