Вывод суммы полей товаров в корзине — различия между версиями
Материал из Umicms
Ver (обсуждение | вклад) |
Ver (обсуждение | вклад) |
||
Строка 18: | Строка 18: | ||
// Цикл получения суммы | // Цикл получения суммы | ||
foreach($items as $item) { | foreach($items as $item) { | ||
− | // Сложение. "size" - | + | // Сложение. "size" - идентификатор поля. |
$totalSize += (int)$item->getItemElement()->getObject()->getValue("size") * (int)$item->getAmount(); | $totalSize += (int)$item->getItemElement()->getObject()->getValue("size") * (int)$item->getAmount(); | ||
} | } |
Версия 11:14, 29 марта 2010
Описание
Допустим, интернет-магазин продаёт какие-либо товары, у которых есть дополнительное поле - площадь, длина или, например, объём, и надо вывести макросом общий объём (площадь, длину и т.д.) товаров. Для этого напишем кастомный макрос.
Решение
В файл 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+.