skip to content
KAD::Wiki
User Tools
Log In
Site Tools
Search
Tools
Show page
Old revisions
Log In
>
You are here:
Приветствие
»
Для сотрудников
»
Разработка
»
HostCMS
»
Статьи (по модулям)
»
Интернет-магазин
»
Полезные решения
»
Расчет веса товаров в корзине
private:koding:hostcms:modules:shop:useful:shop_cart_weight
Media Files
====== Расчет веса товаров в корзине ====== Данное решение позволяет модифицировать расчет веса товаров в корзине при расчете стоимости доставки, решение учитывает установленный вес товаров, вес, заданный через свойство в группе и вес по умолчанию. Установка решения. - Добавляем следующий контроллер.<code php><?php defined('HOSTCMS') || exit('HostCMS: access denied.'); /** * Контроллер для расчета веса товаров в корзине. * * @author Maxim Zasorin, KAD Systems (©) 2018 * @date 15-02-2018 */ class Shop_Item_Weight_Controller extends Core_Servant_Properties { protected $_allowedProperties = array( 'groupProperty', 'defaultWeight', ); protected $_ShopCarts; protected $_Shop; public function __construct(Shop_Model $oShop) { parent::__construct(); $this->_Shop = $oShop; $this->_setShopCarts(); $this->defaultWeight = 200; // Вес в граммах } public function getItemWeight(Shop_Cart_Model $oShopCart) { $oShopGroupPropertyList = Core_Entity::factory('Shop_Group_Property_List', $this->_Shop->id); $oWeightProperty = $oShopGroupPropertyList->Properties->getByTagName('average_weight'); $itemWeight = (float) $oShopCart->Shop_Item->weight; if (!$itemWeight && $oWeightProperty) { $oShopGroup = $oShopCart->Shop_Item->Shop_Group; do { $aoWeightPropertyValues = $oWeightProperty->getValues($oShopGroup->id); if (count($aoWeightPropertyValues)) { $itemWeight = (float) $aoWeightPropertyValues[0]->value; } $oShopGroup = $oShopGroup->getParent(); } while (!$itemWeight && ($oShopGroup && $oShopGroup->id)); } if (!$itemWeight) { $itemWeight = $this->defaultWeight; } return $itemWeight; } public function getTotalWeight() { $totalWeight = 0; foreach ($this->_ShopCarts as $oShopCart) { if ($oShopCart->Shop_Item->id && $oShopCart->postpone == 0) { $totalWeight += $this->getItemWeight($oShopCart) * $oShopCart->quantity; } } return $totalWeight; } protected function _setShopCarts() { $this->_ShopCarts = Shop_Cart_Controller::instance()->getAll($this->_Shop); } }</code> - В ТДС корзины при расчете способов доставки после вызова ''$Shop_Delivery_Controller_Show->setUp'' добавляем следующий код:<code php>$oShopItemWeightController = new Shop_Item_Weight_Controller($oShop); $oShopItemWeightController ->groupProperty('average_weight') ->defaultWeight(3000); $Shop_Delivery_Controller_Show ->totalWeight( $oShopItemWeightController->getTotalWeight() );</code>
Save
Preview
Cancel
Edit summary
private/koding/hostcms/modules/shop/useful/shop_cart_weight.txt
· Last modified: 16.02.18 в 09:48 by
maximzasorin_gmail.com
Page Tools
Show page
Old revisions
Export to PDF
Rename Page
Back to top