Добавляем XML-карту сайта в Эгею
sitemap.xml с автоматическим обновлением по расписанию

В этом посте я расскажу о том, как добавить возможность автоматической генерации валидной карты сайта твоего блога и записи её в файл — sitemap.xml
Создаём и правим файлы
Сперва тебе необходимо подключиться к FTP-серверу и получить доступ к файлам твоего сайта, а затем создать в корневой директории файл с названием sitemap_2BDrGDx.php и выставить на него права доступа 0755. Затем необходимо открыть этот файл в текстовом редакторе и добавить следующий код:
Название файла может быть любое, но я рекомендую назвать его сложнее, чтобы исключить возможность обращения к нему из вне третьими лицами.
<?php
$domain = 'https://okatiev.ru'; // URL-address
$db_user = 'dbuser'; // DB username
$db_password = 'dbpass'; // DB password
$db_database = 'dbname'; // DB name
$db_host = 'localhost'; // DB address
$db = new mysqli($db_host, $db_user, $db_password, $db_database);
if ($db->connect_errno) { die('Ошибка соединения: ' . $db->connect_error); }
$xml = '<?xml version="1.0" encoding="UTF-8"?>';
$xml .= "\n";
$xml .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
$xml .= "
<url>
<loc>$domain</loc>
<changefreq>daily</changefreq>
<lastmod>" . date('c',time()) . "</lastmod>
<priority>1.0</priority>
</url>";
$xml .= "
<url>
<loc>$domain/all/</loc>
<changefreq>daily</changefreq>
<lastmod>" . date('c',time()) . "</lastmod>
<priority>1.0</priority>
</url>";
$result = $db->query("SELECT OriginalAlias FROM `e2BlogNotes` WHERE IsPublished = 1 AND IsIssue = 0 AND isvisible = 1");
while ($row = $result->fetch_assoc()) {
$page = $row['OriginalAlias'];
$xml .= "
<url>
<loc>$domain/all/$page/</loc>
<changefreq>weekly</changefreq>
<lastmod>" . date('c',time()) . "</lastmod>
<priority>0.9</priority>
</url>";
}
$xml .= "
<url>
<loc>$domain/tags/</loc>
<changefreq>daily</changefreq>
<lastmod>" . date('c',time()) . "</lastmod>
<priority>0.8</priority>
</url>";
$result = $db->query("SELECT OriginalAlias FROM `e2BlogKeywords`");
while ($row = $result->fetch_assoc()) {
$tag = $row['OriginalAlias'];
$xml .= "
<url>
<loc>$domain/tags/$tag/</loc>
<changefreq>weekly</changefreq>
<lastmod>" . date('c',time()) . "</lastmod>
<priority>0.7</priority>
</url>";
}
$xml .= "
</urlset>";
$db->close();
$fp = fopen('sitemap.xml', 'w');
fwrite($fp, $xml);
fclose($fp);
echo "<h1>Sitemap.xml has been updated successfully!</h1>";
?>
В шапке кода тебе необходимо изменить учётные данные для доступа к базе данных, которые позволят скрипту подключиться к БД и получить из неё необходимую информацию для корректного создания карты сайта.
Этот скрипт добавляет в карту сайта главную страницу твоего блога — https://okatiev.ru , страницу с перечнем всех записей (аналог html-карты сайта) — https://okatiev.ru/all/ , конечно же добавляет все твои записи, ссылку на перечень тегов — https://okatiev.ru/tags/ , и ссылки на все созданные ранее теги.
Для того, чтобы создать карту сайта, тебе нужно обратиться напрямую к созданному файлу со скриптом через браузер.
https://okatiev.ru/sitemap_2BDrGDx.php
В случае успешной генерации XML-карты сайта ты увидишь такое сообщение в браузере:

Добавляем задание в CRON
Чтобы карта сайта для твоей Эгеи обновлялась автоматически и систематически, тебе необходимо добавить задание в CRON-планировщик.
Сделать это ты можешь либо через GUI-панель управления хостингом, либо посредством прямой правки файла crontab в UNIX-подобной ОС:
/usr/bin/wget -O - -q -t 1 'https://okatiev.ru/sitemap_2BDrGDx.php' > /dev/null 2>&1
Команда для добавления через панель управления web-хостингом. Замени адрес сайта на свой и протокол https на http, если не используешь защищенное соединение.

30 3 * * * root /usr/bin/wget -O - -q -t 1 'https://okatiev.ru/sitemap_2BDrGDx.php' > /dev/null 2>&1
Эту строку необходимо добавить в файл crontab, перед символом # в конце файла. Также замени адрес сайта на свой и протокол https на http, если не используешь защищенное соединение.

Сделать это можно после подключения по SSH к web-серверу:
vi /etc/crontab
или
nano /etc/crontab
либо править файл /etc/crontab через sFTP, открыв файл в текстовом редакторе. После этого, карта сайта будет автоматически обновляться в заданное время — 03:30 утра. Вы можете выставить любое другое время.
Вывод
В качестве вывода можно сказать о том, что у нас получился довольно простой и эффективный способ генерации карты сайта для движка блогов — Эгеи.
Созданный файл sitemap.xml проходит валидацию как в Яндекс.Вебмастерах, так и в Google Console, также файл имеет в своей структуре тег lastmod, который принимает значение реального времени в момент обращения к скрипту.
Таким образом поисковые роботы будут понимать, что ты обновил контент на блоге, следовательно улучшится и ускорится индексация твоего ресурса.
Я надеюсь на то, что смог помочь тебе добавить карту сайта на твой блог. Если у тебя возникли вопросы — пиши их в комментариях, я постараюсь ответить! До связи!