Вывод суммы полей товаров в корзине
Материал из Umicms
Задача
Допустим, интернет-магазин продаёт какие-либо товары, у которых есть дополнительное поле - площадь, длина или, например, объём, и надо вывести макросом общий объём (площадь, длину и т.д.) товаров. Для этого напишем кастомный макрос.
Решение
В файл 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+.
