这个想法是如果只显示某个类别中的1个最新帖子,如果它具有params特征" true"
{{ range (where .Data.Pages "Type" "blog") 1 }}
{{ if and (in .Params.categories "photography") (in .Params.featured "true") }}
上面的代码正在运行,但它会呈现所有类别 foo (超过1个帖子)的帖子
{{ $photography := .Data.Pages.ByParam "categories" }}
{{ if and (in .Params.featured "true") (eq .Params.categories "photography") }}
{{ range first 1 $photography }}
上面的代码没有错误,但它根本没有呈现
任何线索?
答案 0 :(得分:1)
有一种方法可以根据categories
的定义来解决这个问题。
在这种情况下,我们会说它是一个分类法,因为categories
是默认分类法,如果你没有在你的站点配置中指定任何分类法。
我们要做的第一件事是获取一个类别为photography
的页面集合
{{ $photography := .Site.Taxonomies.categories.photography }}
然后,我们必须找到一种方法,通过使用true
函数和GroupByParam
featured
的网页
{{ range ($photography.Pages.GroupByParam "featured") }}
{{ end }}
此范围内的群组将返回.Key
的{{1}}值,因此我们会检查每个值.Params.featured
。找到特色组后,按照您喜欢的顺序排序并返回您想要的那个(1)。
true
完整代码示例(类别作为分类)
{{ if eq .Key true }}
{{ range last 1 .Pages.ByDate }}
// The `.` context here is a page. Use it accordingly
{{ end }}
{{ end }}
注意:
{{ $photography := .Site.Taxonomies.categories.photography }}
{{ range ($photography.Pages.GroupByParam "featured") }}
{{ if eq .Key true }}
{{ range last 1 .Pages.ByDate }}
// The `.` context here is a page. Use it accordingly
{{ end }}
{{ end }}
{{ end }}
按顺序排序,但can use any valid page collection sorting使用ByDate
或first
相应地获取您需要的页面。last
)中的值是相同的类型(在本例中为布尔值)。如果它们是混合的,它们将无法正常工作。如果你将它们设为字符串,它们将起作用,但需要检查字符串featured
。"true"
为per Hugo docs。