status321 (02 October 2026 - 07:42) писал:
Здравствуйте.
1) Перейдите в раздел Сайт---Редактор шаблонов---Товар, и найдите код:
<select name="form[properties][]" class="selectBox">
Замените его на данный код:
<select name="form[properties][]" class="selectBox {% IF goods_modifications_properties.ID = 2454970 %}block__elem{% ENDIF %}">
2) Зайдите в раздел: Сайт---Редактор шаблонов---main.js, и найдите код:
// Запоминаем поля выбора свойств, для ускорения работы со значениями свойств
goodsDataProperties = $('form.goodsDataForm select[name="form[properties][]"]'),
// Запоминаем блоки с информацией по модификациям, для ускорения работы
goodsDataModifications = $('div.goodsDataMainModificationsList');
// Обновляет возможность выбора свойств модификации, для отключения возможности выбора по характеристикам модификации которой не существует.
function updateVisibility (y) {
// Проверяем в каждом соседнем поле выбора модификаций, возможно ли подобрать модификацию для указанных свойств
goodsDataProperties.each(function(j){
// Если мы сравниваем значения свойства не с самим собой, а с другим списком значений свойств
if( j != y ) {
// Проходим по всем значениям текущего свойства модификации товара
$(this).find('option').each(function(){
// Записываем временный массив свойств, которые будем использовать для проверки существования модификации
var checkProperties = new Array();
$(goodsDataProperties).each(function(i){
checkProperties[i] = parseInt($(this).val());
});
// Пытаемся найти модификацию соответствующую выбранным значениям свойств
checkProperties[j] = parseInt($(this).attr('value'));
// Собираем хэш определяющий модификацию по свойствам
slug = checkProperties.sort(function(a,B){return a - b}).join('_');
// Ищем модификацию по всем выбранным значениям свойств товара. Если модификации нет в возможном выборе, отмечаем потенциальное значение выбора как не доступное для выбора, т.к. такой модификации нет.
if(!goodsDataModifications.filter('[rel="'+slug+'"]').length) {
$(this).attr('disabled', true);
// Если выбрав данное значение свойства товара можно подобрать модификацию, то выделяем вариант выбора как доступный.
} else {
$(this).attr('disabled', false);
}
});
}
});
}
// Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность.
Замените его на данный код:
// Запоминаем поля выбора свойств, для ускорения работы со значениями свойств
goodsDataProperties = $('form.goodsDataForm select[name="form[properties][]"]'),
// Запоминаем блоки с информацией по модификациям, для ускорения работы
goodsDataModifications = $('div.goodsDataMainModificationsList');
// Обновляет возможность выбора свойств модификации
function updateVisibility(y) {
goodsDataProperties.each(function (j) {
if (j != y) {
var currentSelect = $(this);
// Ограничение по остатку применяем только к селекту с классом block__elem
var applyRestCheck = currentSelect.hasClass('block__elem');
currentSelect.find('option').each(function () {
var checkProperties = new Array();
$(goodsDataProperties).each(function (i) {
checkProperties[i] = parseInt($(this).val());
});
checkProperties[j] = parseInt($(this).attr('value'));
var slug = checkProperties.sort(function (a, B) {
return a - b;
}).join('_');
var modificationBlock = goodsDataModifications.filter('[rel="' + slug + '"]');
if (!modificationBlock.length) {
// Модификации нет — скрываем и отключаем
$(this).show().attr('disabled', true);
} else if (applyRestCheck) {
// Это "Выбрать простынь" — проверяем остаток
var restValue = parseFloat(modificationBlock.find('[name="rest_value"]').val());
if (isNaN(restValue) || restValue <= 0) {
// Остатка нет — скрываем и отключаем
$(this).hide().attr('disabled', true);
} else {
// Остаток есть — показываем и включаем
$(this).show().attr('disabled', false);
}
} else {
// Остальные свойства — только факт существования
$(this).show().attr('disabled', false);
}
});
}
});
}
// Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность.