這並不難。如果您已經按照您在問題中提到的Shopify tutorial實施了顏色色板,那麼您只需在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 /紅色」已售罄,您會得到:

我也把這段代碼放在gist。