Jekyll 2.0列出了类别中断的所有帖子

时间:2014-05-24 00:32:23

标签: jekyll liquid

我最近从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语句?

1 个答案:

答案 0 :(得分:0)

我想通了。在每篇文章中,我都有大写或Camel案例中的YAML前端类别变量。示例:category: ABCcategory: Zyx

执行page.category将始终返回实际类别,因为它是在前面的内容中编写的,即ABCZyx。但是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 %}