Best Answer 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;?> - это класс родительского блока карточки товара
Go to the full post
	
	


			
			
			
				
			










	
	
		
	