我最近从Jekyll 1.0前搬到了2.0。
在我的原始代码中,在每篇博文中,它将列出与正在查看的当前帖子属于同一类别的帖子的所有标题。以前这段代码有效:
{% for post in site.categories.[page.category] %}
<li {% if page.title == post.title %} class="active" {% endif %}>
<a href="{{ post.url}}">{{ post.title }}</a></li>
{% endfor %}
然而,在新版本中,这不起作用,我必须单独指定类别:
{% for post in site.categories.['NAME_OF_CATEGORY'] %}
为什么我不能像以前一样动态检查类别?是否有解决方法而不是使用if
语句?
答案 0 :(得分:0)
我想通了。在每篇文章中,我都有大写或Camel案例中的YAML前端类别变量。示例:category: ABC
或category: Zyx
。
执行page.category
将始终返回实际类别,因为它是在前面的内容中编写的,即ABC
或Zyx
。但是site.categories.[CAT]
仅在较低的情况下接受CAT
(在流动语言中为小写)。
因此,这将有效site.categories.['abc']
或site.categories.['xyz']
。
但这将失败site.categories.['ABC']
或site.categories.['Xyz']
。它与执行site.categories.[page.category]
相同。
<强>解决方案即可。以小写形式分配当前页面类别,如下所示:
{% assign cat = page.category | downcase %}
{% for post in site.categories.[cat] %}
<li {% if page.title == post.title %} class="active" {% endif %}>
<a href="{{ post.url}}">{{ post.title }}</a></li>
{% endfor %}