05.08.2019
Как добавить свой фильтр в списке заказов в админке
Иногда нужно сделать дополнительную фильтрацию по заказам в админке в списке заказов. Как пример, это может быть разделение заказов в админке по сайтам (многосайтовость). Для сайтов на одном ядре site1.ru и site2.ru показываем в админке только свои заказы.
Данный функционал может пригодится, если с заказами с сайтов должны работать отдельные менеджеры. В стандартном варианте списка, менеджеры будут видеть все заказы, а это может их запутать.
Реализация:
Для кастоной фильтрации по заказам в списке заказов в админке можно воспользоваться событием "OnSaleAdminOrderList".
<?
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'sale',
'OnSaleAdminOrderList',
'OnSaleAdminOrderListHandler'
);
function OnSaleAdminOrderListHandler(\Bitrix\Main\Event $event)
{
$getListParams = $event->getParameters();
$context = \Bitrix\Main\Application::getInstance()->getContext();
$server = $context->getServer();
$site = \Bitrix\Main\SiteDomainTable::getList([
"filter" => [
"DOMAIN" => $server->getServerName()
]
])->fetch();
$getListParams['filter']['LID'] = $site["LID"];
$result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $getListParams);
return $result;
}