САЙТОСТРОЙ.РУ
Построй свой сайт!

Генератор файлов Sitemap

опубликовано 04.09.2014

Поисковые системы стали упрощать себе жизнь, предлагая вебмастерам самостоятельно составлять актуальный список страниц сайта, которые нужно индексировать. Такой файл представляет из себя простенький XML-файл. На сайте sitemaps.org есть хорошее описание протокола, в том числе на русском языке. Это отличные новости: поисковики не дают лишней нагрузки на Ваш сервер, поскольку теперь им не нужно постоянно обходить одни и те же страницы, а им, в свою очередь, тоже не требуется тратить на это ресурсы. Но есть одно "но": файлы sitemaps практически невозможно создать внешними сервисами, потому что нужно знать структуру Вашего сайта. Я предлагаю воспользоваться моим скриптом-генератором, который достаточно единожды настроить, чтобы он автоматически создавал по шаблонам всё дерево XML.

Загрузить скрипт можно здесь: sitemap_build.txt

А я поясню, каким образом задаются шаблоны вывода.

Скрипт использует данные, хранящиеся в базе MySQL. В самое начало вынесены параметры подключения к серверу базы данных:

@mysql_connect("localhost","mydomain", 'password');
@mysql_select_db("mydomain");
mysql_query("SET NAMES 'utf8'");

Далее идёт имя домена, относительно которого будут формироваться URL:

$host_name="mydomain.ru";

И, наконец, главное - формируемые URL. Имеются 3 массива под разные типы страниц.

Массив $pages

Здесь перечисляются страницы, которые расположены по постоянным адресам. В частности, главная страница (для неё задаётся пустая строка). Сюда могут попасть странички "О сайте", "Контакты" и т.п. Сюда же относится индексная страница раздела, у которой нет дополнительных параметров (например, номера страницы).

$pages=array('', 'articles/');

Массив $indexes

Массив индексных разделов. Здесь будут формироваться URL страниц разделов с номерами страниц, исходя из числа анонсов на страницу и прочих параметров. Характерный пример:

$indexes=array(
      array(
      'table'=>'articles',
      'index_field'=>'id',
      'per_page'=>10,
      'conditions'=>array('category_id'=>'1', 'moderated'=>'yes'),
      'date_field'=>'date',
      'date_format'=>STRING_TIME,
      'template'=>'articles/page/{page}/'
           )
     );

Разберём поля:
table таблица, из который берутся записи для подсчёта. Например, таблица со статьями обязательное
index_field поле, по которому ведётся подсчёт. Обычно - идентификатор статьи обязательное
per_page число записей на страницу. В случае с индексным разделом - сколько анонсов статей отображается на одной странице обязательное
conditions условия выборки из базы данных. Можно учесть, например, является ли статья скрытой необязательное
date_field поля даты статьи для вывода в XML. Если параметр задан, то будет выдана дата, например, изменения последней статьи в разделе. Таким образом, будет правильно указана дата обновления всего раздела необязательное
date_format формат даты, хранящейся в поле date_field. Одна из констант: UNIX_TIME (число секунд с начала эпохи) или STRING_TIME (в текстовом виде в произвольном формате, но в одном из стандартов, поддерживаемых PHP) необязательное
template шаблон отображения URL. Имеется подстановочное значение {page}, определяющее номер страницы обязательное

Массив $pages

Страницы разделов. Здесь перечисляются статьи сайта. Поля такие же, как у массива $indexes за исключением template, где подстановка идёт в {id} - идентификатор статьи. Тут я хочу заметить, что можно формировать URL не только с числовым идентификатором, но и в том числе с идентификацией через транслит, задав нужное поле в index_field. Оно так же будет подставляться в {id}.

Результат будет выглядеть примерно вот так:

результат работы sitemap builder

теги: mysql, sitemaps, xml

Комментарии и вопросы

Статью никто не комментировал.


Задать вопрос или оставить комментарий

Ваше имя:
Комментарий:
Код с картинки справа:=


Просим с уважением относиться к труду автора сайта и при копировании документов указывать ссылки на http://saytostroy.ru.