Документация по модулю Picom: IndexNow
Описание работы событий в модуле
При изменении сущностей, модуль добавляет ссылку на этот элемент в очередь. После, через какое-то время, запускается обработка очереди и отправка накопленных ссылок в Indexnow.
С помощью событий можно воздействовать как на добавление ссылок, так и на обработку очереди.
На всех событиях onBefore* можно отменить исполнение, вернув результат с типом ERROR. Результат на событиях onAfter* никак не обрабатывается.
Вспомогательные функции
- Picom\Indexnow\Indexnow::addLinkToQueue($link) - добавляет ссылку в очередь на отправку.
- Picom\Indexnow\Indexnow::processQueue() - запускает обработку очереди по отправке ссылок.
Примеры
Пример кода, с отменой добавления в очередь ссылки на элемент с ID 767:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('picom.indexnow', 'onBeforeElementLinkAdd', 'undoFunc');
function undoFunc($event) {
if ($event->getParameter('ELEMENT')['ID'] === '767') {
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::ERROR);
}
}
Замена https на http в ссылке при определенном хосте:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('picom.indexnow', 'onBeforeLinkAdd', 'replaceFunc');
function replaceFunc($event) {
if ($event->getParameter('HOST') === 'example.com') {
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, [
'LINK' => str_replace('https://', 'http://', $event->getParameter('LINK'))
]);
}
}
Добавление ссылки в очередь и запуск обработки очереди, если не используются агенты (в общем случае, если не настроен запуск crontab).
Если добавляете несколько ссылок, то вначале добавьте все в очередь, только после запускайте обработку.
use \Bitrix\Main\Loader;
use \Picom\Indexnow\Utils;
use \Picom\Indexnow\Indexnow;
Loader::includeModule('picom.indexnow');
Indexnow::addLinkToQueue('https://picom.ru/any-page/');
if (! Utils::isUsingAgents()) {
Indexnow::processQueue();
}
onBeforeLinkAdd
Перед добавлением ссылки в очередь.
Параметры:
- LINK - ссылка, которая будет добавлена в очередь.
- HOST - домен ссылки.
onAfterLinkAdd
После добавления ссылки в очередь.
Параметры:
- LINK - ссылка, которая была добавлена в очередь.
- HOST - домен ссылки.
onBeforeProcessQueue
Перед обработкой очереди ссылок.
Без параметров.
onAfterProcessQueue
После обработки очереди ссылок.
Параметры:
- TIME - UNIX Timestamp. По этому параметру можно получить все только что отправленные ссылки из таблицы в базе данных.
onBeforeFileLinkAdd
Перед добавлением ссылки на статичный файл в очередь.
Параметры:
- LINK - ссылка, которая будет добавлена в очередь.
onAfterFileLinkAdd
После добавления ссылки на статичный файл в очередь.
Параметры:
- LINK - ссылка, которая была добавлена в очередь.
onBeforeSectionLinkAdd
Перед добавлением ссылки на раздел инфоблока в очередь.
Параметры:
- SECTION - информация о разделе. *
- LINK - ссылка, которая будет добавлена в очередь.
- HOST - домен ссылки.
onAfterSectionLinkAdd
После добавления ссылки на раздел инфоблока в очередь.
Параметры:
- SECTION - информация о разделе. *
- LINK - ссылка, которая будет добавлена в очередь.
- HOST - домен ссылки.
onBeforeElementLinkAdd
Перед добавлением ссылки на элемент инфоблока в очередь.
Параметры:
- ELEMENT - информация об элементе. **
- LINK - ссылка, которая будет добавлена в очередь.
- HOST - домен ссылки.
onAfterElementLinkAdd
После добавления ссылки на элемент инфоблока в очередь.
Параметры:
- ELEMENT - информация об элементе. **
- LINK - ссылка, которая будет добавлена в очередь.
- HOST - домен ссылки.
* В параметре SECTION гарантируются только наличие полей ID, IBLOCK_ID, SECTION_PAGE_URL.
** В параметре ELEMENT гарантируется только наличие полей ID, IBLOCK_ID, DETAIL_PAGE_URL