Изменение Модификации Товара
#1
Отправлено 06 Август 2014 - 01:32
#2
Отправлено 06 Август 2014 - 01:57
#3
Отправлено 06 Август 2014 - 22:20
Сake (06 Август 2014 - 01:57) писал:
#4
Отправлено 07 Август 2014 - 00:01
Реализуйте поэтапно, то есть сначала выполняем данную инструкцию:
http://forum.storela...ации/#entry4330
#5
Отправлено 08 Август 2014 - 21:56
Vaccina (07 Август 2014 - 00:01) писал:
Реализуйте поэтапно, то есть сначала выполняем данную инструкцию:
http://forum.storela...ации/#entry4330
мой код:
<!-- Модификации товара -->
<div class="block padd" {% IF GOODS_NO_CHOISE_IN_PROPERTIES_FOR_MODIFICATIONS %}style="display:none;"{% ENDIF %}>
{% FOR goods_modifications_properties %}
<div class="mod goodsDataMainModificationsBlockProperty">
{% FOR values %}
{% IF goods_modifications_properties.values.first %}
<div class="title b">{goods_modifications_properties.NAME}:</div>
<div class="select">
<select name="form[properties][]">
{% ENDIF %}
<option value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}selected="selected"{% ENDIF %}>{goods_modifications_properties.values.NAME}</option>
<!-- Если это последний элемент в списке -->
{% IF goods_modifications_properties.values.last %}
</select>
{% ENDIF %}
</div>
{% ENDFOR values %}
</div>
{% ENDFOR goods_modifications_properties %}
<div class="clear"></div>
</div>
<!-- Модификации товара-Конец -->
#6
Отправлено 09 Август 2014 - 04:59
{% IF goods_modifications_properties.values.first %} <div class="title b">{goods_modifications_properties.NAME}:</div> {% ENDIF %} <option value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}selected="selected"{% ENDIF %}>{goods_modifications_properties.values.NAME}</option>заменить на:
{% IF goods_modifications_properties.values.first %} <div class="title b">{goods_modifications_properties.NAME}:</div> {% ENDIF %} <input type="radio" name="form[properties][]" value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}checked="checked"{% ENDIF %} /> {goods_modifications_properties.values.NAME} <br />
#7
Отправлено 09 Август 2014 - 11:19
Vaccina (09 Август 2014 - 04:59) писал:
{% IF goods_modifications_properties.values.first %} <div class="title b">{goods_modifications_properties.NAME}:</div> {% ENDIF %} <option value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}selected="selected"{% ENDIF %}>{goods_modifications_properties.values.NAME}</option>заменить на:
{% IF goods_modifications_properties.values.first %} <div class="title b">{goods_modifications_properties.NAME}:</div> {% ENDIF %} <input type="radio" name="form[properties][]" value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}checked="checked"{% ENDIF %} /> {goods_modifications_properties.values.NAME} <br />
#8
Отправлено 10 Август 2014 - 08:32
vadim777 (09 Август 2014 - 11:19) писал:
<div class="tabsHeaders"> <!-- Если есть какое-либо описание товара --> {% IF GOODS_DESCRIPTION_LARGE || GOODS_SEO_DESCRIPTION_SHORT || GOODS_SEO_DESCRIPTION_LARGE %} <dt class="active tab" title="Описание «{GOODS_NAME}»"><h3>Описание</h3></dt> {% ENDIF %} <!-- Блок описания вариантов доставки --> {% IFNOT goods_delivery_empty %} <dt class="tab" title="Условия доставки «{GOODS_NAME}»"><h3>Условия доставки</h3></dt> {% ENDIF %} <!-- Сопутствующие товары. Выводим только если есть сопутствующие товары --> {% IFNOT related_goods_empty %} <dt class="tab" title="Сопутствующие товары «{GOODS_NAME}»"><h3>Сопутствующие товары</h3></dt> {% ENDIF %}замените на
<div class="tabsHeaders"> <!-- Если есть какое-либо описание товара --> {% IF GOODS_DESCRIPTION_LARGE || GOODS_SEO_DESCRIPTION_SHORT || GOODS_SEO_DESCRIPTION_LARGE %} <dt class="active tab" title="Описание «{GOODS_NAME}»"><h3>Описание</h3></dt> {% ENDIF %} {% IFNOT goods_features_empty %} <dt class="tab" title="Характеристики «{GOODS_NAME}»"><h3>Характеристики</h3></dt> {% ENDIF %} <!-- Блок описания вариантов доставки --> {% IFNOT goods_delivery_empty %} <dt class="tab" title="Условия доставки «{GOODS_NAME}»"><h3>Условия доставки</h3></dt> {% ENDIF %} <!-- Сопутствующие товары. Выводим только если есть сопутствующие товары --> {% IFNOT related_goods_empty %} <dt class="tab" title="Сопутствующие товары «{GOODS_NAME}»"><h3>Сопутствующие товары</h3></dt> {% ENDIF %}
#9
Отправлено 14 Август 2014 - 20:23
#10
Отправлено 15 Август 2014 - 01:05
<!-- Модификации товара --> <div class="block padd" {% IF GOODS_NO_CHOISE_IN_PROPERTIES_FOR_MODIFICATIONS %}style="display:none;"{% ENDIF %}> {% FOR goods_modifications_properties %} <div class="mod goodsDataMainModificationsBlockProperty"> {% FOR values %} {% IF goods_modifications_properties.values.first %} <div class="title b">{goods_modifications_properties.NAME}:</div> <div class="select"> <select name="form[properties][]"> {% ENDIF %} <option value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}selected="selected"{% ENDIF %}>{goods_modifications_properties.values.NAME}</option> <!-- Если это последний элемент в списке --> {% IF goods_modifications_properties.values.last %} </select> {% ENDIF %} </div> {% ENDFOR values %} </div> {% ENDFOR goods_modifications_properties %} <div class="clear"></div> </div> <!-- Модификации товара-Конец -->
и замените его на
<!-- Модификации товара --> <div class="block padd" {% IF GOODS_NO_CHOISE_IN_PROPERTIES_FOR_MODIFICATIONS %}style="display:none;"{% ENDIF %}> {% FOR goods_modifications_properties %} <div class="mod goodsDataMainModificationsBlockProperty"> {% FOR values %} {% IF goods_modifications_properties.values.first %} <div class="title b">{goods_modifications_properties.NAME}:</div> <div class="select"> {% ENDIF %} <input type="radio" name="form[properties][]" value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}checked="checked"{% ENDIF %}> {goods_modifications_properties.values.NAME} <!-- Если это последний элемент в списке --> </div> {% ENDFOR values %} </div> {% ENDFOR goods_modifications_properties %} <div class="clear"></div> </div> <!-- Модификации товара-Конец -->
после этого в файле main.js найдите код
// Функция собирает свойства в строку, для определения модификации товара function getSlugFromGoodsDataFormModificationsProperties(obj) { var properties = new Array(); $(obj).each(function(i) { properties[i] = parseInt($(this).val()); }); return properties.sort(function(aaa, bbb) { return aaa - bbb }).join('_'); } var // Запоминаем поля выбора свойств, для ускорения работы со значениями свойств 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, B) { 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),
и заменить его на код
// Функция собирает свойства в строку, для определения модификации товара function getSlugFromGoodsDataFormModificationsProperties(obj) { var properties = new Array(); var reset_arr = new Array(); $(obj).each(function(i){ if($(this).is(':checked')){ properties[i] = parseInt($(this).val());} }); for(var i in properties) { if(properties[i]) { reset_arr.push(properties[i]); } } return reset_arr.sort(function(aaa,bbb){return aaa - bbb}).join('_'); } var // Запоминаем поля выбора свойств, для ускорения работы со значениями свойств goodsDataProperties = $('form.goodsDataForm input[name="form[properties][]"]'), // Запоминаем блоки с информацией по модификациям, для ускорения работы goodsDataModifications = $('div.ModificationsList'); // Обновляет возможность выбора свойств модификации, для отключения возможности выбора по характеристикам модификации которой не существует. function updateVisibility(y) { // Проверяем в каждом соседнем поле выбора модификаций, возможно ли подобрать модификацию для указанных свойств goodsDataProperties.each(function(j) { // Если мы сравниваем значения свойства не с самим собой, а с другим списком значений свойств if (j != y) { // Проходим по всем значениям текущего свойства модификации товара $(this).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(aaa, bbb) { return aaa - bbb }).join('_'); // Ищем модификацию по всем выбранным значениям свойств товара. Если модификации нет в возможном выборе, отмечаем потенциальное значение выбора как не доступное для выбора, т.к. такой модификации нет. if (!goodsDataModifications.filter('[rel="' + slug + '"]').length && !goodsDataModifications.filter('[rel="' + checkProperties[0] + '"]').length) { $(this).attr('disabled', true); // Если выбрав данное значение свойства товара можно подобрать модификацию, то выделяем вариант выбора как доступный. } else { $(this).attr('disabled', false); } }); } }); } // Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность. // Проверяем возможность выбора на всех полях кроме первого, чтобы отключить во всех остальных варианты, которые не возможно выбрать updateVisibility(0); // Проверяем возможность выбора на всех полях кроме второго, чтобы в первом поле так же отключилась возможность выбора не существующих модификаций updateVisibility(1); // Изменение цены товара при изменении у товара свойства для модификации goodsDataProperties.each(function(y) { $(this).click(function() { var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties),
#11
Отправлено 15 Август 2014 - 11:38
Сake (15 Август 2014 - 01:05) писал:
#12
Отправлено 15 Август 2014 - 11:54
vadim777 (15 Август 2014 - 11:38) писал:
В main.css
dt.tab.active h3 { border-bottom: 0px; background: #395169; font-weight: bold; padding: 10.4px 18px; }измените на
dt.tab.active h3 { border-bottom: 0px; background: #395169; font-weight: bold; padding: 10.5px 18px; }Уточните, пожалуйста, что нужно переместить горизонтально?
#13
Отправлено 15 Август 2014 - 12:22
batta (15 Август 2014 - 11:54) писал:
В main.css
dt.tab.active h3 { border-bottom: 0px; background: #395169; font-weight: bold; padding: 10.4px 18px; }измените на
dt.tab.active h3 { border-bottom: 0px; background: #395169; font-weight: bold; padding: 10.5px 18px; }Уточните, пожалуйста, что нужно переместить горизонтально?
выбор модификаций, сейчас он вертикально.
#15
Отправлено 15 Август 2014 - 20:08
vadim777 (15 Август 2014 - 19:37) писал:
теперь выбор модификаций осталось сделать в строку горизонтально. жду помощи
Здравствуйте.
Добавьте в main.css код
.mod.goodsDataMainModificationsBlockProperty .select { float: left; margin-right: 5px; }
#17
Отправлено 15 Август 2014 - 21:12
vadim777 (15 Август 2014 - 20:53) писал:
Найдите в шаблоне Товар этот код
<!-- Модификации товара --> <div class="block padd" {% IF GOODS_NO_CHOISE_IN_PROPERTIES_FOR_MODIFICATIONS %}style="display:none;"{% ENDIF %}> {% FOR goods_modifications_properties %} <div class="mod goodsDataMainModificationsBlockProperty"> {% FOR values %} {% IF goods_modifications_properties.values.first %} <div class="title b">{goods_modifications_properties.NAME}:</div> <div class="select"> {% ENDIF %} <input type="radio" name="form[properties][]" value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}checked="checked"{% ENDIF %}> {goods_modifications_properties.values.NAME} <!-- Если это последний элемент в списке --> {% IF goods_modifications_properties.values.first %} </div>{% ENDIF %} {% ENDFOR values %} </div> {% ENDFOR goods_modifications_properties %} <div class="clear"></div> </div> <!-- Модификации товара-Конец -->И замените на
<!-- Модификации товара --> <div class="block padd" {% IF GOODS_NO_CHOISE_IN_PROPERTIES_FOR_MODIFICATIONS %}style="display:none;"{% ENDIF %}> {% FOR goods_modifications_properties %} <div class="mod goodsDataMainModificationsBlockProperty"> {% FOR values %} {% IF goods_modifications_properties.values.first %} <div class="title b">{goods_modifications_properties.NAME}:</div> <br> <div class="select"> {% ENDIF %} <input type="radio" name="form[properties][]" value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}checked="checked"{% ENDIF %}> {goods_modifications_properties.values.NAME} <!-- Если это последний элемент в списке --> {% IF goods_modifications_properties.values.first %} </div>{% ENDIF %} {% ENDFOR values %} </div> {% ENDFOR goods_modifications_properties %} <div class="clear"></div> </div> <!-- Модификации товара-Конец -->
#19
Отправлено 15 Август 2014 - 23:43
http://forum.storela...120#entry137350
#20
Отправлено 17 Август 2014 - 20:45
Vaccina (15 Август 2014 - 23:43) писал:
http://forum.storela...120#entry137350
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных