1

我正在调用一个产品 SKU 编号,该编号应该在根据此 Shopify 教程选择变体时更改。

按照指示,我将以下代码段放置在我希望 SKU 显示的位置:

{% assign current_variant = product.selected_or_first_available_variant %}
<span class="variant-sku">{{ current_variant.sku }}</span>

然而,当变体改变时,SKU 永远不会像他们教程的 gif 中那样更新。

这是它不起作用的网站上的一个示例。

在此处输入图像描述

此外,这是一个屏幕截图,显示该选项确实是 Shopify 变体,而不是其他东西(只是为了涵盖我的所有基础)。

我唯一的猜测是 Shopify 可能已经改变了,现在做的方式有所不同,或者我以某种方式设置了一些不正确的东西,尽管我已经按照教程的说明(放置在 product-template.liquid 中,从产品中引用) .liquid(主题是分段的)。

在此处输入图像描述

4

3 回答 3

1

我从未编辑过该网站的 Assets/theme.js 文件,而且我相当确定除了我自己之外没有其他人接触过任何文件。

尽管如此,theme.js 文件中仍有一个非常重要的功能是变体更改 sku 所需的。

这些是我的 theme.js 文件中似乎没有安装的行:

_updateSKU: function(variant) {
  if (variant.sku === this.currentVariant.sku) {
    return;
  }

  this.$container.trigger({
    type: 'variantSKUChange',
    variant: variant
  });
},

此外,对于该_initVarients函数,缺少以下内容(与具有相同类型代码的其他行放在一起):

this.$container.on('variantSKUChange' + this.settings.namespace, this._updateSKU.bind(this));

这些在我的 theme.js 文件中并没有丢失,但值得检查,因为它们是 SKU 更新所必需的:

位于_onSelectChange函数内部(与具有相同类型代码的其他行放在一起):

this._updateSKU(variant);

位于_updatePrice函数之后:

_updateSKU: function(evt) {
      var variant = evt.variant;

      // Update the sku
      $('.variant-sku').html(variant.sku);
    },
于 2017-04-03T21:01:15.957 回答
0

  // Variant is sold out, disable the submit button
            // $addToCart.addClass('disabled').prop('disabled', true);
            $addToCart.hide();
            $variantQuantity.removeClass('is-visible');
            if (variant.incoming) {
              $variantQuantity.html({{ 'products.product.will_be_in_stock_after' | t: date: '[date]' | json }}.replace('[date]', variant.next_incoming_date)).addClass('is-visible');
            }
            else {
              $variantQuantity.removeClass('is-visible');
            }
            $quantityElements.hide();
            $outofstock.show();
          }
          //console.log(variant.sku);
          $('.variant-sku').html("");
          $('.variant-sku').text(variant.sku);
           // Update price display.
          var customPrice = Shopify.formatMoney(variant.price, theme.moneyFormat);
          if (variant.compare_at_price > variant.price) {
            var comparePrice = Shopify.formatMoney(variant.compare_at_price, theme.moneyFormat);
            var customPriceFormat = ' <del id="old-product-price">' + comparePrice + '</del>';
                customPriceFormat += ' <ins id="product-price">' + customPrice + '</ins>';
            $productPrice.html(customPriceFormat);
            var save = ((variant.compare_at_price - variant.price)*100)/variant.compare_at_price;
            $('#product-{{product.id}} .product-image-summary .onsale').html({{ 'products.product.save_js' | t: saved_amount: '[sale]' | json }}.replace('[sale]', Math.ceil(save))).show();
          }else{
             $productPrice.html(customPrice);
            $('#product-{{product.id}} .product-image-summary .onsale').hide();
          }
          jQuery('.currency .active').trigger('click');
          //Update sku
          if(variant.sku){
             $productsku.text(variant.sku);
            
          }else{
              $productsku.text(theme.strings.na);
            
           }

我发现 product_js.liquid 片段需要更新。

在此处输入图像描述

于 2019-05-17T19:48:46.000 回答
0

我最近才开始使用 Shopify 但我会尽力提供帮助。我确实注意到您正在使用current_variant.sku,但 Shopify 的对象参考资料说使用variant.sku. 这是我找到它的地方:

https://help.shopify.com/themes/liquid/objects/variant#variant-sku

希望这会有所帮助。

于 2017-01-31T04:11:01.970 回答