这一点也不难。如果您已经按照您在问题中提到的Shopify 教程实现了色板,那么您只需向该selectCallback
函数添加一些额外的代码。
添加到product.liquid:
...
var selectCallback = function(variant, selector) {
...
var selectedSize = jQuery('.size.options li.selected span').text();
if (selectedSize.length > 0) {
var variants = selector.product.variants;
var variantTitles = [];
var i;
for (i = 0; i < variants.length; i++) {
variantTitles.push(variants[i].title);
}
jQuery('.color.options li').each( function() {
var variantTitle = selectedSize + " / " + jQuery('div', this).text();
// if variantTitle is a valid variant & not sold out, remove unavailable class
var variantIndex = jQuery.inArray(variantTitle, variantTitles);
if (variantIndex != -1 && variants[variantIndex].available == true) {
jQuery('span', this).removeClass('unavailable');
}
// if not a valid variant or sold out, add unavailable class
else {
jQuery('span', this).addClass('unavailable');
}
});
}
};
...
添加到swatches.liquid(在<style>
标签内):
.unavailable { opacity: 0.2; }
然后,如果您有 2 种尺寸(SM、MD)和 2 种颜色(红色、蓝色),并且“SM / Red”已售罄,您会得到:
我也把这段代码放在了gist中。