At magento 2.3.1 for configurable products, i would like to show a stock message for quantity near the label. If Less than or equal to then, stock message
Where is located the file which call this? I don't find the file to modify...
Hello pantelisgr,
For label the core file of magento (vendor/magento/module-configurable-product/view/frontend/web/js/configurable.js) is responsible. Please look at the below functions in this file:
/** * Populates an option's selectable choices. * @private * @param {*} element - Element associated with a configurable option. */ _fillSelect: function (element) { var attributeId = element.id.replace(/[a-z]*/, ''), options = this._getAttributeOptions(attributeId), prevConfig, index = 1, allowedProducts, i, j, basePrice = parseFloat(this.options.spConfig.prices.basePrice.amount), optionFinalPrice, optionPriceDiff, optionPrices = this.options.spConfig.optionPrices, allowedProductMinPrice; this._clearSelect(element); element.options[0] = new Option('', ''); element.options[0].innerHTML = this.options.spConfig.chooseText; prevConfig = false; if (element.prevSetting) { prevConfig = element.prevSetting.options[element.prevSetting.selectedIndex]; } if (options) { for (i = 0; i < options.length; i++) { allowedProducts = []; optionPriceDiff = 0; /* eslint-disable max-depth */ if (prevConfig) { for (j = 0; j < options[i].products.length; j++) { // prevConfig.config can be undefined if (prevConfig.config && prevConfig.config.allowedProducts && prevConfig.config.allowedProducts.indexOf(options[i].products[j]) > -1) { allowedProducts.push(options[i].products[j]); } } } else { allowedProducts = options[i].products.slice(0); if (typeof allowedProducts[0] !== 'undefined' && typeof optionPrices[allowedProducts[0]] !== 'undefined') { allowedProductMinPrice = this._getAllowedProductWithMinPrice(allowedProducts); optionFinalPrice = parseFloat(optionPrices[allowedProductMinPrice].finalPrice.amount); optionPriceDiff = optionFinalPrice - basePrice; if (optionPriceDiff !== 0) { options[i].label = options[i].label + ' ' + priceUtils.formatPrice( optionPriceDiff, this.options.priceFormat, true); } } } if (allowedProducts.length > 0) { options[i].allowedProducts = allowedProducts; element.options[index] = new Option(this._getOptionLabel(options[i]), options[i].id); if (typeof options[i].price !== 'undefined') { element.options[index].setAttribute('price', options[i].price); } element.options[index].config = options[i]; index++; } /* eslint-enable max-depth */ } } }, /** * Generate the label associated with a configurable option. This includes the option's * label or value and the option's price. * @private * @param {*} option - A single choice among a group of choices for a configurable option. * @return {String} The option label with option value and price (e.g. Black +1.99) */ _getOptionLabel: function (option) { return option.label; },
If you want to change the label override this js file in your theme and make changes accordingly.
Hope it will help you.