Создание динамического SiteMap для сайта Kooboo CMS (sitemap.xml)


08.11.2012 || Раздел: || Контент KooBoo


Версия kooboo на момент написания статьи: 3.2.2

Протестировано на IIS 7.5 (Windows Server 2008 R2)

Что такое sitemap (или карта сайта) уже давно никому не нужно объяснять. Все разработчики сайтов понимают, что это один из необходимых элементов на сайте для поисковой оптимизации. Задача этой статьи показать пример реализации подобной карты при помощи административной панели системы Kooboo CMS.

В качестве примера взят сайт, входящий в состав дистрибутива KooBoo - SampleSite, который содержит несколько базовых страниц, включая возможность просмотра статей.

Нам необходимо создать файл sitemap.xml, который будет содержать ссылки на статические страницы, а также ссылки на статьи, при этом учитывая, что раздел статей постоянно пополняется.

Файл этот должен отвечать по корневому пути сайта, например: http://mysite.ru/sitemap.xml

Выполним следующие действия.

1) Ссылки на статические страницы (Главная, О сайте) мы будем добавлять в карту сайта вручную, чтобы системе не нужно было их генерировать при каждом обращении. Поэтому предварительно составим список имен таких страниц на нашем сайте. Получилось примерно следующее:

  • Главная страница (без имени, т.к. она отображается при обращении к корню сайта http://mysite.ru/)
  • "About" (страница о сайте - http://mysite.ru/about)

2) Создадим макет (layout). Назовем его к примеру "layout_for_sitemap".

Внутрь него в расположим следующий код:

@{
  string baseUri = String.Format("{0}://{1}", Request.Url.Scheme, 
  Request.Url.Authority);
  Response.ContentType = "application/xml";
}
<!--?xml version="1.0" encoding="UTF-8"?-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" 
xsi:schemalocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<url>
<loc>@baseUri</loc>
<changefreq>weekly</changefreq>
<priority>1.00</priority>
</url>
<url>
<loc>@baseUri@Url.FrontUrl().PageUrl("About")</loc>
<changefreq>monthly</changefreq>
<priority>0.80</priority>
</url>
@Html.FrontHtml().RenderView("Article.Sitemap",ViewData)
</urlset>

sitemap


Обратите внимание на фрагмент в строках 11-15 - там указана ссылка на главную страницу сайта (корень сайта). Другой фрагмент (строки 16-20) создает ссылку на страницу About.

Для каждой страницы из Вашего списка статических страниц нужно вставить подобный блок кода:

<url>
<loc>@baseUri@Url.FrontUrl().PageUrl("НАЗВАНИЕ_СТРАНИЦЫ")</loc>
<changefreq>monthly</changefreq>
<priority>0.80</priority>
</url>

Строка "@Html.FrontHtml().RenderView("Article.Sitemap",ViewData)" указывает на генерируемый блок ссылок на статьи, который мы создадим на следующем шаге.

3) Создадим представление (view) с именем, которое мы указали выше - "Article.Sitemap".

В нем укажем следующий код:

@{
string baseUri = String.Format("{0}://{1}", Request.Url.Scheme, 
Request.Url.Authority);
if (ViewBag.Articles != null) {
  foreach (var item in ViewBag.Articles) {
    <url>
      <loc>@baseUri@Url.FrontUrl().PageUrl("Articles/Detail", 
        new { UserKey = item.UserKey })</loc>
      <changefreq>weekly</changefreq>
      <priority>0.80</priority>
    </url>
  }
}
}

Строка "<loc>@baseUri@Url.FrontUrl().PageUrl("Articles/Detail", new { UserKey = item.UserKey })</loc>" генерирует URL-адреса на страницу со статьями.

В созданном представлении добавляем правило (DataRule) "Articles", в котором указываем выборку всех статей без фильтра. Данный список может быть отсортирован. Если статей слишком много, можно лимитировать выборку для предотвращения слишком большого размера файла sitemap.xml.

sitemap


Подобным образом можно создать представления для любого списка на сайте, например для категорий, новостей, блога и т.п.

4) Создаем страницу с именем "sitemap.xml", основанную на ранее созданном макете "layout_for_sitemap".

Желательно снять параметр "Отображать в меню".

5) Теперь можно посмотреть результат по адресу вашего сайта - http://mysite.ru/sitemap.xml

Вы должны увидеть XML-структуру:

sitemap 

Можно проверить правильность структуры карты сайта по адресу  http://sitemapxml.net/sitemap-validator.php

Более подробно со структурой файла sitemap можно ознакомиться здесь - http://www.sitemaps.org/protocol.html and http://blog.vkistudios.c...8/3/6/XML-Sitemap-Guide to know more about sitemaps.

По такому же принципу можно сгенерировать на своем сайте RSS feed.

©Элла (Автор: Ella Sea)

< Предыдущая статья

Что такое UserKey в Kooboo и почему в URL появились символы на русском языке

Следующая статья >

Принципы документирования сайта, созданного на Kooboo CMS