Jekyll 博客生成 sitemap 站点地图

非插件的实现方式

Posted by Xion. on June 26, 2022

简单粗暴,直接在博客的根目录新建sitemap.xml文件,然后使用以下代码即可——

  ---
  layout: null
  ---
  <?xml version="1.0" encoding="UTF-8"?>
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  {% for post in site.posts %}
    {% unless post.published == false %}
      <url>
        <loc>{{ site.url }}{{ post.url }}</loc>
          {% if post.sitemap.lastmod %}
            <lastmod>{{ post.sitemap.lastmod | date: "%Y-%m-%d" }}</lastmod>
          {% elsif post.date %}
            <lastmod>{{ post.date | date_to_xmlschema }}</lastmod>
          {% else %}
            <lastmod>{{ site.time | date_to_xmlschema }}</lastmod>
          {% endif %}
          {% if post.sitemap.changefreq %}
            <changefreq>{{ post.sitemap.changefreq }}</changefreq>
          {% else %}
            <changefreq>monthly</changefreq>
          {% endif %}
          {% if post.sitemap.priority %}
            <priority>{{ post.sitemap.priority }}</priority>
          {% else %}
            <priority>0.5</priority>
          {% endif %}
      </url>
    {% endunless %}
  {% endfor %}

  {% for page in site.pages %}
    {% unless page.sitemap.exclude == "yes" or page.name == "feed.xml" %}
      <url>
        <loc>{{ site.url }}{{ page.url | remove: "index.html" }}</loc>
         {% if page.sitemap.lastmod %}
           <lastmod>{{ page.sitemap.lastmod | date: "%Y-%m-%d" }}</lastmod>
         {% elsif page.date %}
           <lastmod>{{ page.date | date_to_xmlschema }}</lastmod>
         {% else %}
           <lastmod>{{ site.time | date_to_xmlschema }}</lastmod>
         {% endif %}
         {% if page.sitemap.changefreq %}
           <changefreq>{{ page.sitemap.changefreq }}</changefreq>
         {% else %}
           <changefreq>monthly</changefreq>
         {% endif %}
         {% if page.sitemap.priority %}
           <priority>{{ page.sitemap.priority }}</priority>
         {% else %}
           <priority>0.3</priority>
         {% endif %}
      </url>
    {% endunless %}
  {% endfor %}
  </urlset>

然后就可以通过 https://xion.eu.org/sitemap.xml 访问站点地图啦。

image 最终效果预览