我在调用基于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在网站上的。
另外,这里有一个屏幕截图,显示该选项确实是Shopify变体而不是其他东西(只是涵盖了我的所有基础)。
我唯一的猜测是,Shopify可能已经改变了,现在这种情况有所不同,或者我以某种方式错误地设置了一些东西,尽管我已经按照教程的说明进行了操作(放在product-template.liquid中,它被引用了来自product.liquid(主题分段)。
答案 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代码段。