<rmcreative>

RSS

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');

Сам класс

Забираем

Комментарии RSS

  1. №109
    DeadLy
    DeadLy 02.04.2008, 16:02:06

    Убери запятую

    SitemapItem::monthly,

  2. №110
    Sam
    Sam 02.04.2008, 16:17:05

    Спасибо. Убрал.

  3. №111
    Артём Курапов
    Артём Курапов 02.04.2008, 21:08:00

    По принципу краулера работает чтоли, как mnogosearch? Я у себя вручную генерирую..

  4. №112
    Sam
    Sam 02.04.2008, 21:58:34

    Нет :) Это тоже класс для ручной генерации. Он всего-лишь создаёт разметку и следит за тем, чтобы всё было валидно. К паучку прикрутить тоже можно при желании.

  5. №113
    DeadLy
    DeadLy 03.04.2008, 9:54:54

    ты мне скажи, откуда вот это берётся $page->url????

    или это рабочий кусок из твоего двига?

    А паучка у тя нету чтобы $pages сделать?

  6. №114
    Sam
    Sam 03.04.2008, 12:46:44

    DeadLy

    $pages у меня формируется выборкой из базы (выбираются все страницы). Паучок у меня не используется.

  7. №3953
    Buzzman
    Buzzman 22.02.2011, 12:24:23

    Скрипт старый, но надеюсь еще рабочий? Поставлю к себе в админку, sitemap.xml - штука полезная.

  8. №3954
    Sam
    Sam 22.02.2011, 22:54:30

    Да, вполне рабочий.

  9. №6061
    Dr.Death
    Dr.Death 21.03.2012, 9:36:57

    А где бы найти подобное для Yii, готовые 3 расширения не нравятся

  10. №6063
    Sam
    Sam 21.03.2012, 13:07:08

    Я прям вот этот класс использую использую с Yii.

  11. №6170
    Алексей
    Алексей 25.04.2012, 0:44:07

    А как им пользоваться, а то язеленый

  12. №6171
    Dr.Death
    Dr.Death 25.04.2012, 8:17:05

    В примере расписан весь функционал :D

  13. №6452
    Руслан
    Руслан 17.07.2012, 14:17:12

    Работает +++

  14. №7648
    Alexander
    Alexander 04.03.2013, 19:30:07

    А как его правильно к запуску консольной команды для cron'a прикрутить?

  15. №7649
    Sam
    Sam 04.03.2013, 20:38:56

    Смотря как работаете с консолью.

  16. №7650
    Alexander
    Alexander 05.03.2013, 12:51:18

    Все как в официальном рецепте yiiframework.ru/doc/cookbook/ru/install.cron Ссылки формируются неправильно. Нужно как-то urlmanager подключить

  17. №7653
    Sam
    Sam 05.03.2013, 15:00:26

    Нужно для консольного приложения настроить компонент urlManager и сделать

    Yii::app()->request->hostInfo='http ://example.com/';
  18. №8152
    ElisDN
    ElisDN 12.07.2013, 20:10:36

    Да и самому компонент собрать не сложно. У меня карта такая.

  19. №8313
    rar
    rar 02.09.2013, 16:13:04

    Отчего же в рар..

  20. №8745
    Рудый Иван
    Рудый Иван 11.01.2014, 14:51:41

    Улучшить класс можно добавив поддержку расширения Google для изображений и видео

  21. №9009
    Влад
    Влад 03.05.2014, 21:47:04

    Спасибки

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.