1

目前我已经将 vue-storefront 连接到 magento2 并且一切都按预期工作

有一个要求,如果在 magento 末端的购物车中添加了另一个具有相同但具有附加属性的相同产品sku,它应该在 vue 店面的购物车中显示为不同的项目。idoptions

几乎就像 magento 的捆绑产品,但在此它作为单独的项目添加到 magento 购物车中。

因此,当 vuestore 从服务器中提取项目时,我可以看到所有项目,包括相同的 sku 项目。

但因为它具有相同的 sku 和 id。它没有添加到 vuestore 购物车中。

我已经浏览了 vue-storefront 核心代码,并对我的测试进行了一些更改。

例如下面的代码进行比较。

添加了这个core/modules/cart/helpers/productsEquals.ts

  if (getAdhesiveGroutOptions(product1, 'options').length || getAdhesiveGroutOptions(product2, 'options').length) {
    // in admin panel we can add different sku for specific custom option so we can't rely on 'sku'
    // by default we want to check server_item_id ('id'), we can also use 'checksum'

    if(product1.sku && product2.sku && product1.sku === product2.sku){
      //Seems like they are same products, so just check if their options are similar as well.
      console.log('FullObjectAdhesiveGrouts', product1, product2);
      let adhesiveGroutOptions2 = getAdhesiveGroutOptions(product2, 'options');
      let adhesiveGroutOptions1 = getAdhesiveGroutOptions(product1, 'options');
      console.log('JustTheAdhesiveGroutOptions', adhesiveGroutOptions1, adhesiveGroutOptions2);
      if(product1.item_id){
        if(product2.totals && product2.totals.options && product2.totals.options.length > 0){
          return product1.item_id === product2.totals.item_id
        }
      }else{
        if(product2.item_id && product1.totals && product1.totals.options && product1.totals.options.length > 0){
          return product2.item_id === product1.totals.item_id
        }
      }
    }
    return false;
  }

但我仍然试图找出这种附加条件存在于何处检查类似 sku。

好像我添加了另一个具有不同 sku 和产品 ID 的产品,然后在 vuestore 的页面加载时,拉取调用也会将 magento 上新添加的项目更新到 vuestore 购物车。

4

0 回答 0