选择变体时,Shopify SKU不会更新

时间:2017-01-27 22:23:19

标签: shopify liquid sku

我在调用基于this Shopify tutorial选择变体时应该更改的产品SKU编号。

按照说明,我将以下代码段放在我想要显示SKU的地方:

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

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

这是an example在网站上的enter image description here

enter image description here

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

我唯一的猜测是,Shopify可能已经改变了,现在这种情况有所不同,或者我以某种方式错误地设置了一些东西,尽管我已经按照教程的说明进行了操作(放在product-template.liquid中,它被引用了来自product.liquid(主题分段)。

manual

3 个答案:

答案 0 :(得分:0)

我刚刚开始使用Shopify,但我会尽力帮忙。我确实注意到您使用的是current_variant.sku,但Shopify的对象参考资料表示使用variant.sku。这是我发现它的地方:

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

希望这有帮助。

答案 1 :(得分:0)

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

尽管变量更改sku所需的theme.js文件中还有一个非常重要的功能。

这些似乎尚未安装在我的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);
    },

答案 2 :(得分: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);
            
           }

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

enter image description here