Jekyll页面导航

时间:2014-04-12 15:34:13

标签: jekyll

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

说我有以下目录结构:

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

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

项目/ PROJECT1 / index.md:

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

项目/项目2 / index.md:

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

我尝试了_layouts / default.html中的下载,只输出下一页的网址

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

结果我只得到当前页面的网址。

1 个答案:

答案 0 :(得分:1)

我的第一种方法的问题似乎是加号: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 %}