我想按时间顺序列出所有Jekyll帖子,同一类别中的所有帖子都会有与我提供的相同的班级名称(例如cate1
,cate2
,cate3
...)。我在很多方面尝试过,仍然无法弄清楚这一点。你能帮帮我吗?
例如,以下代码可以按时间顺序列出所有帖子,但所有链接都具有相同的cate1
类。
{% for post in site.posts %}
{% if site.categories.CATEGORY1 %}
<a class="cate1" href="{{ post.url }}">{{ post.title }}</a>
{% elsif site.categories.CATEGORY2 %}
<a class="cate2" href="{{ post.url }}">{{ post.title }}</a>
{% elsif site.categories.CATEGORY3 %}
<a class="cate3" href="{{ post.url }}">{{ post.title }}</a>
{% endif %}
{% endfor %}
我也试过了:
{% for post in site.posts %}
{% for post in site.categories.CATEGORY1 %}
<a class="cate1" href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}
{% for post in site.categories.CATEGORY2 %}
<a class="cate2" href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}
{% for post in site.categories.CATEGORY3 %}
<a class="cate3" href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}
{% endfor %}
这将生成每个链接13次,这是我的总帖子数量。链接顺序基于循环中类别的顺序而不是按时间顺序排列。
我也试过了:
{% for post in site.posts %}
{% for CATEGORY1 in site.categories %}
<a class="cate1" href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}
{% for CATEGORY2 in site.categories %}
<a class="cate2" href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}
{% for CATEGORY3 in site.categories %}
<a class="cate3" href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}
{% endfor %}
这将生成每个链接25次。我想这是因为我有5个类别,5 * 5 = 25。每个链接都有不同的类名(例如a_CATEGORY1_post.cate1
,a_CATEGORY1_post.cate2
,a_CATEGORY1_post.cate3
)。但所有帖子都是按时间顺序排列的。
答案 0 :(得分:2)
你想要另一个循环里面帖子循环如下:
{% for post in site.posts %}
{% for cat in post.categories %}
<a class="{{ cat }}" href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}
{% endfor %}
有关循环中可访问内容的详细信息,请参见此处:
https://github.com/mojombo/jekyll/wiki/template-data
这种方法存在两个问题:
如果您的某个帖子 没有分配类别,则不会列出。所以你可能也想检查一下。
如果将其分配到多个类别,则会多次列出相同的帖子。因此,我会使用Liquid Filters重做代码,使其像:class="cat1 cat2 cat3"
一样:
{% for post in site.posts %}
<a class="{{ post.categories | join: ' ' }}" href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}
请参阅此处了解液体过滤器:
https://github.com/shopify/liquid/wiki/liquid-for-designers
编辑:您是说要为每个链接添加一个唯一的类而不是类别名称吗?不确定具体的含义。对于 unique ,您可以在case
部分之前执行<a href
声明:
{% case condition %}
{% when cat = 'cat1' %}
cat = 'unique_class_1'
{% when cat = 'cat2' %}
cat = 'unique_class_2'
{% else %}
... else ...
{% endcase %}
但在这种情况下,为什么类别类不够独特?
编辑 Peiwin评论的示例3 - 我不建议这样做,因为它编码很差。而是使用您的jQuery使其更灵活,并使用上面的#2:
{% for post in site.posts %}
{% for cat in post.categories %}
{% case condition %}
{% when cat = 'cat1' %}
{% assign cat_class = 'unique_class_1' %}
{% when cat = 'cat2' %}
{% assign cat_class = 'unique_class_2' %}
{% else %}
... else ...
{% endcase %}
{% endfor %}
<a class="{{ cat_class }}" href="{{ post.url }}">{{ post.title }}</a>
{% endfor %}