【问题标题】:Jekyll page navigationJekyll 页面导航
【发布时间】:2014-04-12 15:34:13
【问题描述】:

我想在 Jekyll 中创建一个页面导航,即基于 id 指向下一个和上一个项目的链接。

假设我有以下目录结构:

/example.com
    …
    /_posts
    /projects
        /project1
        /project2
            /index.md
        /project3

我在每个项目 index.md 的前面添加一个索引:

projects/project1/index.md:

---
layout: project
title: Project1
index: 0
---

projects/project2/index.md:

---
layout: project
title: Project2
index: 1
---

我尝试了 _layouts/default.html 中的以下内容来简单地输出下一页的 url

{% for node in site.pages %}
    {% if node.index == page.index | plus:1 %}
        {{ node.url }}
    {% endif %}
{% endfor %}

结果我只得到了当前页面的 url。

【问题讨论】:

  • 所以这可能对未来的读者更有用,你能澄清你的问题吗?例如,您能否描述一下您原来的 _layouts/default.html 中哪些地方没有按预期工作?
  • 我在问题中添加了一行,表明意外结果是什么。我还为我的答案添加了一些解释,以使其对未来的读者更有用。

标签: jekyll


【解决方案1】:

我的第一种方法的问题似乎是 plus: 1 过滤器没有按预期工作。它没有增加 page.index,而是添加了字符串“1”。为了添加数字 1 有必要分配 page.index |加:1 到一个新变量:

{% for node in site.pages %}
    {% assign next = page.index | plus: 1 %}
    {% assign prev = page.index | minus: 1 %}
    {% if prev == node.index %}
        {% assign prevPage = node %}
    {% endif %}
    {% if next == node.index %}
        {% assign nextPage = node %}
    {% endif %}
{% endfor %}

{% if prevPage %}
    <a href="{{ prevPage.url }}">prev: {{prevPage.title}}</a>
{% endif %}

{% if nextPage %}
    <a href="{{ nextPage.url }}">next: {{nextPage.title}}</a>
{% endif %}

为了稍微清理一下,我还从 _layouts/default.html 中删除了代码,在 _includes 文件夹中创建了一个名为 project-navigation.html 的文件,并且只将它包含在用于项目的布局中:_layouts/project。 html:

{% include project-navigation.html %}

另请注意,此代码会生成大量空格。为了避免这种情况,需要去掉标记中的所有空格和换行符,导致这段丑陋的代码:

{% for node in site.pages %}{% assign next = page.index | plus: 1 %}{% assign prev = page.index | minus: 1 %}{% if prev == node.index %}{% assign prevPage = node %}{% endif %}{% if next == node.index %}{% assign nextPage = node %}{% endif %} {% endfor %}{% if prevPage %}<a href="{{ prevPage.url }}">prev: {{prevPage.title}}</a>{% endif %}{% if nextPage %}<a href="{{ nextPage.url }}">next:{{nextPage.title}}</a>{% endif %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-22
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多