Sitemap. Класс для PHP5
2 апреля 2008
sitemaps.org:
С помощью файла Sitemap веб-мастеры могут сообщать поисковым системам о веб-страницах, которые доступны для сканирования. Файл Sitemap представляет собой XML-файл, в котором перечислены URL-адреса веб-сайта в сочетании с метаданными, связанными с каждым URL-адресом (дата его последнего изменения; частота изменений; его приоритетность на уровне сайта), чтобы поисковые системы могли более грамотно сканировать этот сайт.
В начале этой недели я решил, что пора сделать себе генерируемый sitemap. Хотелось как можно более универсального решения, что в общем-то удалось.
Что может класс
Генерить Sitemap :)
Писать сгенерённое в файл.
Расставлять tab-ы.
Экранировать URL в соответствии со спецификацией.
Приводить время в формате timestamp к нужному формату.
Работать как библиотека CodeIgniter.
Пример
// Создаём класс. $sitemap = new Sitemap(); // Добавим страничку $sitemap->addItem(new SitemapItem( 'http://rmcreative.ru/', // URL. time(), // Время в формате timestamp. SitemapItem::daily, //Частота обновления (константы класса SitemapItem). 0.7 // Приоритет страницы. )); // Добавим все остальные страницы сайта. foreach($pages as $page){ $sitemap->addItem(new SitemapItem( 'http://rmcreative.ru/'.$page->url, $page->updated_on, SitemapItem::monthly )); } // Сгенерим sitemap в файл sitemap.xml. // Если файл не указать - generate вернёт строку. $sitemap->generate('sitemap.xml');
UPD: переписал.
Комментарии RSS по email OK
Убери запятую
SitemapItem::monthly,
Спасибо. Убрал.
По принципу краулера работает чтоли, как mnogosearch? Я у себя вручную генерирую..
Нет :) Это тоже класс для ручной генерации. Он всего-лишь создаёт разметку и следит за тем, чтобы всё было валидно. К паучку прикрутить тоже можно при желании.
ты мне скажи, откуда вот это берётся $page->url????
или это рабочий кусок из твоего двига?
А паучка у тя нету чтобы $pages сделать?
DeadLy
$pages у меня формируется выборкой из базы (выбираются все страницы). Паучок у меня не используется.
Скрипт старый, но надеюсь еще рабочий? Поставлю к себе в админку, sitemap.xml - штука полезная.
Да, вполне рабочий.
А где бы найти подобное для Yii, готовые 3 расширения не нравятся
Я прям вот этот класс использую использую с Yii.
А как им пользоваться, а то язеленый
В примере расписан весь функционал :D
Работает +++
А как его правильно к запуску консольной команды для cron'a прикрутить?
Смотря как работаете с консолью.
Все как в официальном рецепте yiiframework.ru/doc/cookbook/ru/install.cron Ссылки формируются неправильно. Нужно как-то urlmanager подключить
Нужно для консольного приложения настроить компонент
urlManager
и сделатьДа и самому компонент собрать не сложно. У меня карта такая.
Отчего же в рар..
Улучшить класс можно добавив поддержку расширения Google для изображений и видео
Спасибки
а можно более подробный туториал? для совсем зеленых?
Спасибо за код и за то, что экономишь наше время! Yii2, кинул в компоненты, все работает ;-D
Remenkoff, закинул в более человечном виде на GitHub: github.com/samdark/sitemap
Sam, отлично, отлично)) Спасибо! ;-]
Александр, в виде расширения для Yii2 не желаете сделать?
Нет, зачем? Оно и виде класса замечательно работает.