По сути тестовая статья

Как известно, чтобы сайт находился в описке гугла и яндекса, нужно зайти в google search console или яндекс вебмастер, и там уже добавить свой сайт. Среди улучшений поиска они просят добавлять карту сайта xml. А так как у меня сайт написан в ручную своими руками без CMS, то требовалось какое-то решение, чтобы карта сайта сама создавалась/обновлялась. В первой версии на страничке обо мне я сделал кнопку - обновить это файл (естественно её видел только я), но каждый раз после добавления статьи тыкать туда - было негоже. Решено было на страничке добавления статьи (опять таки только я её вижу, да и доступна только мне) добавить функцию создания обновления карты сайта в формате xml.

В первую очередь смотрим требования к данному документу -  в сети их полно, потом смотрим как создаются файлы xml на php. А дальше юзаем функцию fopen() и  вуаля.

Что по логике функции - все просто. Для нчала в бд создаем новую таблицу, где для каждого раздела (ссылки в шапке) создается время последнего обновления, время создания статей уже записывалось раннее.

Пишем стандартный заголовок:

$xw = xmlwriter_open_memory();
xmlwriter_set_indent($xw, 1);
$res = xmlwriter_set_indent_string($xw, ' ');
xmlwriter_start_document($xw, '1.0', 'UTF-8');
xmlwriter_start_element($xw, 'urlset');
xmlwriter_start_attribute($xw, 'xmlns');
xmlwriter_text($xw, "http://www.sitemaps.org/schemas/sitemap/0.9");
xmlwriter_end_attribute($xw);

Дальше стоит сделать ремарку. Все статьи независимо от раздела находятся в одной таблице в БД, в ней есть поле с указанием раздела в котором отображается эта стаья. Так вот дальше идёт перебор. Если раздел только что созданной таблицы совпадает с разделом, записываемым в данный момент в карту сайта, то туда пишется текущее время, а так же обновляется время последнего обновления в новой таблице. Все остальные разделы прописываются без изменений (время берется из той же таблицы, но новое не записывается). Частоту индексирования ставим раз в день - я же часто пишу новые статьи. Кроме "обо мне" - я обновляюсь не так часто, пусть будет месяц.

Со статьями все просто, берем все строки из таблицы со статьями и по одной записываем все данные в карту сайта. Псевдоссылки и время создания как раз там уже хранятся.Частоту обновления ставим никогда, статья написана, нечего ее больше трогать. Все делается в одном цикле. Под конец записываем всё в файл xml и закрываем его, а ну и делаем уведомление что всё получилось. =)))

xmlwriter_end_document($xw);

$xml = xmlwriter_output_memory($xw);

$fp = fopen("*/*.xml", "w");
if (fwrite($fp, $xml)) echo "Файл */*.xml успешно обновлен";
fclose($fp);

Название и расположение скрыто. И по сути данная функция испытана на локальном сервере, а этой статьей я испытва функцию на малиновом сервере.

 

Вы не можете комментировать записи, для этого вам необходимо войти или зарегистрироваться
Последняя публикация
QUAD405 из поднебесной опубликовано в субботу 6 февраля 2021 года в 19:49
Последний комментарий

mcfirsachy написал к публикации QUAD405 из поднебесной cледующее:

Кто дочитал до конца - извините за огромное количество ошибок =)))) Хотелось бы добавить что на выпрямителе стоит защита акустики - подключение колонок с задержкой.
Самая просматриваемая публикация
сервер на малине просмотров: 464
Самая комментируемая публикация
К публикации сервер на малине было написано 8 комментариев.
Погода за бортом

Сейчас в Сосновом Бору облачно с прояснениями

Скорость ветра 2 м/с

Влажность 74 %

Температура 27.06 °C


Система полуумного дома

Получение температуры...

Получение влажности...