Автор Тема: Как можно скрыть в товаре определённую комбинацию  (Прочитано 32 раз)

21 Июль 2017, 09:51:17
  • Старожил
  • ****
  • Сообщений: 307
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Имеется товар (например какая то сумка) в нескольких (комбинациях).

Вопрос, как можно скрыть в товаре определённую (комбинацию) допустим если остатки для неё равны 0.

Ну или какой-то другой признак.

21 Июль 2017, 09:55:09
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 13922
  • Репутация: +14567/-2
  • Сообщество PrestaShop
    • Просмотр профиля
https://prestashop-forum.ru/index.php/topic,2176.msg11331.html#msg11331
Вот так можно. Также любою другую переменную проверить можно.
21 Июль 2017, 10:00:11
Ответ #2
  • Старожил
  • ****
  • Сообщений: 307
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
https://prestashop-forum.ru/index.php/topic,2176.msg11331.html#msg11331
Вот так можно. Также любою другую переменную проверить можно.

Спасибо, но не то. Имеется в виду комбинация.

Например имеется карточка товара с комбинациями разных цветов (на карточке товара имеются квадратики с цветами красный, жёлтый, синий).
Как не выводить на карточке товара квадратик например с красным цветом (т.е. не отображать комбинацию товара с красным цветом).
21 Июль 2017, 10:08:01
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 13922
  • Репутация: +14567/-2
  • Сообщество PrestaShop
    • Просмотр профиля
Принцип тот-же, только для цвета нужно в product.js в getProductAttribute делать проверку.
21 Июль 2017, 10:18:47
Ответ #4
  • Старожил
  • ****
  • Сообщений: 307
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Принцип тот-же, только для цвета нужно в product.js в getProductAttribute делать проверку.

Насколько актуальна эта статья?

https://htmler.ru/2015/07/11/prestashop-skryit-nedostupnyie-atributyi-tsveta/
21 Июль 2017, 10:37:44
Ответ #5
  • Старожил
  • ****
  • Сообщений: 307
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В общем вот этот код решил мою проблему:
указываем в product.tpl
Примечание: у товара должно быть 2 атрибута (или более) иначе if(groupIds.length == 0) return;
{literal}
<script type="text/javascript">
$(function(){

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

 if(groupIds.length == 0) return;

  var newCombos={};

  $.each(combinations,function(key,combination){
  if(combination.quantity>0){
  if(newCombos[combination['idsAttributes']['0']]==undefined){
newCombos[combination['idsAttributes']['0']]=[];
  newCombos[combination['idsAttributes']['0']].push(combination['idsAttributes'][1]);
  }else{
    newCombos[combination['idsAttributes']['0']].push(combination['idsAttributes'][1]);
}
}
  });

  $('select[id^="group_"]').change(function(){console.log(123);checkCombination()});

  checkCombination();

  function checkCombination()
  {
    $('select[id^="group_"] option').prop('disabled',false);
    $('a.color_pick').each(function(){
    $(this).closest('li').hide();
    });
    $.each(groupIds,function(key,groupId){
  var this_select=$('select[id='+groupId+']');
  for(i in newCombos[this_select.val()]){
  $('#color_'+newCombos[this_select.val()][i]).closest('li').show();
  $('#color_to_pick_list li:visible').eq(0).find('a').trigger('click');
  }
    });
  }

});
</script>
{/literal}