Как добавить на сайты c CMS MODX поддержку технологии Яндекс IndexNow

22 октября 2021
assets/img/blog/modx_yandex.jpg Как добавить на сайты c CMS MODX поддержку технологии Яндекс IndexNow

18 октября Яндекс официально запустил проект IndexNow. Проект предлагает новый способ взаимодействия сайтов с поисковыми системами. Важное преимущество IndexNow — возможность автоматически сообщать поисковым системам об изменениях на сайте, включая появление новых страниц, обновление или удаление текущих.

Подробнее об использовании API можно почитать на сайте indexnow.org и в справке Яндекса.
Реализовать использование протокола могут владельцы сайтов и разработчики движков. Подробнее о том, как это сделать написано в инструкции.

В этой статье мы рассмотрим способ применения данной технологии от Яндекса на сайтах, построенных на MODX.

Есть 2 способа сообщить Яндексу о изменениях в страницах.

  1. С помощью GET запросов. Так можно отправить в индекс одну страницу. Такой способ подойдёт для небольших проектов.
  2. С помощью POST запросов. Таким образом можно отправить в индекс сразу несколько страниц. Имеет смысл применять для больших информационных ресурсов или магазинов с большим количеством товаров.

 

Инструкция по отправке страниц на индексацию в Яндекс с помощью технологии IndexNow 

С помощью GET запросов.

При редактировании страницы вы или ваш контент-менеджер можете сохранять страницу много раз, для того, чтобы посмотреть, как она будет отображаться на сайте. Так как технология IndexNow новая, и пока не понятно, как она будет реагировать на отправку индекса одной и той же страницы десять раз за день, мы решили действовать следующим образом:

  1. Создаём TV параметр, который будет отвечать за отправку страницы на индексацию.
  2. При сохранении страницы проверяем опубликована ли она и установлен ли флаг индексации.
  3. Если проверка пройдена, отправляем страницы в индекс и сбрасываем флаг индексации.

 

Создаём TV параметр в виде чекбокса, который будет отвечать за отправку страницы в IndexNow.

Вводим имя и описание

Создаём tv параметр в modx

Указываем параметры вывода

Указываем параметры вывода tv в modx

Разрешаем tv параметр для шаблонов

Разрешаем редактирование tv

Теперь, при редактировании страницы, в разделе Дополнительные поля у вас должна появиться соответствующая галочка.

 

Получаем ключ от Яндекса

Для этого вам необходимо подтвердить права на управление сайтом через Яндекс Вебмастер. После подтверждения прав вы получите ключ вида «75350874d660fb78». Далее этот ключ мы будем использовать при формировании GET запроса.

 

Создаём плагин для отправки страниц в индекс.

При создании плагина необходимо перейти на вкладку «Системные события» и установить галочку напротив событий «OnDocFormSave» (будет отвечать за отправку информации при создании или редактировании страниц) и «OnResourceDelete» (отправляет информацию об удалении страницы).

Добавляем плагин

В самом же плагине мы выполним ряд проверок, после чего отправим страницу в сервис IndexNow для индексации. Если получен ответ об успехе сбрасываем TV параметр, после этого запишем адрес страницы и код ответа от Яндекса в лог.


if ($resource->get('published') && $resource->getTVValue('IndexNow'))
{
    $answer = file_get_contents("https://yandex.com/indexnow?url=".$modx->makeUrl($id, '', '', 'full')."&key=72d58e01fbd9628a");
    $answerDecode = json_decode($answer, true);
    if ($answerDecode['success'])
    {
        $modx->log(MODX_LOG_LEVEL_ERROR, 'Страница '.$modx->makeUrl($id, '', '', 'full')." отправлена в индекс. Код ответа сервера: ".$answer);
        $resource->setTVValue('IndexNow', '');
$resource->save();
    }
    else 
        $modx->log(MODX_LOG_LEVEL_ERROR, 'При отправке страницы '.$modx->makeUrl($id, '', '', 'full')." на индексацию произошла ошибка. Код ответа сервера: ".$answer);

}

Данная статья отправлена на индексацию именно при помощи этого способа.