Традиционно нашел этот модуль на Git https://github.com/ThePixelDeveloper/kohana-sitemap.
Я качал модуль до его модификации под kohana 3.2, правки делал сам,
поэтому у кого не пойдет модуль с Git – можно воспользоваться модифицированным мною:
sitemap.zip

Небольшое поянение, как использовать (прежде всего модуль необходимо
распаковать в папку modules, подключить в bootstrap.php), далее все
что написанно ниже ложим в свой контроллер-экшн:

// Sitemap instance.
$sitemap = new Sitemap;

// New basic sitemap.
$url = new Sitemap_URL;

//Добавляем необходимые урлы к нашей карте сайта
$url->set_loc('http://mysite.com/about.html')
                ->set_last_mod(time())
                ->set_change_frequency('yearly')
                ->set_priority(0.1);
$sitemap->add($url);
$url->set_loc('http://mysite.com/contacts.html')
                ->set_last_mod(time())
                ->set_change_frequency('yearly')
                ->set_priority(0.1);
$sitemap->add($url);

// Генерируем xml
$response = $sitemap->render();

//Записываем в файл
file_put_contents('sitemap.xml', $response);

Alex в каментах писал о проблемах вывода русского текста в sitemap.xml,
вот его решение проблемы, при генерации sitemap необходимо воспользоваться
функцией urldecode():

// Генерируем xml
$response = urldecode($sitemap->render());

13 thoughts on “Kohana 3.2 модуль для генерации sitemap.xml

  1. У меня данный код, выдавал ошибку. Причина была в том, что стоял $ перед урлами. Опечатка наверно))

    Т.е не так:
    $url->set_loc($’http://mysite.com/about.html’)
    ->set_last_mod(time())
    ->set_change_frequency(‘yearly’)
    ->set_priority(0.1);

    А так:
    $url->set_loc(‘http://mysite.com/about.html’)
    ->set_last_mod(time())
    ->set_change_frequency(‘yearly’)
    ->set_priority(0.1);

    Reply
  2. Что бы с кодировкой не было проблем, нужно добавить после
    // Генерируем xml
    $response = $sitemap->render();

    еще строчку
    $response = urldecode($response);

    И тогда с кодировкой будет все нормально :smile:

    Reply
    • Alex, спасибо за дополнение – обновил пост с учетом русского текста в sitemap.xml

      Reply
    • Автоматически пока не делал, но думаю, что в таком варианте надо смотреть в сторону маршрутов настроенных в bootstrap.php

      Reply
  3. Ничего не понял из:
    что написанно ниже ложим в свой контроллер-экшн

    Пожалуйста. объясните как блондинке када это прописать:(

    Спасибо.

    Reply
    • Имеется ввиду то, что вы как минимум знакомы со структурой Controller-Action в Kohana, например:

      Class Controller_Mycontroller extends Controller
      {
            public function action_myaction()
            {
                   //some my code
            }
      }
      

      в данном примере Mycontroller – контроллер, myaction – экшн.

      Reply
  4. Здравствуйте, залил фаил в модули точнее папку всю, потом в bootstrap вписал модуль, в application/classes создал фаил Sitemap.php

    При заходе на сайт мап site.ru/sitemap.php он не генерируеться в корне сайта, что делать ???

    Ошибка такая:

    Kohana_HTTP_Exception [ 404 ]: The requested URL sitemap.xml was not found on this server.
    SYSPATH/classes/Kohana/Request/Client/Internal.php [ 79 ]
    74 if ( ! class_exists($prefix.$controller))
    75 {
    76 throw HTTP_Exception::factory(404,
    77 ‘The requested URL :uri was not found on this server.’,
    78 array(‘:uri’ => $request->uri())
    79 )->request($request);
    80 }
    81
    82 // Load the controller using reflection
    83 $class = new ReflectionClass($prefix.$controller);
    84

    Reply
    • Какую версию Kohana вы используете? И выложите ваш код bootstrap и контроллера Sitemap.php на pastebin, постараюсь помочь.

      Reply
  5. Версия kohana последняя.

    Как с вами связаться на прямую, я так понимаю вы очень опытный человек в этом деле.

    bootstrap код такой
    ‘sitemap’ => MODPATH.’sitemap’, // sitemap

    Reply
  6. контрллер сюда выложил !
    __http://phpclub.ru/talk/threads/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0-%D1%81-sitemap-%D0%B2%D1%8B%D0%B4%D0%B0%D0%B5%D1%82-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D1%83-%D0%BD%D0%B5-%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B8%D1%80%D1%83%D0%B5%D1%82.79405/

    не смог сюда в комметарии добавить ! ошибка вылезала что то о блоке.

    Reply

Leave a reply

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

required