我想在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 %}
结果我只得到当前页面的网址。
答案 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 %}