选择变体时 Shopify SKU 不更新

Shopify SKU not updating when variant is selected

我正在调用一个产品 SKU 编号,当根据 this Shopify tutorial 选择变体时,该编号应该会更改。

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

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

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

网站上有 an example 它无法正常工作。

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

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

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

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

希望对您有所帮助。

我从未编辑过此网站的 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);
    },

  // 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);
            
           }

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

enter image description here