如果要说明分类法?

时间:2018-07-31 15:20:46

标签: hugo

我有一个开关,想为分类法添加一个if语句,但是不知道如何调用它?我试过.IsTaxonomy是否出现错误...

{{ if eq .Type "blog" }}
  {{ .Title }}
{{ end }}

{{ if eq .Type "help" }}
  {{ .Title }}
{{ end }}

{{ if eq .Type "reviews" }}
  {{ .Title }}
{{ end }}

{{ if .IsHome }}
  home
{{ else if eq .Type "page" }}
  {{ .Title }}
{{ end }}

1 个答案:

答案 0 :(得分:3)

  

我有一个开关,想为分类法添加if语句,但不知道如何调用它?我试过如果是.IsTaxonomy但出现错误...

您在if语句中使用的.Type变量是Hugo从内容文件夹(更确切地说是该部分)获取的变量。因此,您存储在/content/tutorial/中的帖子的类型为tutorial。您还可以手动设置内容的类型。但是.Type默认情况下不等于内容的分类法。

一种替代方法是使用Hugo的.IsNode page variable -当当前页面是列表页面时,它总是返回true。也就是说,页面中包含来自某个分类法或部分的帖子。

您可以检查页面的.RelPermalink变量以查看当前页面是否包含某些分类名称(例如"reviews")。但是我建议不要这样做,因为这不是一个好习惯。您所做的任何分类更改或新分类都意味着您的主题代码需要更改。此外,它还要求您(或您的用户)不要对分类法名称犯任何拼写错误,否则主题的代码会中断。

如果我查看您的if语句代码,则以下内容似乎与您要执行的操作等效:

{{ if .IsNode }} 

    <!-- Taxonomy and section list pages -->
    {{ .Title }}

{{ else if .IsPage }} 

    <!-- Content pages -->

{{ else if .IsHome }} 

    <!-- Homepage -->
    home

{{ else }}

    <!-- All other pages, like the 404 page -->

{{ end }}