6 июля 2008 г.

Sitemap для Shop-Script

С недавних пор наш национальный поисковик присоединился к славной компании поисковиков, умеющих обрабатывать файлы sitemap. Наверное, это связано с какими-то общеланетарными амбициями. Как бы то ни было, теперь есть возможность скормить Яндексу файл(ы) sitemap.
Я решил, что обрабатывать сайт какой-нибудь сторонней приблудой много дольше, чем просто сгенерировать файлы sitemap с помощью скрипта. Тем более, что у shop-script в общем-то довольно простая структура.
Новая версия Shop-Script с ЧПУ пока недоступна, получу — модифицирую скрипт. :-)
Скрипт простенький, делает sitemap для
  1. aux-страниц — это у shop-script так называются обычные статические html страницы;
  2. страниц с категориями. Без разбивки на страницы 1, 2 и т.д. на мой взгляд эти страницы не слишком важны
  3. страниц с товарами и обсуждениями товаров
Можно запускать из браузера, можно по cron’у.
Корневую страницу сайта, страницу с новостями, страницу с формой обратной связи и т.п. надо записать в отдельный файл sitemap (назвать его можно, например, sitemap01.xml).
Кроме собственно скрипта понадобится исходный индексный файл (sitemap_index_src.xml или кто как назовет). В него надо добавить ссылку на созданный файл sitemap01.xml. В этот исходный индексный файл будут добавлены ссылки на автоматически сгенерированные файлы и, после этого, он будет записан под другим именем.
В результате работы скрипта получится несколько файлов с sitemap и индексный файл.
  1. sitemap_index.xml — индексный файл, в нем будут перечислены все файлы с sitemap.
  2. sitemap_aux_NN.xml.gz — файл(ы) с URL AUX-страниц. (Вместо NN будет число)
  3. sitemap_categories_NN.xml.gz — файл(ы) с URL всех страниц категорий, вместо NN число
  4. sitemap_products_NN.xml.gz — файл(ы) с URL всех страниц с товарами и обсуждениями товаров, вместо NN число. Генерация URL с обсуждениями отключается.

Настройка

В начале скрипта константы, им нужно присвоить правильные значения.
  • BASE_URL — URL, где находится установленный Shop-Script. http://www.server.com/. На слэш должен заканчиваться
  • SITEMAP_DIR2SAVE — директория на сервере, куда будут записываться файлы sitemap. Стоит обратить внимание на то, что прятать их в отдельную поддриекторию не стоит — их расположение важно. Опция сделана для того, чтобы можно было записать их в поддиректорию, а потом изменить их расположение.
  • SITEMAP_URL2SAVE — не помню, почему это я сделал отдельно. Должно бы совпадать с BASE_URL. Это путь к файлам sitemap, который будет сохраняться в индексном файле.
  • ITEMS_PER_FILE — количество записей в файле sitemap. Не должно превышать 50000. Если файл получается размером более 10M, это значение надо уменьшать до просветления :-)
  • SITEMAP_INDEX_SOURCE — исходный индексный файл. Он послужит основой для индексного файла
  • SITEMAP_INDEX_FILE — имя с путем индексного файла
  • AUX_PAGES_PRIORITY, PRODUCT_PAGE_PRIORITY, DISCUSS_PAGE_PRIORITY, CATEGORIES_PAGES_PRIORITY — относительная важность страниц (от 0 до 1). Подробнее в документации на Sitemap.
  • AUX_PAGES_CHANGEFREQ, PRODUCT_PAGE_CHANGEFREQ, DISCUSS_PAGE_CHANGEFREQ, CATEGORIES_PAGES_CHANGEFREQ — частота обновления страниц. Подровлее в документации на Sitemap.
  • MAKE_DISCUSS_PAGES — нужно-ли генерировать ссылки на страницы с обсуждением товара (true, false)

Скачать скрипт

Скачать скрипт можно отсюда.
Пожелания, ругань, комментарии и т.п — любым удобным доступным способом. В ICQ бываю редко. :-)
Лично я немного поколдовал с include_path и повесил этот скрипт выполняться по cron’у.