
Лучший Ответ mr.varhola , 22 February 2024 - 17:11
У меня недавно появилась подобная задача, решил её в шаблоне тизера, ну и в нужных шаблонах модуля item по аналогии:
- <?// Проверяем доступное количество товара, скрываем варианты которых нет в наличии или удаляем карточку товара целиком если нет в доступности ни одного варианта
- $CB_price = 'b446414f-849a-4684-8015-252eda980a98'; // Прописываем ID своего элемента
- $CB_SKU = $this->_item->getElement($CB_price)->data()->variations;
- $noUseVariant = array_shift($CB_SKU); // Удаляем первый элемент массива, я так сделал у себя так как у товаров есть вариации и стоимость с остатками заполняются только у них.
- $cvvInStock = 0;
- foreach($CB_SKU as $currVariant){
- if($currVariant['_balance']['value'] == '0'){
- $cvv = $currVariant['ab454a37-1fb1-4774-b017-2211be448553']['value'];?>
- <script>
- jQuery(".teaserId-<?=$item->id;?> input[value='<?=$cvv;?>']").next().addClass('dspn'); // Скрываем вариации товара которых нет в наличии
- </script>
- <?} else if($currVariant['_balance']['value'] != '0'){
- if($cvvInStock == 0){
- $cvv = $currVariant['ab454a37-1fb1-4774-b017-2211be448553']['value']; ?>
- <script>
- setTimeout(function (){
- jQuery(".teaserId-<?=$item->id;?> input[value='<?=$cvv;?>']").next().click(); // Кликаем на вариацию которая есть в наличии
- },3000);
- </script>
- <?}
- $cvvInStock = 1;
- }
- }
- if($cvvInStock == 0){?>
- <script>
- jQuery(".teaserId-<?=$item->id;?>").remove(); // Удаляем карточку тизера в случае если нет в наличии ни одной вариации товара
- </script>
- <?}?>
Таким образом убрал вывод вариаций товара которых нет в наличии, и если у товара нет ни одной вариации - скрыл тизер целиком. Проблему с пагинацией решил автоподгрузкой товаров при пролистывании до конца списка.
В моем случае это решение подошло так как по каждой вариации товаров остатки подгружаются автоматически два раза в сутки и вручную клиент этого не сделает никак.
Карточка товара, при этом, остается на месте
.teaserId-<?=$item->id;?> - это класс родительского блока карточки товара
Перейти к сообщению
