Добавить Кнопки Выбора Модификаций В Карточке Товара
#1
Отправлено 27 Январь 2016 - 11:37
Нужно в каждой карточке товара добавить кнопки с мдификациями, то что реализовано по умолчанию не подходит совсем! Я до сих пор не понял как с этими вкладками работать.
Хочу реализовать как на картинке, к каждой модификации можно добавить ссылку на другой товар и при нажатии страница просто обновляется и человек попадает к такому же товару но уже с другими хар-ками. Например: Я захожу на карточку товара, где продается телефон Nexus 5X 16 gb черный, затем нажимаю на кнопку 32Gb, страница обновляется и попадает на другую страницу, где уже находится Nexus 5X 32 gb. Примерно так) И нужно в мобильной версии сайта чтобы отображалочь корректно. Возможно такое сделать? Очень нужно!
#2
Отправлено 27 Январь 2016 - 18:44
Ильяc (27 Январь 2016 - 11:37) писал:
Нужно в каждой карточке товара добавить кнопки с мдификациями, то что реализовано по умолчанию не подходит совсем! Я до сих пор не понял как с этими вкладками работать.
Хочу реализовать как на картинке, к каждой модификации можно добавить ссылку на другой товар и при нажатии страница просто обновляется и человек попадает к такому же товару но уже с другими хар-ками. Например: Я захожу на карточку товара, где продается телефон Nexus 5X 16 gb черный, затем нажимаю на кнопку 32Gb, страница обновляется и попадает на другую страницу, где уже находится Nexus 5X 32 gb. Примерно так) И нужно в мобильной версии сайта чтобы отображалось корректно. Возможно такое сделать? Очень нужно!
доп кнопки.png
Здравствуйте, что-то подобное можно реализовать. Например, можно добавлять эти ссылки в описании товара. Или переделать блок сопутствующие товары (если он Вам не нужен): переименовать его в "другие модификации товара" и настроить отображение этого блока так, как нужно Вам.
#3
Отправлено 27 Январь 2016 - 23:32
Юля123 (27 Январь 2016 - 18:44) писал:
#4
Отправлено 28 Январь 2016 - 03:29
http://forum.storela...240#entry214519
#5
Отправлено 28 Январь 2016 - 09:46
#6
Отправлено 28 Январь 2016 - 10:02
Ильяc (28 Январь 2016 - 09:46) писал:
Попробуйте в шаблоне Товар найти код:
{% FOR goods_modifications_properties %} <div class="goodsDataMainModificationsBlockProperty"> <!-- Выдаем списки со свойствами для модификаций, чтобы определить какую модификацию товара хочет пользователь --> {% FOR values %} <!-- Если это первый элемент в списке --> {% IF goods_modifications_properties.values.first %} <strong>{goods_modifications_properties.NAME}:</strong> <select name="form[properties][]" class="selectBox product-custom-option selectBox-dropdown"> {% 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 %} {% ENDFOR %} </div> {goods_modifications_properties.index | is_divided("2","","")} {% ENDFOR %}
и замените на код:
{% FOR goods_modifications_properties %} <td class="goodsDataMainModificationsBlockProperty"> <!-- Выдаем списки со свойствами для модификаций, чтобы определить какую модификацию товара хочет пользователь --> {% FOR values %} <!-- Если это первый элемент в списке --> {% IF goods_modifications_properties.values.first %} <span class="goodsDataMainModificationsRadio"> <strong>{goods_modifications_properties.NAME}:</strong><br /> {% ENDIF %} <input type="radio" name="form[properties][{goods_modifications_properties.ID}]" value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}checked="checked"{% ENDIF %} /> {goods_modifications_properties.values.NAME} <br /> {% IF goods_modifications_properties.values.last %} </span> {% ENDIF %} {% ENDFOR %} </td> {goods_modifications_properties.index | is_divided("2","</tr><tr>","")} {% ENDFOR %}
#7
Отправлено 28 Январь 2016 - 11:06
Юля123 (28 Январь 2016 - 10:02) писал:
{% FOR goods_modifications_properties %} <div class="goodsDataMainModificationsBlockProperty"> <!-- Выдаем списки со свойствами для модификаций, чтобы определить какую модификацию товара хочет пользователь --> {% FOR values %} <!-- Если это первый элемент в списке --> {% IF goods_modifications_properties.values.first %} <strong>{goods_modifications_properties.NAME}:</strong> <select name="form[properties][]" class="selectBox product-custom-option selectBox-dropdown"> {% 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 %} {% ENDFOR %} </div> {goods_modifications_properties.index | is_divided("2","","")} {% ENDFOR %}
и замените на код:
{% FOR goods_modifications_properties %} <td class="goodsDataMainModificationsBlockProperty"> <!-- Выдаем списки со свойствами для модификаций, чтобы определить какую модификацию товара хочет пользователь --> {% FOR values %} <!-- Если это первый элемент в списке --> {% IF goods_modifications_properties.values.first %} <span class="goodsDataMainModificationsRadio"> <strong>{goods_modifications_properties.NAME}:</strong><br /> {% ENDIF %} <input type="radio" name="form[properties][{goods_modifications_properties.ID}]" value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}checked="checked"{% ENDIF %} /> {goods_modifications_properties.values.NAME} <br /> {% IF goods_modifications_properties.values.last %} </span> {% ENDIF %} {% ENDFOR %} </td> {goods_modifications_properties.index | is_divided("2","</tr><tr>","")} {% ENDFOR %}
Сообщение отредактировал Ильяc: 28 Январь 2016 - 11:08
#8
Отправлено 28 Январь 2016 - 14:46
Ильяc (28 Январь 2016 - 11:06) писал:
// Функция собирает свойства в строку, для определения модификации товара function getSlugFromGoodsDataFormModificationsProperties(obj) { var properties = new Array(); $(obj).each(function(i){ properties[i] = parseInt($(this).val()); }); return properties.sort(function(a,B){return a - b}).join('_'); } var // Запоминаем поля выбора свойств, для ускорения работы со значениями свойств 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); } }); } }); } // Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность. // Проверяем возможность выбора на всех полях кроме первого, чтобы отключить во всех остальных варианты, которые не возможно выбрать updateVisibility (0); // Проверяем возможность выбора на всех полях кроме второго, чтобы в первом поле так же отключилась возможность выбора не существующих модификаций updateVisibility (1); //var goodsDataProperties = $('.goodsDataForm [name="form[properties][]"]'); // Изменение цены товара при изменении у товара свойства для модификации goodsDataProperties.each(function(){ $(this).change(function(){ var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties), modificationBlock = $('.goodsDataMainModificationsList[rel="'+slug+'"]'), modificationId = parseInt(modificationBlock.find('[name="id"]').val()), modificationArtNumber = modificationBlock.find('[name="art_number"]').val(), modificationPriceNow = parseInt(modificationBlock.find('[name="price_now"]').val()), modificationPriceNowFormated = modificationBlock.find('.price_now_formated').html(), modificationPriceOld = parseInt(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'), goodsAvailableAddCart = $('.add-to-form'), goodsArtNumberBlock = $('.goodsDataMainModificationArtNumber'), goodsArtNumber = goodsArtNumberBlock.find('span'); goodsCompareAddButton = $('.goodsDataCompareButton.add'); goodsCompareDeleteButton = $('.goodsDataCompareButton.delete'); goodsModDescriptionBlock = $('.goodsDataMainModificationsDescriptionBlock'); // Изменяем данные товара для выбранных параметров. Если нашлась выбранная модификация if(modificationBlock.length) { // Цена товара goodsPriceNow.html('<span class="price">' + modificationPriceNow + '</span>'); // Старая цена товара if(modificationPriceOld>modificationPriceNow) { goodsPriceOld.html('<span class="price">' + modificationPriceOld + '</span>'); } else { goodsPriceOld.html(''); } // Есть ли товар есть в наличии if(modificationRestValue>0) { goodsAvailableTrue.show(); goodsAvailableFalse.hide(); $('#button-cart').html('В корзину'); // Если товара нет в наличии } else { goodsAvailableTrue.hide(); goodsAvailableFalse.show(); $('#button-cart').html('Уведомить меня'); } // Если товар есть в списке сравнения if(modificationIsHasInCompareList>0) { goodsCompareAddButton.hide(); goodsCompareDeleteButton.show(); // Если товара нет в списке сравнения } else { goodsCompareAddButton.show(); goodsCompareDeleteButton.hide(); } // Покажем артикул модификации товара, если он указан if(modificationArtNumber.length>0) { goodsArtNumberBlock.show(); goodsArtNumber.html(modificationArtNumber); // Скроем артикул модификации товара, если он не указан } else { goodsArtNumberBlock.hide(); goodsArtNumber.html(''); } // Описание модификации товара. Покажем если оно есть, спрячем если его у модификации нет if(modificationDescription.length > 0) { goodsModDescriptionBlock.show().html('<div>' + modificationDescription + '</div>'); } else { goodsModDescriptionBlock.hide().html(); } // Идентификатор товарной модификации goodsModificationId.val(modificationId); } else { // Отправим запись об ошибке на сервер sendError('no modification by slug '+slug); alert('К сожалению сейчас не получается подобрать модификацию соответствующую выбранным параметрам.'); } }); });замените на
// Функция собирает свойства в строку, для определения модификации товара function getSlugFromGoodsDataFormModificationsProperties(obj) { var properties = new Array(); var reset_arr = new Array(); $(obj).find('input[type="radio"]').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(a,B){return a - B}).join('_'); } var // Запоминаем поля выбора свойств, для ускорения работы со значениями свойств goodsDataProperties = $('.goodsDataMainModificationsBlock .goodsDataMainModificationsRadio'), // Запоминаем блоки с информацией по модификациям, для ускорения работы goodsDataModifications = $('div.goodsDataMainModificationsList'); // Обновляет возможность выбора свойств модификации, для отключения возможности выбора по характеристикам модификации которой не существует. function updateVisibility (y) { // Проверяем в каждом соседнем поле выбора модификаций, возможно ли подобрать модификацию для указанных свойств goodsDataProperties.each(function(j){ // Если мы сравниваем значения свойства не с самим собой, а с другим списком значений свойств if( j != y ) { // Проходим по всем значениям текущего свойства модификации товара $(this).find('input[name="form[properties][]"]').each(function(){ // Записываем временный массив свойств, которые будем использовать для проверки существования модификации //var checkProperties = new Array(); /*$(goodsDataProperties).each(function(i){ if($(this).is(':checked')) checkProperties[i] = parseInt($(this).val()); });*/ // Пытаемся найти модификацию соответствующую выбранным значениям свойств //checkProperties[j] = parseInt($(this).attr('value')); // Собираем хэш определяющий модификацию по свойствам //slug = checkProperties.sort(function(a,B){return a - b}).join('_'); slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties); // Ищем модификацию по всем выбранным значениям свойств товара. Если модификации нет в возможном выборе, отмечаем потенциальное значение выбора как не доступное для выбора, т.к. такой модификации нет. if(!goodsDataModifications.filter('[rel="'+slug+'"]').length) { $(this).attr('disabled', 'disabled'); // Если выбрав данное значение свойства товара можно подобрать модификацию, то выделяем вариант выбора как доступный. } else { $(this).removeAttr('disabled'); } }); } }); } // Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность. updateVisibility (0); // Изменение цены товара при изменении у товара свойства для модификации goodsDataProperties.each(function(y){ $(this).find('input[type="radio"]').click(function(){ var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties), modificationBlock = $('.goodsDataMainModificationsList[rel="'+slug+'"]'), modificationId = parseInt(modificationBlock.find('[name="id"]').val()), modificationArtNumber = modificationBlock.find('[name="art_number"]').val(), modificationPriceNow = parseInt(modificationBlock.find('[name="price_now"]').val()), modificationPriceNowFormated = modificationBlock.find('.price_now_formated').html(), modificationPriceOld = parseInt(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'), goodsAvailableAddCart = $('.add-to-form'), goodsAvailableQty = $('.wrap-qty'), goodsArtNumberBlock = $('.goodsDataMainModificationArtNumber'), goodsArtNumber = goodsArtNumberBlock.find('span'); goodsCompareAddButton = $('.goodsDataCompareButton.add'); goodsCompareDeleteButton = $('.goodsDataCompareButton.delete'); goodsModDescriptionBlock = $('.goodsDataMainModificationsDescriptionBlock'); // Изменяем данные товара для выбранных параметров. Если нашлась выбранная модификация if(modificationBlock.length) { // Цена товара goodsPriceNow.html('<span class="price">' + modificationPriceNowFormated + '</span>'); // Старая цена товара if(modificationPriceOld>modificationPriceNow) { goodsPriceOld.html('<span class="price">' + modificationPriceOldFormated + '</span>'); } else { goodsPriceOld.html(''); } // Есть ли товар есть в наличии if(modificationRestValue>0) { goodsAvailableTrue.show(); goodsAvailableFalse.hide(); goodsAvailableAddCart.show(); // Если товара нет в наличии } else { goodsAvailableTrue.hide(); goodsAvailableFalse.show(); goodsAvailableAddCart.hide(); } // Если товар есть в списке сравнения if(modificationIsHasInCompareList>0) { goodsCompareAddButton.hide(); goodsCompareDeleteButton.show(); // Если товара нет в списке сравнения } else { goodsCompareAddButton.show(); goodsCompareDeleteButton.hide(); } // Покажем артикул модификации товара, если он указан if(modificationArtNumber.length>0) { goodsArtNumberBlock.show(); goodsArtNumber.html(modificationArtNumber); // Скроем артикул модификации товара, если он не указан } else { goodsArtNumberBlock.hide(); goodsArtNumber.html(''); } // Описание модификации товара. Покажем если оно есть, спрячем если его у модификации нет if(modificationDescription.length > 0) { goodsModDescriptionBlock.show().html('<div>' + modificationDescription + '</div>'); } else { goodsModDescriptionBlock.hide().html(); } // Идентификатор товарной модификации goodsModificationId.val(modificationId); window.location.hash = '?modification='+modificationId; } else { // Отправим запись об ошибке на сервер sendError('no modification by slug '+slug); alert('К сожалению сейчас не получается подобрать модификацию соответствующую выбранным параметрам.'); } // Обновляем возможность выбора другой модификации для текущих значений свойств модификации товара. updateVisibility(y); }); });
#9
Отправлено 28 Январь 2016 - 17:19
Ирина345 (28 Январь 2016 - 14:46) писал:
// Функция собирает свойства в строку, для определения модификации товара function getSlugFromGoodsDataFormModificationsProperties(obj) { var properties = new Array(); $(obj).each(function(i){ properties[i] = parseInt($(this).val()); }); return properties.sort(function(a,B){return a - b}).join('_'); } var // Запоминаем поля выбора свойств, для ускорения работы со значениями свойств 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); } }); } }); } // Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность. // Проверяем возможность выбора на всех полях кроме первого, чтобы отключить во всех остальных варианты, которые не возможно выбрать updateVisibility (0); // Проверяем возможность выбора на всех полях кроме второго, чтобы в первом поле так же отключилась возможность выбора не существующих модификаций updateVisibility (1); //var goodsDataProperties = $('.goodsDataForm [name="form[properties][]"]'); // Изменение цены товара при изменении у товара свойства для модификации goodsDataProperties.each(function(){ $(this).change(function(){ var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties), modificationBlock = $('.goodsDataMainModificationsList[rel="'+slug+'"]'), modificationId = parseInt(modificationBlock.find('[name="id"]').val()), modificationArtNumber = modificationBlock.find('[name="art_number"]').val(), modificationPriceNow = parseInt(modificationBlock.find('[name="price_now"]').val()), modificationPriceNowFormated = modificationBlock.find('.price_now_formated').html(), modificationPriceOld = parseInt(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'), goodsAvailableAddCart = $('.add-to-form'), goodsArtNumberBlock = $('.goodsDataMainModificationArtNumber'), goodsArtNumber = goodsArtNumberBlock.find('span'); goodsCompareAddButton = $('.goodsDataCompareButton.add'); goodsCompareDeleteButton = $('.goodsDataCompareButton.delete'); goodsModDescriptionBlock = $('.goodsDataMainModificationsDescriptionBlock'); // Изменяем данные товара для выбранных параметров. Если нашлась выбранная модификация if(modificationBlock.length) { // Цена товара goodsPriceNow.html('<span class="price">' + modificationPriceNow + '</span>'); // Старая цена товара if(modificationPriceOld>modificationPriceNow) { goodsPriceOld.html('<span class="price">' + modificationPriceOld + '</span>'); } else { goodsPriceOld.html(''); } // Есть ли товар есть в наличии if(modificationRestValue>0) { goodsAvailableTrue.show(); goodsAvailableFalse.hide(); $('#button-cart').html('В корзину'); // Если товара нет в наличии } else { goodsAvailableTrue.hide(); goodsAvailableFalse.show(); $('#button-cart').html('Уведомить меня'); } // Если товар есть в списке сравнения if(modificationIsHasInCompareList>0) { goodsCompareAddButton.hide(); goodsCompareDeleteButton.show(); // Если товара нет в списке сравнения } else { goodsCompareAddButton.show(); goodsCompareDeleteButton.hide(); } // Покажем артикул модификации товара, если он указан if(modificationArtNumber.length>0) { goodsArtNumberBlock.show(); goodsArtNumber.html(modificationArtNumber); // Скроем артикул модификации товара, если он не указан } else { goodsArtNumberBlock.hide(); goodsArtNumber.html(''); } // Описание модификации товара. Покажем если оно есть, спрячем если его у модификации нет if(modificationDescription.length > 0) { goodsModDescriptionBlock.show().html('<div>' + modificationDescription + '</div>'); } else { goodsModDescriptionBlock.hide().html(); } // Идентификатор товарной модификации goodsModificationId.val(modificationId); } else { // Отправим запись об ошибке на сервер sendError('no modification by slug '+slug); alert('К сожалению сейчас не получается подобрать модификацию соответствующую выбранным параметрам.'); } }); });замените на
// Функция собирает свойства в строку, для определения модификации товара function getSlugFromGoodsDataFormModificationsProperties(obj) { var properties = new Array(); var reset_arr = new Array(); $(obj).find('input[type="radio"]').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(a,B){return a - B}).join('_'); } var // Запоминаем поля выбора свойств, для ускорения работы со значениями свойств goodsDataProperties = $('.goodsDataMainModificationsBlock .goodsDataMainModificationsRadio'), // Запоминаем блоки с информацией по модификациям, для ускорения работы goodsDataModifications = $('div.goodsDataMainModificationsList'); // Обновляет возможность выбора свойств модификации, для отключения возможности выбора по характеристикам модификации которой не существует. function updateVisibility (y) { // Проверяем в каждом соседнем поле выбора модификаций, возможно ли подобрать модификацию для указанных свойств goodsDataProperties.each(function(j){ // Если мы сравниваем значения свойства не с самим собой, а с другим списком значений свойств if( j != y ) { // Проходим по всем значениям текущего свойства модификации товара $(this).find('input[name="form[properties][]"]').each(function(){ // Записываем временный массив свойств, которые будем использовать для проверки существования модификации //var checkProperties = new Array(); /*$(goodsDataProperties).each(function(i){ if($(this).is(':checked')) checkProperties[i] = parseInt($(this).val()); });*/ // Пытаемся найти модификацию соответствующую выбранным значениям свойств //checkProperties[j] = parseInt($(this).attr('value')); // Собираем хэш определяющий модификацию по свойствам //slug = checkProperties.sort(function(a,B){return a - b}).join('_'); slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties); // Ищем модификацию по всем выбранным значениям свойств товара. Если модификации нет в возможном выборе, отмечаем потенциальное значение выбора как не доступное для выбора, т.к. такой модификации нет. if(!goodsDataModifications.filter('[rel="'+slug+'"]').length) { $(this).attr('disabled', 'disabled'); // Если выбрав данное значение свойства товара можно подобрать модификацию, то выделяем вариант выбора как доступный. } else { $(this).removeAttr('disabled'); } }); } }); } // Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность. updateVisibility (0); // Изменение цены товара при изменении у товара свойства для модификации goodsDataProperties.each(function(y){ $(this).find('input[type="radio"]').click(function(){ var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties), modificationBlock = $('.goodsDataMainModificationsList[rel="'+slug+'"]'), modificationId = parseInt(modificationBlock.find('[name="id"]').val()), modificationArtNumber = modificationBlock.find('[name="art_number"]').val(), modificationPriceNow = parseInt(modificationBlock.find('[name="price_now"]').val()), modificationPriceNowFormated = modificationBlock.find('.price_now_formated').html(), modificationPriceOld = parseInt(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'), goodsAvailableAddCart = $('.add-to-form'), goodsAvailableQty = $('.wrap-qty'), goodsArtNumberBlock = $('.goodsDataMainModificationArtNumber'), goodsArtNumber = goodsArtNumberBlock.find('span'); goodsCompareAddButton = $('.goodsDataCompareButton.add'); goodsCompareDeleteButton = $('.goodsDataCompareButton.delete'); goodsModDescriptionBlock = $('.goodsDataMainModificationsDescriptionBlock'); // Изменяем данные товара для выбранных параметров. Если нашлась выбранная модификация if(modificationBlock.length) { // Цена товара goodsPriceNow.html('<span class="price">' + modificationPriceNowFormated + '</span>'); // Старая цена товара if(modificationPriceOld>modificationPriceNow) { goodsPriceOld.html('<span class="price">' + modificationPriceOldFormated + '</span>'); } else { goodsPriceOld.html(''); } // Есть ли товар есть в наличии if(modificationRestValue>0) { goodsAvailableTrue.show(); goodsAvailableFalse.hide(); goodsAvailableAddCart.show(); // Если товара нет в наличии } else { goodsAvailableTrue.hide(); goodsAvailableFalse.show(); goodsAvailableAddCart.hide(); } // Если товар есть в списке сравнения if(modificationIsHasInCompareList>0) { goodsCompareAddButton.hide(); goodsCompareDeleteButton.show(); // Если товара нет в списке сравнения } else { goodsCompareAddButton.show(); goodsCompareDeleteButton.hide(); } // Покажем артикул модификации товара, если он указан if(modificationArtNumber.length>0) { goodsArtNumberBlock.show(); goodsArtNumber.html(modificationArtNumber); // Скроем артикул модификации товара, если он не указан } else { goodsArtNumberBlock.hide(); goodsArtNumber.html(''); } // Описание модификации товара. Покажем если оно есть, спрячем если его у модификации нет if(modificationDescription.length > 0) { goodsModDescriptionBlock.show().html('<div>' + modificationDescription + '</div>'); } else { goodsModDescriptionBlock.hide().html(); } // Идентификатор товарной модификации goodsModificationId.val(modificationId); window.location.hash = '?modification='+modificationId; } else { // Отправим запись об ошибке на сервер sendError('no modification by slug '+slug); alert('К сожалению сейчас не получается подобрать модификацию соответствующую выбранным параметрам.'); } // Обновляем возможность выбора другой модификации для текущих значений свойств модификации товара. updateVisibility(y); }); });
#11
Отправлено 28 Январь 2016 - 19:41
Ильяc (28 Январь 2016 - 19:34) писал:
Screenshot_20160128-191012.png
В main.css найдите код:
.breadcrumbs li {display: inline-block;padding: 0 1px 3px 11px;background: url("{ASSETS_IMAGES_PATH}arrow-bread.png") no-repeat left center;color: #999999;font-size: 12px;}
и замените его на:
.breadcrumbs li {display: inline-block;padding: 0 1px 3px 11px;background: url("{ASSETS_IMAGES_PATH}arrow-bread.png") no-repeat left 8px;color: #999999;font-size: 12px;}
#13
Отправлено 03 Февраль 2016 - 16:57
#15
Отправлено 13 Февраль 2016 - 20:12
Ильяc (13 Февраль 2016 - 19:58) писал:
Магазин Mobilefanat.ru продаем электронику сотовые телефоны умные гаджеты и много новой техники. Низкие цены и доставка по всей России. Гарантия..png
Здравствуйте. В шаблоне HTML найдите код:
{% FOR menu %} {% FOR header %} {% FOR links %} <li><a href="{menu.header.links.URL}" {% IF menu.header.links.SELECTED %}class="selected"{%ENDIF%} {% IF menu.header.links.TITLE %}title="{menu.header.links.TITLE}"{% ENDIF %}>{menu.header.links.NAME}</a></li> {% ENDFOR %} {% ENDFOR %} {% ENDFOR %}
и замените его на:
{% FOR menu %} {% FOR header %} {% FOR links %} <li><a href="{menu.header.links.URL}" {% IF menu.header.links.SELECTED %}class="selected"{%ENDIF%} {% IF menu.header.links.TITLE %}title="{menu.header.links.TITLE}"{% ENDIF %} {% IF menu.header.links.NAME = Отзывы%}target="_blank"{%ENDIF%}>{menu.header.links.NAME}</a></li> {% ENDFOR %} {% ENDFOR %} {% ENDFOR %}
#17
Отправлено 14 Февраль 2016 - 13:38
Ильяc (14 Февраль 2016 - 13:32) писал:
В шаблоне main.css найдите код:
#menu { position: relative; margin: 0 0; max-height: 80px; }
замените его на:
#menu { position: relative; margin: 0 0; max-height: 80px; border-top: 3px solid #F10A0A; border-bottom: 3px solid #F10A0A; }
#18
Отправлено 14 Февраль 2016 - 14:36
MikDark (14 Февраль 2016 - 13:38) писал:
#menu { position: relative; margin: 0 0; max-height: 80px; }
замените его на:
#menu { position: relative; margin: 0 0; max-height: 80px; border-top: 3px solid #F10A0A; border-bottom: 3px solid #F10A0A; }
Только верхняя полоса видна, нижнюю не видно
#19
Отправлено 14 Февраль 2016 - 14:50
Ильяc (14 Февраль 2016 - 14:36) писал:
В main.css замените код:
#menu { position: relative; margin: 0 0; max-height: 80px; border-top: 1px solid #ebebeb; border-bottom: 1px solid #ebebeb; }
на
#menu { position: relative; margin: 0 0; max-height: 82px; border-top: 1px solid #ebebeb; border-bottom: 1px solid #ebebeb; }
#20
Отправлено 14 Февраль 2016 - 15:04
MikDark (14 Февраль 2016 - 14:50) писал:
#menu { position: relative; margin: 0 0; max-height: 80px; border-top: 1px solid #ebebeb; border-bottom: 1px solid #ebebeb; }
на
#menu { position: relative; margin: 0 0; max-height: 82px; border-top: 1px solid #ebebeb; border-bottom: 1px solid #ebebeb; }
Спасибо! пока все по плану)
Теперь подскажите еще как иконки корзина и сравнение темными сделать? Пытался картинку другую поставить но пока не получилось
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных