【发布时间】:2016-09-13 16:33:28
【问题描述】:
我知道 {{page.previous.url}} 并且 {{page.next.url}} 可用于帖子,但不幸的是我在我的博客上为这些项目页面使用页面结构。
在每个项目结束时,我希望有一个页脚
[ < - Previous Project (if available)] [ Home ] [ Next Project -> (if available) ]
文档结构
root
-- project1/
- /img
- /index.md
-- project2/
- /img
- /index.md
-- project3/
- /img
- /index.md
index.html
没有任何插件的 Jekyll 是否可行?
更新
因为您所在的当前页面没有可用的“索引”,我想我将不得不遍历site.pages,将 site.page.title 与 page.title 匹配,然后添加并为 next 和 previous 链接减去 forloop.index。
这是唯一的方法还是我过于复杂了?
我在下面的想法的示例代码:
{% for entry in site.pages %}
{% if entry.title == page.title %}
index is: {{ forloop.index }} <br />
sites.pages is {{ site.pages[forloop.index].url }} <br />
{% assign prev = forloop.index | minus:1 %}
{% assign next = forloop.index | plus:1 %}
{% assign prevUrl = site.pages[prev].url %}
{% assign nextvUrl = site.pages[next].url %}
{% assign currentURL = site.pages[forloop.index].url %}
previous page is: <em>{{ prevUrl }}</em> <br />
current page is: <em>{{ currentUrl }}</em> <br />
next page is: <em>{{ nextUrl }}</em>
{% endif %}
{% endfor %}
编辑 2
JoostS 的回答是我需要的起点。我继续并包含我的代码,因为我需要的与他们的有点不同(main.css 被包含以及其他几个不打算包含在循环中的页面)。非常感谢您的帮助!
使用仅项目页面构建数组
{% assign sorted_pages2 = site.pages %}
{% assign sorted_pages = "" | split: "" %}
{% for item in sorted_pages2 %}
{% if item.type == "project" %}
{% assign sorted_pages = sorted_pages | push: item %}
{% endif %}
{% endfor %}
{% for item in sorted_pages %}
{% if item.url == page.url %}
{% assign this_i = forloop.index0 %}
{% assign num_of_pages = forloop.length %}
{% assign last_i = forloop.length | minus: 1 %}
{% assign next_i = forloop.index0 | plus: 1 %}
{% assign prev_i = forloop.index0 | minus: 1 %}
{% endif %}
{% endfor %}
有条件地显示下一个和上一个
<div class="flex f-row project-footer">
<div>
{% if prev_i < 0 %}
<!-- Sorted_Last{{ sorted_pages[last_i].url }} -->
{% else %}
<a href="{{ sorted_pages[prev_i].url }}">
???? <span>Previous Project</span>
</a>
{% endif %}
</div>
<div>
<a href="/">
???? <span>Home</span>
</a>
</div>
<div>
{% if num_of_pages > next_i %}
<a href="{{ sorted_pages[next_i].url }}">
<span>Next Project</span> ????
</a>
{% endif %}
</div>
</div>
【问题讨论】:
-
是的,您可以请求所有页面。请参阅 Jekyll 文档。
-
您可以使用
site.pages来执行此操作。 -
您可以循环浏览它们,是的,但是“当前页面”没有 page.index 位置。我添加了一些代码来解释我的想法可能是解决方案。
标签: jekyll liquid github-pages