Связанные атрибуты

Автор iZlodey, 22 декабря 2015, 16:03:22

« назад - далее »

iZlodey

Привет!
Подскажите, как убрать недоступные связанные атрибуты в карточке товара? Не в категории, там все норм!
Например чайники, два связанных атрибута: 1-объем; 2-мощность;
0,5 л. > 500Вт
0,5 л. > 600Вт
1,5 л. > 700Вт
1,5 л. > 800Вт
Как сделать так, что когда пользователь выбирает объем 0,5 то доступная мощность для выбора оставалась только 500 и 600Вт, и, наоборот.
Сейчас доступны все комбинации не зависимо от того есть они или нет, просто всплывает сообщение что "данная конфигурация отсутствует, выберете другую", ну вы в курсе) а это лишнее.
Версия 1.6.
Заранее, спасибо!

DarinSr

Установите модуль Attribute Wizard Pro или ищите на форуме тему как сдеалать связанные поля у аттрибутов.

iZlodey

Цитата: DarinSr от 22 декабря 2015, 16:14:46
Установите модуль Attribute Wizard Pro или ищите на форуме тему как сдеалать связанные поля у аттрибутов.
Спасибо!
Почитал, Attribute Wizard Pro пишут что это не решает.

iZlodey

#3
Очень полезная штука!
Теперь пользователь не будет угадывать доступные атрибуты товара) После выбора одного из доступных атрибутов, следующие возможные будут предлагался только те, которые касаются предыдущего выбранного. И юзеру не будет всплывать дурацкое сообщение "Комбинация не доступна. Выберите другую." Задачу решил, без покупки модуля Attribute Wizard Pro за 150$ (хотя и он вроде это не решает), этим кодом:
$(function(){

  var groupIds=new Array();
  $('select[id^="group_"]').each(function(){
    groupIds.push(this.id);
  });
  var allCombinations=new Array();
  $.each(combinations,function(key,combination){
    allCombinations.push(combination['idsAttributes']);
  });

  $('select[id^="group_"]').change(function(){checkCombination()});
  $('a[id^="color_"][class="color_pick"]').click(function(){checkCombination()});
  checkCombination();

  function checkCombination()
  {
    $('select[id^="group_"] option').removeAttr('disabled');
    $.each(groupIds,function(key,groupId){
  var this_select=$('select[id='+groupId+']');
  this_select.children('option').each(function(){
    if(this_select.val()!=this.value){
  var combination=new Array();
  combination[key]=this.value;
  $.each(groupIds,function(key2,groupId2){
    if(key!=key2){
  combination[key2]=$('select[id='+groupId2+']').val();
    }
  });
  var position=-1;
  $.each(allCombinations,function(key1,theCombination){
    if(position==-1){
  position=key1;
  $.each(theCombination,function(key2,value){
    if(combination[key2]!=value)position=-1;
  });
    }
  });
  if(position<0)
  {
    this_select.children('option[value='+this.value+']').attr('disabled','disabled');
  }
    }
  });
    });
  }

});

iZlodey

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

erectus

Цитата: iZlodey от 24 декабря 2015, 13:34:35
Очень полезная штука!
Теперь пользователь не будет угадывать доступные атрибуты товара) После выбора одного из доступных атрибутов, следующие возможные будут предлагался только те, которые касаются предыдущего выбранного. И юзеру не будет всплывать дурацкое сообщение "Комбинация не доступна. Выберите другую." Задачу решил, без покупки модуля Attribute Wizard Pro за 150$ (хотя и он вроде это не решает), этим кодом:
$(function(){

  var groupIds=new Array();
  $('select[id^="group_"]').each(function(){
    groupIds.push(this.id);
  });
  var allCombinations=new Array();
  $.each(combinations,function(key,combination){
    allCombinations.push(combination['idsAttributes']);
  });

  $('select[id^="group_"]').change(function(){checkCombination()});
  $('a[id^="color_"][class="color_pick"]').click(function(){checkCombination()});
  checkCombination();

  function checkCombination()
  {
    $('select[id^="group_"] option').removeAttr('disabled');
    $.each(groupIds,function(key,groupId){
  var this_select=$('select[id='+groupId+']');
  this_select.children('option').each(function(){
    if(this_select.val()!=this.value){
  var combination=new Array();
  combination[key]=this.value;
  $.each(groupIds,function(key2,groupId2){
    if(key!=key2){
  combination[key2]=$('select[id='+groupId2+']').val();
    }
  });
  var position=-1;
  $.each(allCombinations,function(key1,theCombination){
    if(position==-1){
  position=key1;
  $.each(theCombination,function(key2,value){
    if(combination[key2]!=value)position=-1;
  });
    }
  });
  if(position<0)
  {
    this_select.children('option[value='+this.value+']').attr('disabled','disabled');
  }
    }
  });
    });
  }

});


а куда этот код вставлять?

iZlodey

#6
Цитата: erectus от 09 ноября 2016, 19:41:35
Цитата: iZlodey от 24 декабря 2015, 13:34:35
Очень полезная штука!
Теперь пользователь не будет угадывать доступные атрибуты товара) После выбора одного из доступных атрибутов, следующие возможные будут предлагался только те, которые касаются предыдущего выбранного. И юзеру не будет всплывать дурацкое сообщение "Комбинация не доступна. Выберите другую." Задачу решил, без покупки модуля Attribute Wizard Pro за 150$ (хотя и он вроде это не решает), этим кодом:
$(function(){

  var groupIds=new Array();
  $('select[id^="group_"]').each(function(){
    groupIds.push(this.id);
  });
  var allCombinations=new Array();
  $.each(combinations,function(key,combination){
    allCombinations.push(combination['idsAttributes']);
  });

  $('select[id^="group_"]').change(function(){checkCombination()});
  $('a[id^="color_"][class="color_pick"]').click(function(){checkCombination()});
  checkCombination();

  function checkCombination()
  {
    $('select[id^="group_"] option').removeAttr('disabled');
    $.each(groupIds,function(key,groupId){
  var this_select=$('select[id='+groupId+']');
  this_select.children('option').each(function(){
    if(this_select.val()!=this.value){
  var combination=new Array();
  combination[key]=this.value;
  $.each(groupIds,function(key2,groupId2){
    if(key!=key2){
  combination[key2]=$('select[id='+groupId2+']').val();
    }
  });
  var position=-1;
  $.each(allCombinations,function(key1,theCombination){
    if(position==-1){
  position=key1;
  $.each(theCombination,function(key2,value){
    if(combination[key2]!=value)position=-1;
  });
    }
  });
  if(position<0)
  {
    this_select.children('option[value='+this.value+']').attr('disabled','disabled');
  }
    }
  });
    });
  }

});


а куда этот код вставлять?
В heder.tpl в пределах <head> между:
<script type="text/javascript">
....
</script>
но я вроде ставил внизу в product.tpl и было все ok, не помню, пробуйте.