选择变体时Shopify SKU不更新

选择变体时Shopify SKU不更新,shopify,liquid,sku,Shopify,Liquid,Sku,我正在输入一个产品SKU编号,该编号应在根据选择变量时更改 按照指示,我将以下代码段放在我希望SKU显示的位置: {% assign current_variant = product.selected_or_first_available_variant %} <span class="variant-sku">{{ current_variant.sku }}</span> {%assign current\u variant=product.selected\u或

我正在输入一个产品SKU编号,该编号应在根据选择变量时更改

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

{% assign current_variant = product.selected_or_first_available_variant %}
<span class="variant-sku">{{ current_variant.sku }}</span>
{%assign current\u variant=product.selected\u或\u first\u available\u variant%}
{{current_variant.sku}}
然而,当变体被更改时,SKU永远不会像在他们教程的gif中那样更新

这是它在网站上不起作用的部分

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

我唯一的猜测是,Shopify可能已经改变了,现在的做法有所不同,或者我在某种程度上设置了错误的东西,尽管我遵循了教程的说明(放在product-template.liquid中,它是从product.liquid中引用的(主题是分段的)


我最近刚开始使用Shopify,但我会尽力提供帮助。我确实注意到您使用的是
当前的\u variant.sku
,但Shopify的对象参考资料说要使用
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
  });
},
另外,对于
\u initVarients
函数,缺少以下内容(与具有相同代码类型的其他行放在一起):

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

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

  this.$container.trigger({
    type: 'variantSKUChange',
    variant: variant
  });
},
位于SelectChange功能内(与具有相同代码类型的其他行一起放置):

位于
\u updatePrice
功能之后:

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

      // Update the sku
      $('.variant-sku').html(variant.sku);
    },
//变体已售完,请禁用提交按钮
//$addToCart.addClass('disabled').prop('disabled',true);
$addToCart.hide();
$variantQuantity.removeClass('is-visible');
if(变量输入){
$variantQuantity.html({{'products.product.will_'u stock_'u在''t:date:'[date]'.'json}}之后)。替换('[date]',variant.next_incoming_date)).addClass('is-visible');
}
否则{
$variantQuantity.removeClass('is-visible');
}
$quantityElements.hide();
$outofstock.show();
}
//console.log(variant.sku);
$('.variant sku').html(“”);
$('.variant.sku').text(variant.sku);
//更新价格显示。
var customPrice=Shopify.formatMoney(variant.price,theme.moneyFormat);
if(variant.compare_at_price>variant.price){
var comparePrice=Shopify.formatMoney(variant.compare\u at\u price,theme.moneyFormat);
var customPriceFormat=''+comparePrice+'';
customPriceFormat+=''+customPrice+'';
$productPrice.html(customPriceFormat);
var save=((variant.compare_at_price-variant.price)*100)/variant.compare_at_price;
$({products.id}.product image summary.onsale').html({{products.product.save|js'|t:saved_amount:'[sale]'| json}.replace('[sale]',Math.ceil(save)).show();
}否则{
$productPrice.html(customPrice);
$('#product-{{product.id}}.product image summary.onsale').hide();
}
jQuery('.currency.active').trigger('click');
//更新sku
if(变量sku){
$productsku.text(variant.sku);
}否则{
$productsku.text(theme.strings.na);

}
你能分享你的商店url吗?你在使用哪个主题?我可以帮你修复它…是的,肯定,url实际上在上面,上面写着“一个例子”()。我也在使用首个主题(我相信是最新版本)。请看这里,我添加了一些代码来更改sku密码:-rtublu让我知道这是否对您有效。。您检查了吗?@jhawes是的。请查看theme.js中的
slate.Variants
函数。特别是
\onChangeSelect
,它在变量更改和
此时被触发。\u updatePrice(variant)
我猜教程的一部分可能已经过时,或者是为非分段主题而设计的(较新的主题是分段的)我试过variat.sku,但是没有运气。下面是我正在编写的教程,以防它有帮助:我在代码中尝试过它,并且它工作得很好。我在devtools中看到了你的代码,看起来sku的代码不在表单中。您应该在sku代码下面看到一些内容在这里。div类和类似的东西。Sku代码应该在这里,无论你觉得合适的地方。你需要把Sku代码放在那些表单标签中。当我第一次读到你的评论时,我想“hot dang,就是这样……需要在表单标签中是有意义的”但仍然没有运气。我更新了页面,在中使用SKU调用。很高兴您找到了:)
_updateSKU: function(evt) {
      var variant = evt.variant;

      // Update the sku
      $('.variant-sku').html(variant.sku);
    },