В модулее есть события, с помощью которых можно расширять стандартную карту сайта, модифицировать и выоплнять операции после окончания генерации
Событие вызывается после инициализации данных но до начала генерации карты.
Передаваемые параметры:
NS
массив с временными данными, хранящий текущий шаг и прочие необходимые в процессе генерации данные. arSitemap
- массив описывающий настройки для генерации карты сайта, получаемый с помощью \Bitrix\Seo\SitemapTable::getById()
Вернуть необходимо объект результата с успешным статусом , содержащий в параметах:
NS
- если нужно сохранить какие то врмеенные данные или модифицировать итоговый масси со временными даннымиCOMPLETE
- true или false, в зависимости от того закончена ли подготовка или нетSTATUS
- строк, содержащая текст текущей стадии, например выопленено на 30% или подготовлен 1й файл \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::SUCCESS,
[
'NS' => [...],
'COMPLETE' => false,
'STATUS' => 'Выполнено на 63%',
'PROGRESS' => 63,
]
)
Bitrix\Main\EventManager::getInstance()->addEventHandler("bxmaker.autositemap", "onSitemapStepPrepare", "BXmakerAutoSitemapOnSitemapStepPrepare");
function BXmakerAutoSitemapOnSitemapStepPrepare(\Bitrix\Main\Event $event)
{
$NS = $event->getParameter('NS');
$arSitemap = $event->getParameter('arSitemap');
// временные данные
if (!isset($NS['BXmakerAutoSitemapOnSitemapStepPrepare'])) {
$NS['BXmakerAutoSitemapOnSitemapStepPrepare'] = [
'step' => 1,
];
}
$data = &$NS['BXmakerAutoSitemapOnSitemapStepPrepare'];
//какие то операции
if ($data['step'] < 10) {
$data['step']++;
}
//завершаем
$arReturn = [
'NS' => $NS,
'COMPLETE' => ($data['step'] >= 10),
'STATUS' => sprintf('Операции в обработчике событий onSitemapStepPrepare - %d %%', ($data['step'] / 10) * 100),
'PROGRESS' => ($data['step'] / 10) * 100,
];
$result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $arReturn);
return $result;
}
Bызывается на каждом шаге генерации карты. Можно использовать чтобы дополнить массив ссылок на карты дополнительной.
Передаваемые параметры:
NS
массив с временными данными, хранящий текущий шаг и прочие необходимые в процессе генерации данные. arSitemap
- массив описывающий настройки для генерации карты сайта, получаемый с помощью \Bitrix\Seo\SitemapTable::getById()
Вернуть необходимо объект результата с успешным статусом , содержащий в параметах:
NS
- если нужно сохранить какие то врмеенные данные или модифицировать итоговый масси со временными данными\Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::SUCCESS,
[
'NS' => [...],
]
)
\Bitrix\Main\EventManager::getInstance()->addEventHandler("bxmaker.autositemap", "onSitemapStep", "BXmakerAutoSitemapOnSitemapStep");
function BXmakerAutoSitemapOnSitemapStep(\Bitrix\Main\Event $event)
{
$NS = $event->getParameter('NS');
if (isset($NS['XML_FILES']) && is_array($NS['XML_FILES']) && !in_array('sitemap_bxmaker_autositemap_test.xml', $NS['XML_FILES'])) {
$NS['XML_FILES'][] = 'sitemap_bxmaker_autositemap_test.xml';
}
//завершаем
$arReturn = [
'NS' => $NS,
];
$result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $arReturn);
return $result;
}
Вызывается на последнем шаге генерации карты, когда уже все сделано и карта сгенерирована
Передаваемые параметры:
NS
массив с временными данными, хранящий текущий шаг и прочие необходимые в процессе генерации данные. arSitemap
- массив описывающий настройки для генерации карты сайта, получаемый с помощью \Bitrix\Seo\SitemapTable::getById()
Возвращать что-либо в обработчике не обязатльно
\Bitrix\Main\EventManager::getInstance()->addEventHandler("bxmaker.autositemap", "onSitemapComplete", "BXmakerAutoSitemapOnSitemapComplete");
function BXmakerAutoSitemapOnSitemapComplete(\Bitrix\Main\Event $event)
{
$NS = $event->getParameter('NS');
$arSitemap = $event->getParameter('arSitemap');
//mail('test@local.loc', 'Сгенерирована карта', 'Сгенерирована карта №'.$arSitemap['ID'].' - '. $arSitemap['NAME']);
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS);
}