Вывод суммы заказа на всех этапах заказа

Материал из Umicms
Версия от 14:13, 28 июня 2013; Alexei (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 2.9

Задача: Вывести сумму заказа на всех этапах оформления заказа.

Реализуем решение данной задачи с помощью кастомного макроса, в котором с помощью выборки selector получаем значение суммы из последнего существующего заказа. В файл classes/modules/custom.php после //TODO: Write your own macroses here необходимо вставить следующий код:

public function lastOrderPrice () {
		
$pages = new selector('objects');

$pages->types('object-type')->id(24);
    
$pages->order('id')->desc();   
 
$pages->limit(0,1);

Здесь мы выбираем самый последний существующий заказ

$page = $pages->result;
        
$price_order=$page[0]->getValue('total_price');
		
return $price_order;
}

Теперь в переменную $price_order передаем сумму нашего заказа. Осталось вывести это в шаблоне. В TPL-шаблонизаторе, к примеру, чтобы вывести на странице выбора адреса доставки необходимо в шаблоне tpls/emarket/delivery/default.tpl в блоке 'delivery_address_block' после формы вставить следующую строку:

<p>Сумма Вашего заказа - %custom lastOrderPrice()% рублей.</p>

Выглядеть это будет так: LastOrderPrice.png

В остальные шаблоны добавление аналогичное. В XSLT-шаблонизаторе вывести значение этой переменной можно с помощью следующей строки:

<xsl:value-of  select="document('udata://custom/lastOrderPrice')/udata" />

На примере demodizzy ее можно вставить в templates/demodizzy/xslt/modules/emarket/purchase.xsl после строки

<xsl:apply-templates select="document('udata://emarket/purchase')" />

LastOrderPrice2.png