Скрипт автоматически создаваемая карта xml
Подробно о автоматически создаваемой xml sitemap в php
- Алгоритм создания автогенерации sitemap на php
- Массив всех ссылок сайта для карты xml из базы данных
- Массив всех ссылок сайта для карты xml из файла
- Шапка и первая строка в карте xml
- Цикл для формирования карты xml Запись данных в карту xml
- Код скрипта автоматического создания карты xml
- Проверка и запись в файл карты xml- вариант №2
- Скачать можно здесь
Автоматическое обновление карты сайта xml.
Алгоритм создания автогенерации sitemap на php
Прежде чем приступать к скрипту автогенерации sitemap на php нам нужен алгоритм, т.е. как данный скрипт должен работать!Мы должны хотя бы немного представлять. Но поскольку я знаю, как это работает, то напишу весь алгоритм!
Первая часть sitemap xml не повторяется, поэтому её надо написать вручную. Я в начало всегда вставляю домен сайта "https://dwweb.ru/", чтобы не ломать голову! Помещаем эти данные в переменную, пусть это будет "$data"
Самое важное и самое главное! Вы должны, каким-то образом получить все ссылки в массив. Далее в двух пунктах рассказано, как примерно должен собираться такой массив. Если у вас база данных либо, если у вас сайт на файлах.
После того, как вы собрали в массив все ссылки вашего сайта, сделать основное тело проще простого! Запускаем цикл, в котором оборачиваем ваши ссылки в теги xml. Полученное тело также помещаем в переменную "$data"
И последним пунктом - добавляем "urlset" - закрываем созданные данные из всех предыдущих пунктов. Это тоже добавляем нашей переменной "$data".
После того, как вся ваша "sitemap xml" внутри переменной, её записываем с помощью функции file_put_contents. Это всё!
Это - как должен работать генератор карты xml.
Если вы понятия не имеете, как создать массив о котором было сказано выше, то ниже примерно показано, как этот процесс должен происходить!
В итоге у вас должен получиться массив, который помещаем в переменную
Пример вывод массива для xml карты
Array
(
[0] => https://dwweb.ru/page/php/dinamicheskoe_chislo.html
[1] => https://dwweb.ru/page/js/dw_hide_show.html
[2] => https://dwweb.ru/page/js/atribut_data.html
)
Массив всех ссылок сайта для карты xml из базы данных
В переменнуюДо начала цикла, перед строкой
Пишем такую запись:
У вас должно получиться примерно так:
$sdd_db_host="localhost";
$sdd_db_name="НАЗВАНИЕ-БАЗЫ-ДАННЫХ";
$sdd_db_user="ПОЛЬЗОВАТЕЛЬ";
$sdd_db_pass="ПАРОЛЬ";
@mysql_connect($sdd_db_host,$sdd_db_user,$sdd_db_pass);
@mysql_select_db($sdd_db_name);
$result=mysql_query("SELECT * FROM `НАЗВАНИЕ ТАБЛИЦЫ`");
while ($row=mysql_fetch_array($result))
{
}
mysql_close();
Массив всех ссылок сайта для карты xml из файла
Далее мы переходим на путь непознанный, потому, что хранить данные в файлах могут по разному!
Не будем заниматься предположениями,Опустим лишние подробности, вот тот основной код, который подготавливает наш массив для записи в xml карту...
В ячейке$array_Url = array();
$count_rotate = count($main_fale_rotate);//считаем массив
for ($i=0; $i < $count_rotate; $i++){
$line_explode = explode('::' , $main_fale_rotate[$i]); //разделим ячейку массива по разделителю
$array_Url[] = '}
Для примера вот три строки из файла:
Array
(
[0] => 2021.05.14::php.png::динамическое число::понятие динамического числа, и в php в том числе...::марат::page/php/dinamicheskoe_chislo.html::all/numbers/
[1] => 2021.08.10::dw_hide_and_show.png::dw-блок: hide & show::блок dw hide & show::марат::page/js/dw_hide_show.html::jattribute_data/dw-block/
[2] => 2021.08.10::js.png::атрибут data::добавить/изменить/удалить атрибут data или значение::марат::page/js/atribut_data.html::attribute_data/
[3] =>
)
Применим выше идущий скрипт к данному массиву и получим:
Array
(
[0] => https://dwweb.ru/page/php/dinamicheskoe_chislo.html
[1] => https://dwweb.ru/page/js/dw_hide_show.html
[2] => https://dwweb.ru/page/js/atribut_data.html
)
Шапка и первая строка в карте xml
Две вещи в карте xml не повторяются - это шапка и "urlset", поэтому, шапку надо написать вручную и поместить в переменную "$data":
$data = '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
В переменную $domen - получим ваш домен.
В
В
$domen = $_SERVER["HTTP_X_FORWARDED_PROTO"].'://'.$_SERVER["HTTP_HOST"];
$data .= '<url>
<loc>'.$domen.'</loc>
<lastmod>'.date('Y').'-'.date('m').'-'.date('d').'</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>';
Цикл для формирования основго тела карты xml
После того, как у нас готова шапка "карты xml" нам нужно создать основное тело "карты xml".
В пунктахДалее в цикле {for} пропустим получившийся массив, обернем наши ссылки, как это мы сделали с доменом.
И поместим полученные данные в переменную "$data" :
Собираем основное тело "карты xml"
for ($i=0; $i < count($array_Url) ; $i++)
{
$data .= '
<url>
<loc>'.$array_Url[$i].'</loc>
<lastmod>'.date('Y').'-'.date('m').'-'.date('d').'</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>';
}
$data .= '</urlset>';
Запись данных в карту xml
Далее нам понадобится функция file_put_contents - запишем в файл xml подготовленные данные!if($_POST['submit'])
{
$write_for_main = file_put_contents($_SERVER['DOCUMENT_ROOT'].'/sitemap.xml' , $data);
}
Автоматическое обновление карты сайта xml.
По какому-то условию данная карта будет перезаписываться! У меня sitemap xml - автоматически обновляется после создания новой страницы:Код скрипта автоматического создания карты xml
Соберем весь код генератора карты сайта xml в один код...
$domen = $_SERVER["HTTP_X_FORWARDED_PROTO"].'://'.$_SERVER["HTTP_HOST"];
$data = '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>'.$domen.'</loc>
<lastmod>'.date('Y').'-'.date('m').'-'.date('d').'</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>';
for ($i=0; $i < count($array_Url) ; $i++)
{
$data .= '
<url>
<loc>'.$array_Url[$i].'</loc>
<lastmod>'.date('Y').'-'.date('m').'-'.date('d').'</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>';
}
$data .= '</urlset>';
if($_POST['submit'])
{
$write_for_main = file_put_contents($_SERVER['DOCUMENT_ROOT'].'/sitemap.xml' , $data);
}
Проверка и запись в файл карты xml- вариант №2
Для одного из проектов делал автоматически обновляемую карту сайта xml. Почему-то я про неё совсем забыл!
А в архиве она есть.Логика проверки , обновления, записи в карту xml
Данный скрипт устанавливаем на все страницы сайта, если у вас единая точка входа, то вы знаете, как это сделать.
Копируем весь код от знаков <? до знаков ?> и вставляем в ваш сайт, о двух параметрах, на которые нужно обратить внимание чуть ниже.
Вы, или кто-то зайдет на вашу новую страницу - скрипт проверит, есть ли данная страница в файле "XML" - если нет, то добавит эту страницу в конец файла.
Если страница уже внутри файла "XML", то скрипт ничего не будет делать.
Для отладки скрипта - лучше потренироваться где-то на отдельном файле xml. Чтобы не потерять главную карту xml.
1). Путь до файла xml
Строка № 19, меняем путь до вашего файла xml.
Если карта находится в корневой папке, т.е. у неё адрес как у меня "https://dwweb.ru/sitemap.xml", то строка №19 должна иметь вид:
Строки 10,11 - фильтрация по расширению :
$del = '.html';
$del_2 = '.php';
Адрес страницы из адресной строки браузера будет обрезаться по двум параметрам, потом обратно собираться, чтобы после расширения не собирать мусор. в виде, например get.
Если, например, в строке окажутся повторение расширения ".html":
После фильтрации вернет :
Если адреса страниц не имеют перечисленных расширений, то адреса могут попадать с различным мусором из адресной строки.... нужно прописывать дополнительные фильтры.
скрипт для сбора sitemap
sitemap xml php
автогенерация sitemap xml через php автоматическое создание sitemap
автогенерация sitemap на php
скрипт sitemap для html сайта
sitemap генератор php
скрипт для генерации sitemap xml


За десять лет изменилось то, что и при удалении страницы карта "xml" обновляется.
Алгоритм работы до банальности прост!
1). Получить все ссылки в массив.
2). Обернуть в цикле в теги "xml".
3). Записать в файл.

подробнее.
подробнее.