Поисковые системы стали упрощать себе жизнь, предлагая вебмастерам самостоятельно составлять актуальный список страниц сайта, которые нужно индексировать. Такой файл представляет из себя простенький 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}.
Результат будет выглядеть примерно вот так:
Комментарии и вопросы
Статью никто не комментировал.
Задать вопрос или оставить комментарий