Как сделать активными только импортируемые товары — различия между версиями
Материал из Umicms
Stexe (обсуждение | вклад) (Новая страница: « category:Модуль Обмен данными '''Задача''': Сделать активными только импортируемые товары, в…») |
Stexe (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
[[category:Модуль Обмен данными]] | [[category:Модуль Обмен данными]] | ||
− | + | Статья актуальна для версии 2.9.21905 <br/> | |
'''Задача''': Сделать активными только импортируемые товары, все остальные товары в каталоге должны стать неактивными.<br/><br/> | '''Задача''': Сделать активными только импортируемые товары, все остальные товары в каталоге должны стать неактивными.<br/><br/> | ||
'''Реализация''': В директорию \classes\modules\exchange\ нужно добавить файл custom_events.php со следующим содержанием: | '''Реализация''': В директорию \classes\modules\exchange\ нужно добавить файл custom_events.php со следующим содержанием: |
Версия 08:13, 5 июня 2013
Статья актуальна для версии 2.9.21905
Задача: Сделать активными только импортируемые товары, все остальные товары в каталоге должны стать неактивными.
Реализация: В директорию \classes\modules\exchange\ нужно добавить файл custom_events.php со следующим содержанием:
<?php
new umiEventListener("exchangeOnAddElement", "exchange", "disActive");
new umiEventListener("exchangeOnUpdateElement", "exchange", "disActive");
?>
В этой же директории в файл __custom.php нужно добавить следующий код:
static $flag = false;
public function disActive(iUmiEventPoint $e){
if($e->getMode()==='before'){
$element = $e->getRef('element');
$element->SetIsActive(true);
if((self::$flag===false)){
$pages = new selector('pages');
$pages->types('hierarchy-type')->name('catalog', 'object');
foreach ($pages as $p){
$p->setIsActive(false);
}
self::$flag = true;
}
}
}
Мы добавили обработчик событий добавления и обновления элемента механизмом импорта, в котором все объекты каталога становятся неактивными, а импортируемые элементы - активными.