所以基本上我有this problem。我想打印类别名称作为标题,但是到目前为止,我已经尝试过任何有关几个单词的类别,所以我已经解决了它在每个帖子中设置标签和类别的问题
所以在做出这个决定之后,我测试了2个标签和2个类别,tag1
cat1
和tag2
cat2
,其中每个标签都有一个对应的类别。然后我将这些标签/猫对添加到我的一些帖子中。我的算法如下所示:
for loop in tags
print category in a heading tag
for loop in posts of that category
print some post info
,翻译成代码,看起来像这样:
{% assign i = 0 %}
{% for TAG in site.tags %}
<p>Checking the i: {{ i }}</p>
<p>Checking the tag: {{ TAG }}</p>
<h1>Checking the cat: {{ site.categories[i] }}</h1>
{% for post in site.tags.TAG %}
<p>{{ post.title }}</p>
{% endfor %}
{% assign i = i + 1 %}
{% endfor %}
输出是:
Checking the i: 0
Checking the tag: tag1
THE WHOLE POST
Checking the cat: (nothing is printed here)
Checking the i: 0
Checking the tag: 0
Checking the cat: (nothing is printed here)
然后停止。
所以我的问题是:
i
在循环结束时递增?答案 0 :(得分:1)
网站类别是哈希:
Hash
{"github issue"=>[#Jekyll:Post, #Jekyll:Post],
"toto"=>[#Jekyll:Post, #Jekyll:Post],
"jekyll"=>[#Jekyll:Post]}
site.categories['github issue']
返回一个post数组
site.categories[0]
返回一个空数组
与{% for TAG in site.tags %}
中的上述原因相同,TAG是一个散列,您看到的是此散列的字符串表示形式。如果您在此标记中有两个帖子,则在打印TAG时会看到两个帖子。
要从此处获取代码名称:{{TAG.first}}
它打印两个标签
Checking the i: 0
Checking the tag: tag1
THE WHOLE POST
Checking the cat: (nothing is printed here)
Checking the i: 0
Checking the tag: 0
Checking the cat: (nothing is printed here)
这种行为显然无法预测,主要是因为您在_config.yml
中声明了标签和类别。您不应该这样做,因为site.tags
和site.categories
是由杰基尔在发电时设置的,具体取决于您帖子中的标签和类别。从您的配置中删除此选项,仅在default front matter config或帖子中为您设置标记。
{% assign i = i | plus: 1 %}
{% for tag in site.tags %}
{% assign tagName = tag.first %}
<h1>{{ tagName }}</h1>
{% for category in site.categories %}
<h2>{{ category.first }}</h2>
{% for post in site.posts %}
{% if post.tags contains tagName %}
<h3>{{ post.title }}</h3>
{% endif %}
{% endfor %}
{% endfor %}
{% endfor %}