Скрипт автоматически создаваемая карта 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/test.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] => 2018::02::01::php.png::Page about our encryption::The first page of the training! Page about our encryption!::Марат::test.html::#ALL::PHP/INFO/
)
Применим выше идущий скрипт к данному массиву и получим:
Array
(
[0] => https://dwweb.ru/page/test.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":
После фильтрации вернет :
Если адреса страниц не имеют перечисленных расширений, то адреса могут попадать с различным мусором из адресной строки.... нужно прописывать дополнительные фильтры.


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