Плагин замены цены в зависимости от суммы заказа

Доброго всем дня.
Задача в следующем.
Дано 4 цены, первая розничная, остальные оптовые, меняются в зависимости от суммы заказа.
Плагин повешен на событие OnSHKcalcTotalPrice.
Проблема в том, что при работе плагина цена меняется корректно, а вот сумма заказа в плейсхолдер [[+price_total]] не выводится.
Код плагина:
if(!function_exists(Get_Price)){
function Get_Price($id,$price_tota) {
global $modx; 
 $resource = $modx->getObject('modResource',array('id'=>$id));
 $price = $resource->getTVValue('price');//Значение TV-розничная цена
 $price2 = $resource->getTVValue('price_opt1');//оптовая цена при 30000
 $price3 = $resource->getTVValue('price_opt2');//оптовая цена при 60000
 $price4 = $resource->getTVValue('price_opt3');//оптовая цена при 90000
 $minzakaz_price1 = 30000;//опт минимальная цена 1
 $minzakaz_price2 = 60000;//опт минимальная цена 2
 $minzakaz_price3 = 90000;//опт минимальная цена 3

 if ($price_tota < $minzakaz_price1)  $price = $price; //цена до первой оптовой цены
 elseif ($price_tota >= $minzakaz_price1){
 	if ($price2 > 0) $price = $price2; /*цена, если больше или равно 30000 */
 }
 if ($price_tota >= $minzakaz_price2) $price = $price3;
 if ($price_tota >= $minzakaz_price3) $price = $price4;
   return $price;
 }
}
/*Собственно плагин, который повешен на OnSHKcalcTotalPrice*/
if ($modx->event->name == 'OnSHKcalcTotalPrice'){
 if(!empty($_SESSION['shk_order'])){
   $purchases = $_SESSION['shk_order'];
  foreach($purchases as $key => $product){
 $id = $product['id']; 
         if (empty($id)) break;
$id_tmp[$id]['id']= $key;
$tmp_prtotal=$price_total;
$price = Get_Price($id,$tmp_prtotal);
$_SESSION['shk_order'][$key]['price']=$price;
 }
}
$price_total = $modx->getOption( 'price_total', $scriptProperties, 0 );
$modx->setPlaceholder('price_total', "$price_total");
$modx->event->output($price_total);
return '';
}
Дмитрий Литвинов
15 февраля 2018, 07:01
modx.pro
1 006
+1

Комментарии: 1

Максим
15 февраля 2018, 18:58
0
$modx->setPlaceholder('price_total', "$price_total");
Вы тут в виде значения строку передаете! Попробуете передать значение переменной:
$modx->setPlaceholder('price_total', $price_total);
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1