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

Материал из 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+.