Magento 2は、カートへのアイテムのマージを無効にします

Aug 21 2020

こんにちはお客様に同じ商品を別の行でカートに追加してほしいです。私はそれらが一緒にそして単一の行にマージされることを望まない。とにかくこれを行うことはありますか?Magento 1を求める人を見かけましたが、Magento 2の解決策はありますか?ありがとう

回答

2 PratikOza Aug 20 2020 at 23:31

オプション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;
    }
}

オプション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;
    }
}