msOptionsPrice2 Вывод остатков на страницу товара.
Здравствуйте! Сломал уже голову… Помогите вывести на страницу остатки товара из модификации msOptionsPrice2 или при остатке товара = 0 — скрыть кнопку «В корзину». Заранее благодарю Вас!
Комментарии: 7
Если вы выводите список модификаций на страницу, то можно попробовать использовать плейсхолдер count.
К сожалению не вывожу списком. Работают как опции товара. Скрыть кнопку «купить» если кол-во = 0… подскажите это, в целом, возможно? Возможно был опыт?
Возможно, через JS.
В целом так и сделал… Благодарю.
Делаю вот так:
Вызываю так на странице товара
Вызываю так на странице товара
[[!msOptionsPrice.modification?
&tpl=`count_tpl`
&where=`{"count" > 0}`
&toPlaceholder=`mycounts`
]]
Чанк count_tpl[[+count]] шт
Затем пытаюсь вывести на странице так<span class="msoptionsprice-count msoptionsprice-[[*id]]">[[+mycounts]]</span>
Я понимаю что ошибка но не могу понять как это решить. На примере есть вывод кол-ва товара вот тут, но как его вывести… не пойму
Кому интересно, то вот так реализовал. Костыли, но работают…
На странице товара вывожу остаток модификации товара
На странице товара вывожу остаток модификации товара
<p class="msoptionsprice-count msoptionsprice-[[*id]] numeric-value" id="ajax-container">[[+count]]</p>
в footer добавил js с таким содержимымdocument.addEventListener("DOMContentLoaded", function() {
function handleAjax() {
const numericElements = document.querySelectorAll(".numeric-value");
for (let i = 0; i < numericElements.length; i++) {
const value = parseFloat(numericElements[i].textContent);
if (value === 0) {
numericElements[i].textContent = "Нет в наличии";
} else if (value > 0) {
numericElements[i].textContent = "Есть в наличии";
}
}
}
document.addEventListener("ajaxLoad", handleAjax);
setTimeout(function() {
const newNumericValue = document.createElement("span");
newNumericValue.textContent = "0";
newNumericValue.classList.add("numeric-value");
document.body.appendChild(newNumericValue);
const newNumericValue2 = document.createElement("span");
newNumericValue2.textContent = "10";
newNumericValue2.classList.add("numeric-value");
document.body.appendChild(newNumericValue2);
const ajaxLoadEvent = new Event("ajaxLoad");
document.dispatchEvent(ajaxLoadEvent);
}, 3000);
const observer = new MutationObserver(function(mutationsList) {
for (const mutation of mutationsList) {
if (mutation.type === "childList") {
const ajaxLoadEvent = new Event("ajaxLoad");
document.dispatchEvent(ajaxLoadEvent);
}
}
});
const ajaxContainer = document.querySelector("#ajax-container");
if (ajaxContainer) {
observer.observe(ajaxContainer, { childList: true });
}
});
В вёрстке добавляем блок
<div id="remain">0</div>
В ФАЙЛ со скриптами (потому что нужно блюсти чистоту кода) добавляем код:$(document).on('msoptionsprice_product_action', function (e, action, form, response) {
$('#remain').innerText = response.modification.count;
});
Всё.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.