Как настроить отображение вариаций в старых и новых шаблонах
Важно! Чтобы вариации заработали на старых сайтах, необходимо восстановить стандартный шаблон или вставить код вызова вариаций в следующие шаблоны:
- вид товара
- страница товара
- корзина
- вид товара в печатной форме заказа
Для установки кода вам нужно перейти в Панель управления → Дизайн → Управление дизайном (шаблоны) → Интернет-магазин, далее нужно вставить вручную если не хотите восстанавливать стандартный шаблон:
<?if($VARIATIONS$)?>$VARIATIONS$<?endif?>
Дополнительно нужно перейти в настройку шаблонов уведомлений, Главная → Интернет-магазин → Настройка уведомлений → Уведомления администратору → Уведомлять при оформлении нового заказа:
Обновление скрипта в шаблоне Корзина
Важно! Для тех сайтов у которых в модуле Интернет-магазин шаблон "Корзина":
используется свой кастомный код и переписанные скрипты, важно внести исправления в скрипт так как без правок вариации не будут корректно работать.
Обновленный скрипт с поддержкой для вариаций:
<script> function add2Basket(id, pref){ if(lock_buttons) return false; else lock_buttons = 1; var opt = [], err_msg = '', err_msgs = [], radio_options = {}, el_id = {}; $('#b'+pref+'-'+id+'-basket').attr('disabled','disabled'); $('#'+pref+'-'+id+'-basket').removeClass('done').removeClass('err').removeClass('add').addClass('wait').attr('title',''); $('#'+pref+'-'+id+'-options-selectors').find('select, input').each(function(){ switch (this.type) { case 'radio': el_id = this.id.split('-'); ((typeof (radio_options[el_id[3]]) == 'undefined') && (radio_options[el_id[3]] = { 'val': - 1, 'id': this.id })); (this.checked && (radio_options[el_id[3]]['val'] = this.value)); break; case 'checkbox': if (this.checked && (this.value !== '')) { if(this.value !== ''){ opt.push(this.id.split('-')[3]+'-'+this.value); } else { err_msgs.push({'id':this.id.split('-')[3], 'msg':'<li>'+$(this).parent().parent().find('span.opt').html().replace(':', '')+'</li>'}); } } break; default: if (this.value !== '') { opt.push(this.id.split('-')[3]+'-'+this.value); } else { err_msgs.push({'id':this.id.split('-')[3], 'msg':'<li>'+$(this).parent().parent().find('span.opt').html().replace(':', '')+'</li>'}); } } }); for(i in radio_options){ if(radio_options[i]['val'] != -1){ opt.push(radio_options[i]['id'].split('-')[3]+'-'+radio_options[i]['val']); }else{ err_msgs.push({'id':radio_options[i]['id'].split('-')[3], 'msg':'<li>'+$('#'+radio_options[i]['id']).parent().parent().parent().find('span.opt').html().replace(':', '')+'</li>'}); } } err_msgs.sort(function(a, b){ return ((a['id'] > b['id']) ? 1 : -1); }); for (var i=0; i<err_msgs.length; i++) { err_msg += err_msgs[i]['msg']; } // get productVariations const variationsStr = getVariationsStr(id, pref); if(err_msg == ''){ _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'add', 'id':id, 'pref':pref, 'opt':opt.join(':'), 'cnt':$('#q'+pref+'-'+id+'-basket').val(),...(variationsStr && {variations:variationsStr}),}}); ga_event('basket_add'); }else{ lock_buttons = 0; shop_alert('<div class="MyWinError">Опции<ul>'+err_msg+'</ul>обязательны для выбора</div>','Замечания','warning',350,100,{tm:8000,align:'left',icon:'/.s/img/icon/warning.png', 'onclose': function(){ $('#b'+pref+'-'+id+'-basket').removeAttr('disabled'); $('#'+pref+'-'+id+'-basket').removeClass('wait').addClass('add'); }}); } return false; } </script>
Если у вас используется стандартный шаблон, то достаточно нажать кнопку «Восстановить стандартный шаблон» в шаблонах. После этого все вариации будут корректно отображаться и работать.