Перейти к содержимому


Модификации Товаров


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 20

#1 liviy

liviy

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 10 Октябрь 2013 - 02:14

Добрый день.

Как настроить отбор по свойствам модификаций по отдельности. сейчас получается так, есть три свойства (товар шины, соответственно ширина профиля, профиль, радиус). У свойства ширина профиля 2 значения, у значения профиль 1 параметр, у радиуса 2 параметра. выбор сделать не получается. Как исправить?


вопрос.JPG

Прикрепленные изображения

  • вопрос.JPG


#2 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 10 Октябрь 2013 - 04:19

Вам необходимо пересмотреть добавление модификаций для товара. На каждую модификацию должно быть добавлено пара свойств и значений - т.е необходимо для каждой модификации прописывать все возможные свойства.

Пример:

Размер - 14
Цвет: Красный
Цвет: Желтый
Цвет: Белый

Размер - 15
Цвет: Красный
Цвет: Желтый
Цвет: Белый

Размер - 16
Цвет: Красный
Цвет: Зеленый
Цвет: Синий

Если групп больше, то и дубликатов должно быть больше. Попробуйте на коком-нибудь товаре поэкспериментировать.

#3 liviy

liviy

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 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,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),
          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 miyako

miyako

    Активный участник

  • Модератоpы
  • 5 372 сообщений

Отправлено 10 Октябрь 2013 - 08:13

Просмотр сообщенияliviy (10 Октябрь 2013 - 06:07) писал:

а разве нет варианта в коде магазина изменить цикл обработки выбора свойств товара. Я думаю не у одного меня возникает такая проблема, на каком языке написан скрипт 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, 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),
  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();
}


как бы его поменять???!!!

Пока изменить, к сожалению, нельзя.

#5 liviy

liviy

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 10 Октябрь 2013 - 08:52

Просмотр сообщенияmiyako (10 Октябрь 2013 - 08:13) писал:

Пока изменить, к сожалению, нельзя.

очень жаль. очень бы упростилась работа по  наполнению магазина и в работе при оформлении заказа пользователем.

#6 shalapanov

shalapanov

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений

Отправлено 18 Октябрь 2013 - 10:59

когда будет реализована возможность добовлять мадификации не из товара, а из меню свойств, пока там возможно только редактировать?!

И вообще пришли бы вы к единому наименованию, ведь СВОЙСТВА и МОДИФИКАЦИИ - это ведь одно и тоже в вашем магазине!!!

#7 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 353 сообщений

Отправлено 19 Октябрь 2013 - 04:50

Цитата

когда будет реализована возможность добовлять мадификации не из товара, а из меню свойств, пока там возможно только редактировать?!

К сожалению, информации о подобной реализации у нас нету. Когда появиться данная реализация сказать сложно, так как имеются другие более важные задачи в приоритете. Спасибо за понимание.

#8 Новичок Ю

Новичок Ю

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 326 сообщений

Отправлено 02 Август 2014 - 16:15

Здравствуйте! Такой вопрос. У меня текстильное изделие 19-ми размеров в 2-х вариантах чехла. Всего, получается, 38 модификаций.
Когда я их создала, сначала все располагалось по порядку, соответствующему первым цифрам, т.е 120х190, 120х195, 120х200 ..........70х190, 70х195....90х195, 90х200. В каталоге на странице товара при это все модификации располагались так, как надо - от маленького размера к большому. Потом я где-то нажала на сортировку (по артикулу или по наименованию, в основных настройках поменяла, чтоб на увеличение шло), и товары в папках поменялись местами, а модификации в них вообще по-непонятному принципу расположились. Помогите, пожалуйста все вернуть - очень трудно заводить цены (не заходя в товар). Покажу в скрине, а то трудно объяснить.
Screenshot_1.jpg
Screenshot_3.jpg
Screenshot_4.jpg

#9 Alekseys

Alekseys

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 2 355 сообщений

Отправлено 02 Август 2014 - 17:05

Здравствуйте. Возможно, данные модификации меняются местами из-за того, что если ранее была создана модификация, затем она была удалена и через какое-то время создана новая, то у новой модификации поставится такой же ID, как и у удаленной.При этом скорее всего в каталоге в админ-панели при сортировке у ID ставится приоритет. Мы отправили разработчикам заявку на тестирование, так как подобного не должно быть, является это ошибкой или нет, ответ мы напишем на почту администратора этого магазина.

#10 Новичок Ю

Новичок Ю

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 326 сообщений

Отправлено 02 Август 2014 - 18:01

Просмотр сообщенияAlekseys (02 Август 2014 - 17:05) писал:

Здравствуйте. Возможно, данные модификации меняются местами из-за того, что если ранее была создана модификация, затем она была удалена и через какое-то время создана новая, то у новой модификации поставится такой же ID, как и у удаленной.При этом скорее всего в каталоге в админ-панели при сортировке у ID ставится приоритет. Мы отправили разработчикам заявку на тестирование, так как подобного не должно быть, является это ошибкой или нет, ответ мы напишем на почту администратора этого магазина.
Я ничего не удаляла. заводила товар строго по порядку - иначе вообще запутаешься. Что-то где-то нажала.

Столкнулась в других товарах с тем, о чем Вы пишите. Заводила товар с шириной от 60см с диапазоном 5см на увеличение: когда потребовалось добавить товар шириной 55см, он встал в начало (там где заводишь - скрин№3 в том письме), но артикул продолжает отражаться с шириной 60см в таблице (скрин№1) и в карточке товаров тоже с артикулом 60см, и в окне модификаций для посетителей (по умолчанию). Пришлось удалить все модификации - и заводить заново с 55см.

Здесь же для посетителей все норм (т.к. все заведено по порядку), но проставлять цены дико неудобно.

#11 Новичок Ю

Новичок Ю

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 326 сообщений

Отправлено 04 Август 2014 - 15:32

Здравствуйте. Скажите, нет ответа по сбитой сортировке модификаций?

#12 Coffee

Coffee

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 178 сообщений

Отправлено 23 Август 2014 - 14:28

здравствуйте! сейчас модификация в выборе не показывается, если модификация одна. можно сделать, чтобы она все-таки показывалась, так как в моем магазине этот пункт носит еще и информационный характер у товара с определенным весом

#13 Danil

Danil

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 4 645 сообщений

Отправлено 23 Август 2014 - 15:36

Просмотр сообщенияCoffee (23 Август 2014 - 14:28) писал:

здравствуйте! сейчас модификация в выборе не показывается, если модификация одна. можно сделать, чтобы она все-таки показывалась, так как в моем магазине этот пункт носит еще и информационный характер у товара с определенным весом

Здравствуйте.
Зайдите в раздел Настройки-Основные-Товары.
И поставьте галочку в пункте:
В свойствах товарной модификации выдавать все свойства, даже если они одинаковы для всего товара

#14 mjohn84

mjohn84

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений

Отправлено 28 Ноябрь 2014 - 10:48

Очень плохо что нельзя картинку к модификации привязать... <_<

#15 Danil

Danil

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 4 645 сообщений

Отправлено 28 Ноябрь 2014 - 10:59

Просмотр сообщенияmjohn84 (28 Ноябрь 2014 - 10:48) писал:

Очень плохо что нельзя картинку к модификации привязать... <_<
Здравствуйте.
В описание модификации можно добавить изображение.
Не могли бы вы описать, для каких целей это необходимо.

#16 mjohn84

mjohn84

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений

Отправлено 02 Декабрь 2014 - 09:59

Просмотр сообщенияDanil (28 Ноябрь 2014 - 10:59) писал:

Здравствуйте.
В описание модификации можно добавить изображение.
Не могли бы вы описать, для каких целей это необходимо.
Да, мне нужен магазин дверей. и при выборе модификации например по цвету люди должны видеть цвет а по модификации остекленная глухая соответственно... в данном случае это очень важно...

#17 Danil

Danil

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 4 645 сообщений

Отправлено 02 Декабрь 2014 - 12:12

Просмотр сообщенияmjohn84 (02 Декабрь 2014 - 09:59) писал:

Да, мне нужен магазин дверей. и при выборе модификации например по цвету люди должны видеть цвет а по модификации остекленная глухая соответственно... в данном случае это очень важно...
Если вам нужно чтобы, при смене модификации менялось изображение товара, в соответствии с выбранной модификацией, то данный функционал реализовать не получится.
Вы можете добавлять изображения к модификациям, через описание модификации, используя следующую структуру.
<img src="ссылка на изображение">

#18 A-start

A-start

    Пользователь

  • Пользователи
  • PipPip
  • 20 сообщений

Отправлено 09 Декабрь 2014 - 09:47

Добрый день, как можно сделать что бы на странице Товары в товаре отображалась цена в формате от - до (если цена разная при разных модификациях)

Прикрепленные изображения

  • от-до.jpg


#19 Danil

Danil

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 4 645 сообщений

Отправлено 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 Lion

Lion

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 337 сообщений
  • ГородMoscow

Отправлено 12 Август 2015 - 10:35

Добрый день, шаблон ОСЕНЬ.
Есть 2 разные модификации в одном товаре. Выбор работает только по одной из них.
Можно сделать что бы выбор работал по всем видам модификаций?
http://prntscr.com/83oi6f




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных