Вывод суммы полей товаров в корзине — различия между версиями
Материал из Umicms
Ver (обсуждение | вклад) |
Stexe (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | + | [[Категория:Верстка в TPL]][[Категория: Верстка в XSLT]][[Категория: Модуль Интернет магазин]] | |
− | + | '''Актуально для версии 2.9.6'''<br/><br/> | |
+ | '''Задача:''' Реализовать функционал подсчета общей суммы значений какого-либо поля товаров в корзине. <br/><br/> | ||
+ | '''Реализация:''' <br/> | ||
+ | |||
+ | |||
− | |||
В файл [[custom.php]] (находящийся в /classes/modules/) добавим следующие строчки: | В файл [[custom.php]] (находящийся в /classes/modules/) добавим следующие строчки: | ||
<source lang="php"> | <source lang="php"> | ||
− | + | 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; | ||
+ | } | ||
</source> | </source> | ||
− | + | <h2>TPL-шаблонизатор</h2> | |
− | |||
− | |||
− | |||
− | |||
− | + | <h2>XSLT-шаблонизатор</h2> |
Версия 07:05, 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;
}