Как настроить отбор по свойствам модификаций по отдельности. сейчас получается так, есть три свойства (товар шины, соответственно ширина профиля, профиль, радиус). У свойства ширина профиля 2 значения, у значения профиль 1 параметр, у радиуса 2 параметра. выбор сделать не получается. Как исправить?
Модификации Товаров
#1
Отправлено 10 Октябрь 2013 - 02:14
#2
Отправлено 10 Октябрь 2013 - 04:19
Пример:
Размер - 14
Цвет: Красный
Цвет: Желтый
Цвет: Белый
Размер - 15
Цвет: Красный
Цвет: Желтый
Цвет: Белый
Размер - 16
Цвет: Красный
Цвет: Зеленый
Цвет: Синий
Если групп больше, то и дубликатов должно быть больше. Попробуйте на коком-нибудь товаре поэкспериментировать.
#3
Отправлено 10 Октябрь 2013 - 06:07
Сake (10 Октябрь 2013 - 04:19) писал:
Пример:
Размер - 14
Цвет: Красный
Цвет: Желтый
Цвет: Белый
Размер - 15
Цвет: Красный
Цвет: Желтый
Цвет: Белый
Размер - 16
Цвет: Красный
Цвет: Зеленый
Цвет: Синий
Если групп больше, то и дубликатов должно быть больше. Попробуйте на коком-нибудь товаре поэкспериментировать.
а разве нет варианта в коде магазина изменить цикл обработки выбора свойств товара. Я думаю не у одного меня возникает такая проблема, на каком языке написан скрипт main.js? как я понял в нем находится цикл обработки выбора модификации и если я правильно понимаю, то вот он:
// Запоминаем поля выбора свойств, для ускорения работы со значениями свойств
goodsDataProperties = $('form.goodsDataForm select[name="form[properties][]"]'),
// Запоминаем блоки с информацией по модификациям, для ускорения работы
goodsDataModifications = $('div.ModificationsList');
// Обновляет возможность выбора свойств модификации, для отключения возможности выбора по характеристикам модификации которой не существует.
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,{return a - b}).join('_');
// Ищем модификацию по всем выбранным значениям свойств товара. Если модификации нет в возможном выборе, отмечаем потенциальное значение выбора как не доступное для выбора, т.к. такой модификации нет.
if(!goodsDataModifications.filter('[rel="'+slug+'"]').length) {
$(this).attr('disabled', true);
// Если выбрав данное значение свойства товара можно подобрать модификацию, то выделяем вариант выбора как доступный.
} else {
$(this).attr('disabled', false);
}
});
}
});
}
// Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность.
// Проверяем возможность выбора на всех полях кроме первого, чтобы отключить во всех остальных варианты, которые не возможно выбрать
updateVisibility (0);
// Проверяем возможность выбора на всех полях кроме второго, чтобы в первом поле так же отключилась возможность выбора не существующих модификаций
updateVisibility (1);
// Изменение цены товара при изменении у товара свойства для модификации
goodsDataProperties.each(function(y){
$(this).change(function(){
var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties),
submitButtonBlock = $('li.goodsPageSubmitButtonBlock:eq(0)'),
modificationBlock = goodsDataModifications.filter('[rel="'+slug+'"]'),
modificationId = parseInt(modificationBlock.find('[name="id"]').val()),
modificationArtNumber = modificationBlock.find('[name="art_number"]').val(),
modificationPriceNow = parseFloat(modificationBlock.find('[name="price_now"]').val()),
modificationPriceNowFormated = modificationBlock.find('.price_now_formated').html(),
modificationPriceOld = parseFloat(modificationBlock.find('[name="price_old"]').val()),
modificationPriceOldFormated = modificationBlock.find('.price_old_formated').html(),
modificationRestValue = parseFloat(modificationBlock.find('[name="rest_value"]').val()),
modificationDescription = modificationBlock.find('.description').html(),
modificationMeasureId = parseInt(modificationBlock.find('[name="measure_id"]').val()),
modificationMeasureName = modificationBlock.find('[name="measure_name"]').val(),
modificationMeasureDesc = modificationBlock.find('[name="measure_desc"]').val(),
modificationMeasurePrecision = modificationBlock.find('[name="measure_precision"]').val(),
modificationIsHasInCompareList= modificationBlock.find('[name="is_has_in_compare_list"]').val(),
goodsModificationId = $('.goodsDataMainModificationId'),
goodsPriceNow = $('.goodsDataMainModificationPriceNow'),
goodsPriceOld = $('.goodsDataMainModificationPriceOld'),
goodsAvailable = $('.goodsDataMainModificationAvailable'),
goodsAvailableTrue = goodsAvailable.find('.available-true'),
goodsAvailableFalse = goodsAvailable.find('.available-false'),
goodsArtNumberBlock = $('.goodsDataMainModificationArtNumber'),
goodsArtNumber = goodsArtNumberBlock.find('span');
goodsCompareAddButton = $('.goodsDataCompareButton.add');
goodsCompareDeleteButton = $('.goodsDataCompareButton.delete');
goodsModDescriptionBlock = $('.goodsDataMainModificationsDescriptionBlock');
// Изменяем данные товара для выбранных параметров. Если нашлась выбранная модификация
if(modificationBlock.length) {
// Цена товара
goodsPriceNow.html(modificationPriceNowFormated);
// Старая цена товара
if(modificationPriceOld>modificationPriceNow) {
goodsPriceOld.html(modificationPriceOldFormated);
} else {
goodsPriceOld.html('');
}
// Есть ли товар есть в наличии
if(modificationRestValue>0) {
// Показываем кнопку "Положить в корзину"
submitButtonBlock.show();
// Показываем табличку, что товар есть в наличии
goodsAvailableTrue.show();
// Скрываем табличку, о том что товара нет в наличии
goodsAvailableFalse.hide();
// Если товара нет в наличии
} else {
// Скрываем кнопку "Положить в корзину"
submitButtonBlock.hide();
// Скрываем табличку, что товар есть в наличии
goodsAvailableTrue.hide();
// Скрываем табличку, о том что товар есть в наличии
goodsAvailableFalse.show();
}
// Если товар есть в списке сравнения
if(modificationIsHasInCompareList>0) {
goodsCompareAddButton.hide();
goodsCompareDeleteButton.show();
// Если товара нет в списке сравнения
} else {
goodsCompareAddButton.show();
goodsCompareDeleteButton.hide();
}
как бы его поменять???!!!
#4
Отправлено 10 Октябрь 2013 - 08:13
liviy (10 Октябрь 2013 - 06:07) писал:
// Запоминаем поля выбора свойств, для ускорения работы со значениями свойств
goodsDataProperties = $('form.goodsDataForm select[name="form[properties][]"]'),
// Запоминаем блоки с информацией по модификациям, для ускорения работы
goodsDataModifications = $('div.ModificationsList');
// Обновляет возможность выбора свойств модификации, для отключения возможности выбора по характеристикам модификации которой не существует.
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, {return a - b}).join('_');
// Ищем модификацию по всем выбранным значениям свойств товара. Если модификации нет в возможном выборе, отмечаем потенциальное значение выбора как не доступное для выбора, т.к. такой модификации нет.
if(!goodsDataModifications.filter('[rel="'+slug+'"]').length) {
$(this).attr('disabled', true);
// Если выбрав данное значение свойства товара можно подобрать модификацию, то выделяем вариант выбора как доступный.
} else {
$(this).attr('disabled', false);
}
});
}
});
}
// Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность.
// Проверяем возможность выбора на всех полях кроме первого, чтобы отключить во всех остальных варианты, которые не возможно выбрать
updateVisibility (0);
// Проверяем возможность выбора на всех полях кроме второго, чтобы в первом поле так же отключилась возможность выбора не существующих модификаций
updateVisibility (1);
// Изменение цены товара при изменении у товара свойства для модификации
goodsDataProperties.each(function(y){
$(this).change(function(){
var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties),
submitButtonBlock = $('li.goodsPageSubmitButtonBlock:eq(0)'),
modificationBlock = goodsDataModifications.filter('[rel="'+slug+'"]'),
modificationId = parseInt(modificationBlock.find('[name="id"]').val()),
modificationArtNumber = modificationBlock.find('[name="art_number"]').val(),
modificationPriceNow = parseFloat(modificationBlock.find('[name="price_now"]').val()),
modificationPriceNowFormated = modificationBlock.find('.price_now_formated').html(),
modificationPriceOld = parseFloat(modificationBlock.find('[name="price_old"]').val()),
modificationPriceOldFormated = modificationBlock.find('.price_old_formated').html(),
modificationRestValue = parseFloat(modificationBlock.find('[name="rest_value"]').val()),
modificationDescription = modificationBlock.find('.description').html(),
modificationMeasureId = parseInt(modificationBlock.find('[name="measure_id"]').val()),
modificationMeasureName = modificationBlock.find('[name="measure_name"]').val(),
modificationMeasureDesc = modificationBlock.find('[name="measure_desc"]').val(),
modificationMeasurePrecision = modificationBlock.find('[name="measure_precision"]').val(),
modificationIsHasInCompareList= modificationBlock.find('[name="is_has_in_compare_list"]').val(),
goodsModificationId = $('.goodsDataMainModificationId'),
goodsPriceNow = $('.goodsDataMainModificationPriceNow'),
goodsPriceOld = $('.goodsDataMainModificationPriceOld'),
goodsAvailable = $('.goodsDataMainModificationAvailable'),
goodsAvailableTrue = goodsAvailable.find('.available-true'),
goodsAvailableFalse = goodsAvailable.find('.available-false'),
goodsArtNumberBlock = $('.goodsDataMainModificationArtNumber'),
goodsArtNumber = goodsArtNumberBlock.find('span');
goodsCompareAddButton = $('.goodsDataCompareButton.add');
goodsCompareDeleteButton = $('.goodsDataCompareButton.delete');
goodsModDescriptionBlock = $('.goodsDataMainModificationsDescriptionBlock');
// Изменяем данные товара для выбранных параметров. Если нашлась выбранная модификация
if(modificationBlock.length) {
// Цена товара
goodsPriceNow.html(modificationPriceNowFormated);
// Старая цена товара
if(modificationPriceOld>modificationPriceNow) {
goodsPriceOld.html(modificationPriceOldFormated);
} else {
goodsPriceOld.html('');
}
// Есть ли товар есть в наличии
if(modificationRestValue>0) {
// Показываем кнопку "Положить в корзину"
submitButtonBlock.show();
// Показываем табличку, что товар есть в наличии
goodsAvailableTrue.show();
// Скрываем табличку, о том что товара нет в наличии
goodsAvailableFalse.hide();
// Если товара нет в наличии
} else {
// Скрываем кнопку "Положить в корзину"
submitButtonBlock.hide();
// Скрываем табличку, что товар есть в наличии
goodsAvailableTrue.hide();
// Скрываем табличку, о том что товар есть в наличии
goodsAvailableFalse.show();
}
// Если товар есть в списке сравнения
if(modificationIsHasInCompareList>0) {
goodsCompareAddButton.hide();
goodsCompareDeleteButton.show();
// Если товара нет в списке сравнения
} else {
goodsCompareAddButton.show();
goodsCompareDeleteButton.hide();
}
как бы его поменять???!!!
Пока изменить, к сожалению, нельзя.
#6
Отправлено 18 Октябрь 2013 - 10:59
И вообще пришли бы вы к единому наименованию, ведь СВОЙСТВА и МОДИФИКАЦИИ - это ведь одно и тоже в вашем магазине!!!
#7
Отправлено 19 Октябрь 2013 - 04:50
Цитата
К сожалению, информации о подобной реализации у нас нету. Когда появиться данная реализация сказать сложно, так как имеются другие более важные задачи в приоритете. Спасибо за понимание.
#8
Отправлено 02 Август 2014 - 16:15
Когда я их создала, сначала все располагалось по порядку, соответствующему первым цифрам, т.е 120х190, 120х195, 120х200 ..........70х190, 70х195....90х195, 90х200. В каталоге на странице товара при это все модификации располагались так, как надо - от маленького размера к большому. Потом я где-то нажала на сортировку (по артикулу или по наименованию, в основных настройках поменяла, чтоб на увеличение шло), и товары в папках поменялись местами, а модификации в них вообще по-непонятному принципу расположились. Помогите, пожалуйста все вернуть - очень трудно заводить цены (не заходя в товар). Покажу в скрине, а то трудно объяснить.
#9
Отправлено 02 Август 2014 - 17:05
#10
Отправлено 02 Август 2014 - 18:01
Alekseys (02 Август 2014 - 17:05) писал:
Столкнулась в других товарах с тем, о чем Вы пишите. Заводила товар с шириной от 60см с диапазоном 5см на увеличение: когда потребовалось добавить товар шириной 55см, он встал в начало (там где заводишь - скрин№3 в том письме), но артикул продолжает отражаться с шириной 60см в таблице (скрин№1) и в карточке товаров тоже с артикулом 60см, и в окне модификаций для посетителей (по умолчанию). Пришлось удалить все модификации - и заводить заново с 55см.
Здесь же для посетителей все норм (т.к. все заведено по порядку), но проставлять цены дико неудобно.
#11
Отправлено 04 Август 2014 - 15:32
#12
Отправлено 23 Август 2014 - 14:28
#13
Отправлено 23 Август 2014 - 15:36
Coffee (23 Август 2014 - 14:28) писал:
Здравствуйте.
Зайдите в раздел Настройки-Основные-Товары.
И поставьте галочку в пункте:
В свойствах товарной модификации выдавать все свойства, даже если они одинаковы для всего товара
#14
Отправлено 28 Ноябрь 2014 - 10:48
#16
Отправлено 02 Декабрь 2014 - 09:59
Danil (28 Ноябрь 2014 - 10:59) писал:
В описание модификации можно добавить изображение.
Не могли бы вы описать, для каких целей это необходимо.
#17
Отправлено 02 Декабрь 2014 - 12:12
mjohn84 (02 Декабрь 2014 - 09:59) писал:
Вы можете добавлять изображения к модификациям, через описание модификации, используя следующую структуру.
<img src="ссылка на изображение">
#19
Отправлено 09 Декабрь 2014 - 10:24
A-start (09 Декабрь 2014 - 09:47) писал:
В шаблоне Товары найдите код
<a href="{goods.URL_MIN_PRICE_NOW}" {% IF goods.MIN_PRICE_NOW=0 %}style="display:none;"{% ENDIF %}>{goods.MIN_PRICE_NOW | money_format}</a>и замените на
<a href="{goods.URL_MIN_PRICE_NOW}" {% IF goods.MIN_PRICE_NOW=0 %}style="display:none;"{% ENDIF %}> {% IF goods.MIN_PRICE_NOW = goods.MAX_PRICE_NOW %}{goods.MIN_PRICE_NOW | money_format}{% ELSE %} от {goods.MIN_PRICE_NOW | money_format} до {goods.MAX_PRICE_NOW | money_format}{% ENDIF %} </a>
#20
Отправлено 12 Август 2015 - 10:35
Есть 2 разные модификации в одном товаре. Выбор работает только по одной из них.
Можно сделать что бы выбор работал по всем видам модификаций?
http://prntscr.com/83oi6f
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных