Система бонусов.Программы лояльности

Интеграция детальной страницы товара

Интеграция бонусной системы на детальную страницу товара предназначена для вывода количества бонусов при покупке данного товара.

Место для вывода выбирается под дизайн сайта. 

Порядок интеграции:

1. Копируем шаблон компонента catalog.element или компонент catalog
2. в шаблоне компонента catalog.element:
- в файле result_modifier.php снизу добавляем

if(CModule::IncludeModule("vbcherepanov.bonus")){
    ob_start();
    $APPLICATION->IncludeComponent("vbcherepanov:vbcherepanov.bonuselement",".default",
            Array(
             "CACHE_TIME" => "0",
             "CACHE_TYPE" => "N",
             "ELEMENT" => $arResult, //передаем весь результирующий массив в компонент
             "OFFERS_AR" => "OFFERS", //ключ массива $arResult в котором находятся торговые предложения
             "OFFERS_ID" => "OFFER_ID_SELECTED", //ключ массива $arResult с ID выбранного торгового предложения
            "ONLY_NUM" => "N", //возвратит бонус в виде числа без валюты
            )
    );
    $arResult['BONUSEL'] = ob_get_clean(); // сохраняем вывод бонусов в переменную массива
}

Хочу заметить, что Вы так же можете скопировать шаблон компонента vbcherepanov.bonuselement и изменить шаблон вывода под свой дизайн.

Теперь в файле template.php в необходимом Вам месте выводим бонусы

<? echo $arResult['BONUSEL']; ?>

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

Если бонусы зависят от количества товара (чем больше товара тем больше бонусов, или количество товара в корзине) или бонусы зависят от выбранного торгового предложения, то необходимо внести правки в js код

открываем файл script.js шаблона catalog.element

нам необходимо внести правки в 3 функции
- функция увеличения количества  window.JCCatalogElement.prototype.QuantityUp = function()
- функция уменьшения количества window.JCCatalogElement.prototype.QuantityDown = function()
- ручное изменение количества   window.JCCatalogElement.prototype.QuantityChange = function()
- функция выбора торгового предложения window.JCCatalogElement.prototype.ChangeInfo = function()

В функциях изменения количество в конце функций надо вставить следующий код

if(window.ITRElementBonus){
   bonusElemUp.UpdateBonus(curValue); // curvalue - количество товара
}

В функции выбора торгового предложения

if(window.ITRElementBonus){
   bonusElemUp.Update.params.PRODUCT_ID= this.offers[this.offerNum].ID; 
       // где this.offers[this.offerNum].ID - ID выбранного торгового предложения
   bonusElemUp.UpdateBonus(1); 
}

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

ВНИМАНИЕ! Если Вы внедряете код в типовое решение - необходимо эти правки переносить после каждого обновления шаблона типового решения.
 

Виталий Черепанов

php - разработка