Вывод суммы полей товаров в корзине
Материал из Umicms
Версия от 12:53, 7 апреля 2010; Ver (обсуждение | вклад)
Задача
Допустим, интернет-магазин продаёт какие-либо товары, у которых есть дополнительное поле - площадь, длина или, например, объём, и надо вывести макросом общий объём (площадь, длину и т.д.) товаров. Для этого напишем кастомный макрос.
Решение
В файл custom.php (находящийся в /classes/modules/) добавим следующие строчки:
//TODO: Write your own macroses here
public function calculateSize() {
// Переменная, содержащая сумму полей
$totalVol = 0;
// Получение объект заказа (состояние текущей корзины)
$order = cmsController::getInstance()->getModule("emarket")->getBasketOrder();
// Пересчёт содержимого корзины
$order->refresh();
// Получение элементов корзины
$items = $order->getItems();
// Цикл получения суммы
foreach($items as $item) {
// Сложение. "size" - идентификатор поля.
$totalSize += (int)$item->getItemElement()->getObject()->getValue("size") * (int)$item->getAmount();
}
// Возвращаем результат
return $totalSize;
}
Далее, в необходимом месте вставляем %custom calculateSize()%. При необходимости можно добавить проверку или разделение по типам товаров.
Примечание
Данный макрос написан для версии 2.8+.