在博客中,经常会遇到需要将一系列相关的文章组织在一起的情况。这样做不仅有助于读者更好地理解文章内容,也方便作者管理自己的文章。然而,直到最近,通常只有一种方式来视觉上表示这些文章属于一个系列,那就是在文章标题中包含系列名称,例如:
“酷系列,第1部分:介绍”
“酷系列,第2部分:实现”
等等。有时候,会记得这样命名文章……有时候则不会。
最近,注意到了一些博客中展示文章系列的不同方式:
Steven van Deursen()在文章顶部,有一个包含系列所有文章链接的框。
为所有相关文章添加了一个名为series的新变量。示例:
series: "Hugo/Lightbox 图片库"
这个字符串用于确定哪些文章属于同一个系列,因此对于同一系列的所有文章来说,它必须是100%相同的。
使用一个单独的布局文件(继承自默认布局)来处理文章。“系列框”的额外代码就放在这个文件中(这样框就只会出现在文章中),以下是它的完整代码:
<div>
<h4>
这篇文章是系列的一部分:{{ page.series }}
</h4>
<ol>
{% assign posts = site.posts | where: "series", page.series | sort: "date" %}
{% for post in posts %}
<li>
{% if post.url == page.url %}
{{ post.title }}
<i>
(这篇文章)
</i>
{% else %}
<a href="{{ post.url }}">
{{ post.title }}
</a>
{% endif %}
</li>
{% endfor %}
</ol>
</div>
{% endif %}
这里没有什么复杂的:
if page.series
⇒ 只有当当前页面实际上有series变量时,才显示整个块
assign posts = site.posts | where: "series", page.series | sort: "date"
⇒ 加载所有与当前文章系列相同的文章(包括当前文章)
循环它们
如果是当前文章,只显示标题作为文本,并在后面加上“(这篇文章)”