【发布时间】:2012-01-30 08:13:17
【问题描述】:
他们的两个元素都可以通过for..in访问,添加类别和标签的方式是一样的。那么,Jekyll 中的类别和标签有什么区别呢?
【问题讨论】:
-
对于那些偶然发现这个问题的人,最后一个答案是从 2020 年开始的,来自 Jekyll 4.2 文档。
他们的两个元素都可以通过for..in访问,添加类别和标签的方式是一样的。那么,Jekyll 中的类别和标签有什么区别呢?
【问题讨论】:
在我看来,唯一重要的区别是可以在帖子 url 中使用类别——“啤酒”和“食物”类别中的帖子默认情况下会有这个 url:
/food/beer/2008/09/09/foo-bar.html
而不是这个:
/2008/09/09/foo-bar.html
See the post tests for details
标签对网址没有影响,至少根据它们的tests。
【讨论】:
The difference between categories and tags is a category can be part of the URL for a post whereas a tag cannot.
您可以指定帖子所属的一个或多个类别,而不是将帖子放在文件夹中。当网站生成时,帖子的行为就好像它已经正常设置了这些类别一样。类别(复数键)可以指定为 YAML 列表或空格分隔的字符串。
与类别类似,一个或多个标签可以添加到帖子中。与类别一样,标签可以指定为 YAML 列表或空格分隔的字符串。
这只是表明相似之处;它并没有真正解释类别和标签之间的区别。 This video tutorial 建议:
两者之间的唯一区别是类别可以反映在您帖子的永久链接中。
继续解释
它们在本质上也可以是分层的,但这意味着,例如,如果你想出一个食物类别,你可以想出一个纸杯蛋糕类别,它是食物的一个子类别。另一方面,标签是扁平的。它们本质上是非等级的
还有那个
Jekyll 确实没有任何基于这些标签和类别自动生成存档页面或内容页面的方法。
对这种事情的支持将在您使用的主题中实现,或者您可以自己做。
【讨论】:
v4.2 documentation 有更新的答案。
类别和标签之间的标志性区别在于,帖子的类别可以合并到为帖子生成的 URL 中,而标签不能。
因此,根据前面的内容是
category: classic hollywood还是categories: classic hollywood,上面的示例帖子的 URL 将分别为movies/horror/classic%20hollywood/2019/05/21/bride-of-chucky.html或movies/horror/classic/hollywood/2019/05/21/bride-of-chucky.html。
Liquid 模板可以使用类别和标签,并且可以对其进行迭代。
类别和标签都可以在帖子的前端定义。类别也可以通过帖子的文件路径来定义:
_post以上的任何目录都将作为一个类别读入。例如,如果帖子位于路径movies/horror/_posts/2019-05-21-bride-of-chucky.markdown,则movies和horror会自动注册为该帖子的类别。当帖子还具有定义类别的前端时,如果它们还没有出现,它们只会被添加到现有列表中。
【讨论】: