在没有插件的情况下在Jekyll中生成站点地图

Ani*_*ket 13 ruby jekyll github-pages

我刚把整个博客从WordPress转移到了Jekyll.还有一些需要在这里和那里修理的部分,但我现在正面临着这个问题.我无法在Jekyll中生成站点地图.我看到有几个插件可以为我做这项工作.

网站上的信息:

  • 网站通过Github页面托管
  • 整个站点都是手动编码的 - 不使用JB或Octopress

如果你能得到一些关于如何做到这一点的指示,那将是很棒的.

注意:这个问题与它的前辈不一样.我不是在寻找使用的选项_site.

hel*_*ope 12

您可以在站点根目录中创建一个名为"sitemap.xml"的新文件,并在该页面内使用液体标签迭代所有页面和帖子以提取必要的数据.看起来很容易完成这项工作,假设您只想生成一个页面,该页面以xml格式列出符合相应标准的网站上的每个页面.

  • Polygnome - 这是不正确的.有一个:页面访问器,允许您通过`{%for site.pages%}}访问所有页面(而不是帖子).相关来源如下:https://github.com/mojombo/jekyll/blob/master/lib/jekyll/site.rb (3认同)

Fer*_*eia 12

正如John Day本文中所解释的那样,您可以sitemap.xml使用以下内容在站点的根目录中创建一个文件:

---
layout: nil
title : "Sitemap"
sitemap_exclude: y
---
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    {% for post in site.posts %}
    <url>
        <loc>{{site.production_url}}{{ post.url | remove: 'index.html' }}</loc>
    </url>
    {% endfor %}

    {% for page in site.pages %}
    {% if page.sitemap_exclude != 'y' %}
    <url>
        <loc>{{site.production_url}}{{ page.url | remove: 'index.html' }}</loc>
    </url>
    {% endif %}
    {% endfor %}
</urlset>
Run Code Online (Sandbox Code Playgroud)

_config.yml,定义一个以production_url站点的完整基本URL 命名的变量(例如http://example.com).

如果您要从站点地图中排除任何链接,请将其包含sitemap_exclude: y在页面或邮寄的前端内容中.

有关更高级的示例,请参阅以下文章:使用Jekyll构建更好的Sitemap.xml.