Изменить цену в Shopkeeper 2 при добавлении в корзину

#MODx, #MODx Revo, #Shopkeeper
Изменить цену в Shopkeeper 2 при добавлении в корзину

Иногда возникает задача изменить цену у товара в зависимости от определенных условий. При отображении в каталоге, в карточке товара для изменения цены достаточно применить выходной фильтр. Но как потом скормить измененную цену корзине для магазина на Shopkeeper 2? Для этих целей предусмотрено специальное событие, которое регистрируется при установке пакета Shopkeeper. Нам остается только написать плагин и повесить его на это событие. Давайте рассмотрим модификацию цены товара на примере импортных товаров. Допустим, у нас есть товары, которые поступают на склад в валюте. Стоит задача отобразить цены на сайте по заданному курсу.

Создаём плагин для изменения цены. На вкладке "Системные события" отмечаем OnSHKgetProductPrice. И используем следующий код.

$output = 0;
$price_tv_name = 'price';//Имя TV цены
$p_id = isset($purchaseArray['shk-id']) && is_numeric($purchaseArray['shk-id']) ? $purchaseArray['shk-id'] : 0;
if($p_id){
    $price_tv = $modx->getObject('modTemplateVar',array('name'=>$price_tv_name));
    $output = $price_tv->renderOutput($p_id);
    $kurs = $modx->getOption('kurs', '', 1); //Параметр в настройках системы со значением курса
    $output = ceil (floatval($output)*$kurs);
}
$modx->event->_output = '';
$modx->event->output($output);


Поделиться в соцсетях:

Статьи по теме

MODX Revo - Access Denied

Как в MODX Revo побороть ошибку "Доступ запрещен" для политики доступа. Ошибка возникает при сохранении ресурса - 200 OK, Access denied

Читать далее ...