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:add-min-max-property-value
Media Files
====== Добавление минимальных и максимальных значений свойств товаров и ярлыков ====== ==== Описание ==== У нас уже имеется решение которое корректирует работу фильтров для ярлыков. Однако фильтры бывают не всегда стандартными и для их корректной работы необходимы минимальное и максимальное значение какого-либо свойства. В стандартном контроллере уже есть метод addMinMaxPrice() который добавляет минимальное и максимальное значение цены товаров в группе. Однако метода, который бы добавлял минимальное и максимальное значение свойства товара или ярлыка нет. Вот пример такого фильтра, для корректной работы которого необходимо знать минимальное и максимальное значение дополнительных свойств: {{:private:koding:hostcms:reshenija:pasted:20171010-112520.png}} Значения этих свойств добавляется при помощи метода addMinMaxProperty: <code php> public function addMinMaxProperty($aProperties_id) { $iCurrentShopGroup = intval($this->group); //Получаем номер текущей группы $arItemsId = array(); $oShortcuts = Core_Entity::factory('shop_item'); //Находим все ярлыки $oShortcuts->queryBuilder() ->where('shop_items.shortcut_id', '!=', 0) ->where('shop_items.shop_group_id', '=', $iCurrentShopGroup); $aoShortcuts = $oShortcuts->findAll(); //Записываем в массив id всех ярлыков $aShortcutsId = array(); foreach ($aoShortcuts as $oShortcurt) { $aShortcutsId[] = $oShortcurt->shortcut_id; } $oShop_Items = Core_Entity::factory('shop_item'); //Если есть ярлыки if(count($aShortcutsId) > 0) { $oShop_Items->queryBuilder() ->where('shop_items.shop_group_id', '=', $iCurrentShopGroup) ->where('shop_items.shortcut_id', '=', 0) ->setOr() ->where('shop_items.id', 'IN', $aShortcutsId); } else { $oShop_Items->queryBuilder() ->where('shop_items.shop_group_id', '=', $iCurrentShopGroup); } $aoShop_Items = $oShop_Items->findAll(); foreach($aProperties_id as $property_id) { $aPropertyValues = ''; $oProperty = Core_Entity::factory('Property', $property_id); foreach($aoShop_Items as $oShop_Item) { $oPropertyValue = $oProperty->getValues($oShop_Item->id, FALSE); if(isset($oPropertyValue[0])) { $aPropertyValues[] = $oPropertyValue[0]->value; } } if(is_array($aPropertyValues)) { $minPropertyValue = min($aPropertyValues); $maxPropertyValue = max($aPropertyValues); $this->addEntity( Core::factory('Core_Xml_Entity') ->name('minPropertyValue') ->value($minPropertyValue) ->addAttribute('id', $property_id) ) ->addEntity( Core::factory('Core_Xml_Entity') ->name('maxPropertyValue') ->value($maxPropertyValue) ->addAttribute('id', $property_id) ); } } return $this; } </code> Этот метод принимает массив идентификаторов свойств, которые необходимо узнать, а возвращает в XML тэги <minPropertyValue id=""> и <maxPropertyValue id="">,где id это идентификатор свойства, который мы передаем в качестве аргумента. ==== Пример использования ==== Вызов в макете или ТДС: <code php> $Kad_Shop_Controller_Show ->group($iCurrentShopGroup) // Указываем группу ->->addMinMaxProperty(array(423,424)) </code> В результате работы в XML появятся теги с минимальным и максимальным значением свойсв, id которых были переданы в массиве в качестве аргумента: <code xml> <minPropertyValue id="423">50</minPropertyValue> <maxPropertyValue id="423">125</maxPropertyValue> <minPropertyValue id="424">35</minPropertyValue> <maxPropertyValue id="424">80</maxPropertyValue> </code> <wrap lo>Страницу создал Егор Козырев 10.10.17 в 10:55</wrap>
Save
Preview
Cancel
Edit summary
private/koding/hostcms/modules/shop/useful/add-min-max-property-value.txt
· Last modified: 10.10.17 в 11:56 by
creative27016_gmail.com
Page Tools
Show page
Old revisions
Export to PDF
Rename Page
Back to top