Создание sitemap в Jekyll

Создание карты сайта, используя генератор статических сайтов Jekyll без помощи сторонних плагинов.

Для создания карты сайта существует несколько способов:

  • — используя плагины для Jekyll на языке Ruby;
  • — воспользоваться каким-либо онлайн сервисом;
  • — или автоматизировать процесс создания xml-карты самому. Этим и займёмся.

Создадим в главной папке (корне) сайта файл sitemap.xml следующего содержания:

---
layout: null
sitemap:
  exclude: "yes"
---

<?xml version="1.0" encoding="UTF-8"?>
<urlset>
{% for post in site.posts %}{% unless post.published == false or post.sitemap.exclude == "yes" %}
    <url>
        <loc>{{ site.url }}{{ post.url }}</loc>
        {% if post.last-modified-date %}<lastmod>{{ post.last-modified-date | date_to_xmlschema }}</lastmod>{% endif %}
    </url>
{% endunless %}{% endfor %}

{% for page in site.pages %}{% unless page.sitemap.exclude == "yes" %}
    <url>
        <loc>{{ site.url }}{{ page.url }}</loc>
        <lastmod>{{ page.path | file_date | date_to_xmlschema }}</lastmod>
    </url>
{% endunless %}{% endfor %}

{% for category in site.categories %}
    {% capture category_link %} blog/{{ category[0] }}/index.html {% endcapture %}
    <url>
        <loc>{{ site.url }}/blog/{{ category[0] }}/</loc>
    </url>
{% endfor %}

</urlset>

Строчка exclude == «yes» — означает исключение страницы из XML-карты. Для этого нужно добавить во все страницы, которые хотим исключить, следующий параметр.

---
sitemap:
  exclude: "yes"
---

В данном примере обязательными тегами для sitemap.xml являются:

  • <urlset> — является обёрткой для XML-тегов и содержит действующий стандарт протокола;
  • <url> — тег родителя адреса страницы;
  • <loc> — URL страницы.

Так же доступны необязательные теги для использования.

  • <lastmod> — дата последнего редактирования страницы.
  • <changefreq> — значение для поисковиков, насколько часто будет редактироваться страница.
  • Данное значение является лишь подсказкой для роботов, и не даёт никаких гарантий.
  • Диапазон значений: от «всегда» до «никогда» (always, hourly, …, yearly, never)
  • <priority> — приоритет (ценность) страниц относительно друг друга (в диапазоне 0,0 — 1,0).

Более подробно о настройках и XML-формате можно ознакомиться на официальном сайте sitemaps.org.