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

Материал из Umicms
Перейти к:навигация, поиск
Строка 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+.