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

UPD: переписал.

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

  1. №109
    DeadLy
    DeadLy 02 апр. 2008 г., 16:02:06

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

    SitemapItem::monthly,

  2. №110
    Sam
    Sam 02 апр. 2008 г., 16:17:05

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

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

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

  4. №112
    Sam
    Sam 02 апр. 2008 г., 21:58:34

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

  5. №113
    DeadLy
    DeadLy 03 апр. 2008 г., 9:54:54

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

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

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

  6. №114
    Sam
    Sam 03 апр. 2008 г., 12:46:44

    DeadLy

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

  7. №3953
    Buzzman
    Buzzman 22 февр. 2011 г., 12:24:23

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

  8. №3954
    Sam
    Sam 22 февр. 2011 г., 22:54:30

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

  9. №6061
    Dr.Death
    Dr.Death 21 марта 2012 г., 9:36:57

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

  10. №6063
    Sam
    Sam 21 марта 2012 г., 13:07:08

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

  11. №6170
    Алексей
    Алексей 25 апр. 2012 г., 0:44:07

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

  12. №6171
    Dr.Death
    Dr.Death 25 апр. 2012 г., 8:17:05

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

  13. №6452
    Руслан
    Руслан 17 июля 2012 г., 14:17:12

    Работает +++

  14. №7648
    Alexander
    Alexander 04 марта 2013 г., 19:30:07

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

  15. №7649
    Sam
    Sam 04 марта 2013 г., 20:38:56

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

  16. №7650
    Alexander
    Alexander 05 марта 2013 г., 12:51:18

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

  17. №7653
    Sam
    Sam 05 марта 2013 г., 15:00:26

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

    Yii::app()->request->hostInfo='http ://example.com/';
  18. №8152
    ElisDN
    ElisDN 12 июля 2013 г., 20:10:36

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

  19. №8313
    rar
    rar 02 сент. 2013 г., 16:13:04

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

  20. №8745
    Рудый Иван
    Рудый Иван 11 янв. 2014 г., 14:51:41

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

  21. №9009
    Влад
    Влад 03 мая 2014 г., 21:47:04

    Спасибки

  22. №9623
    вуы
    вуы 13 февр. 2015 г., 12:41:10

    а можно более подробный туториал? для совсем зеленых?

  23. №9772
    Remenkoff
    Remenkoff 28 апр. 2015 г., 14:18:43

    Спасибо за код и за то, что экономишь наше время! Yii2, кинул в компоненты, все работает ;-D

  24. №9852
    Sam
    Sam 30 июня 2015 г., 0:11:11

    Remenkoff, закинул в более человечном виде на GitHub: github.com/samdark/sitemap

  25. №9853
    Remenkoff
    Remenkoff 30 июня 2015 г., 16:44:47

    Sam, отлично, отлично)) Спасибо! ;-]

  26. №9893
    Александр
    Александр 11 июля 2015 г., 13:06:51

    Александр, в виде расширения для Yii2 не желаете сделать?

  27. №9898
    Sam
    Sam 12 июля 2015 г., 0:11:18

    Нет, зачем? Оно и виде класса замечательно работает.

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

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

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