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:elements:hidenotalloweditemsandmods
Media Files
====== Скрыть товары и модификации товаров, которых нет на основном складе ====== ===== Товары ===== Хотим скрыть товары, которых нет в наличии на текущем складе. Назначаем наблюдатель для события ''onBeforeRedeclaredShow'' класса ''Shop_Controller_Show'': * В ''bootstrap.php'' добавляем код:<code php>// Идентификатор интернет-магазина define('REGION_PRICES_SHOP_ID', 4); // KAD: Скрываем товары, которых нет в наличии на текущем складе Core_Event::attach('Shop_Controller_Show.onBeforeRedeclaredShow', array('Kad_Shop_Item_Observers_Hidenotavailableitems', 'onBeforeRedeclaredShow'));</code> * В директории ''/modules/kad/shop/item/observers/'' создаем файл ''hidenotavailableitems.php'' со следующим содержимым:<code php><?php /* * @author Maxim Zasorin, KAD Systems (©) 2015 * @date 18-11-2015 * * В bootstrap.php: * // KAD: Скрываем товары, которых нет в наличии на текущем складе Core_Event::attach('Shop_Controller_Show.onBeforeRedeclaredShow', array('Kad_Shop_Item_Observers_Hidenotavailableitems', 'onBeforeRedeclaredShow')); * Копирование и использование файлов модуля * в коммерческих целях ЗАПРЕЩЕНО * */ defined('HOSTCMS') || exit('HostCMS: access denied.'); class Kad_Shop_Item_Observers_Hidenotavailableitems { static public function onBeforeRedeclaredShow($object, $args) { if ( ( defined('REGION_PRICES_SHOP_ID') && REGION_PRICES_SHOP_ID == $object->getEntity()->id ) && !$object->item ) { $oShop = Core_Entity::factory('Shop', REGION_PRICES_SHOP_ID); $oCurrent_Warehouse = $oShop->Shop_Warehouses->getDefault(); $object->shopItems() ->queryBuilder() ->leftJoin('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', 'shop_items.id', array( array( 'AND' => array('shop_warehouse_items.shop_warehouse_id', '=', $oCurrent_Warehouse->id) ) ) ) ->where('shop_warehouse_items.count', '>', 0); } } }</code> ===== Модификации ===== Хотим скрыть модификации товаров, которых нет в наличии на текущем складе. Назначаем наблюдатель для события ''onBeforeShowXmlModifications'' сущности ''shop_item'': * В ''bootstrap.php'' добавляем код:<code php>// KAD: Скрываем товары, которых нет в наличии на текущем складе Core_Event::attach('Shop_Controller_Show.onBeforeRedeclaredShow', array('Kad_Shop_Item_Observers_Hidenotavailableitems', 'onBeforeRedeclaredShow'));</code> * В директории ''/modules/kad/shop/item/observers/'' создаем файл ''hidenotavailablemods.php'' со следующим содержимым:<code php><?php /* * @author Maxim Zasorin, KAD Systems (©) 2015 * @date 18-11-2015 * * В bootstrap.php: * // KAD: Скрываем модификации, которых нет в наличии на текущем складе Core_Event::attach('shop_item.onBeforeShowXmlModifications', array('Kad_Shop_Item_Observers_Hidenotavailablemods', 'onBeforeShowXmlModifications')); * Копирование и использование файлов модуля * в коммерческих целях ЗАПРЕЩЕНО * */ defined('HOSTCMS') || exit('HostCMS: access denied.'); class Kad_Shop_Item_Observers_Hidenotavailablemods { static public function onBeforeShowXmlModifications($object, $args) { if ( ( defined('REGION_PRICES_SHOP_ID') && REGION_PRICES_SHOP_ID == $object->shop_id ) ) { $oShop = Core_Entity::factory('Shop', REGION_PRICES_SHOP_ID); $oCurrent_Warehouse = $oShop->Shop_Warehouses->getDefault(); $args[0]->queryBuilder() ->select('shop_items.*') ->leftJoin('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', 'shop_items.id', array( array( 'AND' => array('shop_warehouse_items.shop_warehouse_id', '=', $oCurrent_Warehouse->id) ) ) ) ->where('shop_warehouse_items.count', '>', 0); } } }</code> Константа REGION_PRICES_SHOP_ID задает идентификатор интернет-магазина, для которого хотим скрыть товары и модификации товаров. Если наблюдатель не срабатывает на странице интернет-магазина, то возможно в ТДС используется класс, наследованный от Shop_Controller_Show, например, с названием My_Shop_Controller_Show, или другой. Для такого класса нужно назначить наблюдатель отдельно. В ''bootstrap.php'' добавляем код:<code php> Core_Event::attach('My_Shop_Controller_Show.onBeforeRedeclaredShow', array('Kad_Shop_Item_Observers_Hidenotavailableitems', 'onBeforeRedeclaredShow'));</code>
Save
Preview
Cancel
Edit summary
private/koding/hostcms/modules/shop/elements/hidenotalloweditemsandmods.1448032110.txt.gz
· Last modified: 20.11.15 в 18:08 by
maximzasorin_gmail.com
Page Tools
Show page
Old revisions
Export to PDF
Rename Page
Back to top