Вывод суммы полей товаров в корзине — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
Строка 1: Строка 1:
[[Категория:Верстка в TPL]][[Категория: Верстка в XSLT]][[Категория: Модуль Интернет магазин]]
+
[[Категория:Верстка в TPL]][[Категория: Верстка в XSLT]][[Категория: Модуль Интернет магазин]][[Категория: Написание кастомных макросов]]
 
'''Актуально для версии 2.9.6'''<br/><br/>
 
'''Актуально для версии 2.9.6'''<br/><br/>
 
'''Задача:''' Реализовать функционал подсчета общей суммы значений какого-либо поля товаров в корзине. <br/><br/>
 
'''Задача:''' Реализовать функционал подсчета общей суммы значений какого-либо поля товаров в корзине. <br/><br/>
 
'''Реализация:''' <br/>
 
'''Реализация:''' <br/>
  
 
+
В файл '''custom.php''', находящийся в директории /classes/modules/, добавим следующие строчки:
 
 
В файл [[custom.php]] (находящийся в /classes/modules/) добавим следующие строчки:
 
 
<source lang="php">
 
<source lang="php">
 
public function sumPropertyValuesBasketItems($propName) {
 
public function sumPropertyValuesBasketItems($propName) {
Строка 32: Строка 30:
 
}
 
}
 
</source>
 
</source>
 +
 +
Макрос '''sumPropertyValuesBasketItems()''' возвращает общую сумму значений поля с идентификатором '''$propName''' товаров в корзине.
  
 
<h2>TPL-шаблонизатор</h2>
 
<h2>TPL-шаблонизатор</h2>
  
 
<h2>XSLT-шаблонизатор</h2>
 
<h2>XSLT-шаблонизатор</h2>

Версия 07:08, 27 апреля 2014

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

Задача: Реализовать функционал подсчета общей суммы значений какого-либо поля товаров в корзине.

Реализация:

В файл custom.php, находящийся в директории /classes/modules/, добавим следующие строчки:

public function sumPropertyValuesBasketItems($propName) {
	if ( !$propName ) {
		$propName = getRequest('param0');
	}
	$sumTotal = 0;
	// Получение объект заказа (состояние текущей корзины)
	$basketOrder = cmsController::getInstance()->getModule("emarket")->getBasketOrder();
	// Пересчёт содержимого корзины
	$basketOrder->refresh();
	// Получение элементов корзины
	$orderItems = $basketOrder->getItems();
	
	foreach ($orderItems as $orderItem) {
		$hierarchyElement = $orderItem->getItemElement();
		$elementPropValue = floatval( $hierarchyElement->getValue($propName) );
		$orderItemAmount = $orderItem->getAmount();
		
		$sumTotal += $elementPropValue * $orderItemAmount;
	}
	
	$sumTotal = number_format($sumTotal, 2, '.', ',');
	return $sumTotal;
}

Макрос sumPropertyValuesBasketItems() возвращает общую сумму значений поля с идентификатором $propName товаров в корзине.

TPL-шаблонизатор

XSLT-шаблонизатор