+7 (843) 207-01-46 - Казань
+7 (843) 207-01-46 - Казань

AJAX вывод бонусов в каталоге (старый вариант)

Битрикс кэширует страницы каталога товаров в разрезе групп пользователей.

Если исходя из условий начисления бонусов, для каждого пользователя может быть разное количество бонусов к начислению, то по умолчанию бонусы в каталоге не отображаются, а отображаются только на этапе оформления заказа.

Если есть необходимость отображать бонусы в каталоге для каждого пользователя индивидуально, то в настройках правила начисления бонусов можно указать "Отображать в каталоге даже если указаны дополнительные пармаметры".

При этом, в каталоге необходимо вывести бонусов посредством AJAX.

Пример кода:

Для списка товаров

В место, где необходимо вывести бонусы, вставляем блок:
<div class="bonus" id="lb_ajax_<?=$arItem["ID"]?>"></div>
Где $arItem["ID"] - ID Товара

Где нибудь в конце шаблона вставляем код:
<?
$arPost = array();
foreach($arResult["ITEMS"] as $arItem):
	$arPost["ITEMS"][] = array("ID"=>$arItem["ID"], "OFFERS"=>$arItem["OFFERS"], "MIN_PRICE"=>$arItem["MIN_PRICE"], "ITEM_PRICES"=>$arItem["ITEM_PRICES"]);
endforeach;
?>
<script type="text/javascript">
	var arBonus = <?=CUtil::PhpToJSObject($arPost, false, true)?>;
	BX.ajax({
		url: '/bitrix/components/logictim/bonus.ajax/bonus_catalog_ajax.php',
		method: 'POST',
		data: arBonus,
		dataType: 'json',
		onsuccess: function(result) {
			for(id in result.ITEMS)
			{
				var item = result.ITEMS[id];
				if(BX('lb_ajax_'+id) && item.VIEW_BONUS > 0)
					BX.adjust(BX('lb_ajax_'+id), {text: '+'+item.ADD_BONUS+' '+result.TEXT.TEXT_BONUS_FOR_ITEM});
			}
		}
	});
</script>

Для карточки товара:

В место, где необходимо вывести бонусы, вставляем блок:
<div class="bonus" id="lb_ajax_<?=$arResult["ID"]?>"></div>
Где $arResult["ID"] - ID Товара

Где нибудь в конце шаблона вставляем код:
<?
$arPost = array();
$arPost["ITEMS"][] = array("ID"=>$arResult["ID"], "OFFERS"=>$arResult["OFFERS"], "MIN_PRICE"=>$arResult["MIN_PRICE"], "ITEM_PRICES"=>$arResult["ITEM_PRICES"]);
?>
<script type="text/javascript">
	var arBonus = <?=CUtil::PhpToJSObject($arPost, false, true)?>;
	BX.ajax({
		url: '/bitrix/components/logictim/bonus.ajax/bonus_catalog_ajax.php',
		method: 'POST',
		data: arBonus,
		dataType: 'json',
		onsuccess: function(result) {
			for(id in result.ITEMS)
			{
				var item = result.ITEMS[id];
				if(BX('lb_ajax_'+id) && item.VIEW_BONUS > 0)
					BX.adjust(BX('lb_ajax_'+id), {text: '+'+item.ADD_BONUS+' '+result.TEXT.TEXT_BONUS_FOR_ITEM});
			}
		}
	});
</script>








Возврат к списку