【问题标题】:HUGO IN function not accepting variable as ITEMHUGO IN 函数不接受变量作为 ITEM
【发布时间】:2020-01-17 06:48:09
【问题描述】:

我正在使用 Hugo 的 IN 函数,它可以用作 in SET ITEM,定义在 Hugo Documentation for IN

我正在尝试通过以下代码过滤掉特定类别的帖子

{{ range where .Site.Pages "Section" "products"}}
   {{ if in .Params.categories "New Arrival" }}
          <li>{{ .Title }}</li>
   {{end}}
{{end}}

上面的代码完全没问题。

但是如果我对ITEM 使用变量而不是字符串。它总是返回False

{{ $display_product_cat := "New Arrival" }}

{{ range where .Site.Pages "Section" "products"}}
      {{ if in .Params.categories $display_product_cat }}
          <li>{{ .Title }}</li>
      {{end}}
{{end}}

上面的代码没有按预期工作。

想知道我是否在这里遗漏了什么。感谢您的时间和帮助。

【问题讨论】:

  • “ITEM 总是返回 false”是什么意思?您的代码中没有任何名为 ITEM 的内容,也没有返回布尔值...您到底看到什么是“假”?
  • @flimzy 感谢您的回复。但是ITEM是指IN函数的第二个参数。当我在代码的第一个 sn-p 中使用 in 函数时,我使用字符串作为第二个参数。但是在第二个 sn-p 中,我使用一个变量作为第二个参数。由于某种原因,这不起作用。
  • 在什么情况下不起作用?你看到了什么输出或错误?
  • @Flimzy,它没有给出任何错误,构建工作正常。但是对于上面的代码,第二个 sn-p if in .Params.categories $display_product_cat 必须是 TRUE 但它总是返回'FALSE' .
  • 这听起来很像您的.Params.categories 列表不包含"New Arrival",而且您的代码实际上正在运行。

标签: go hugo go-templates


【解决方案1】:

您可以通过以下方式测试布尔值是什么:

{{ $i := in .Params.categories "New Arrival" }}
{{ $i }} ## will output true|false

{{ $var := "New Arrival" }}
{{ $j := in .Params.categories $var }}
{{ $j }} ## will output true|false

如果它给出错误的结果,您可能需要检查您的 .Params 的实际构造方式(它们采用什么模式等)。

提供更多信息将为您提供更好的调试(例如您的参数的 sn-p)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 2019-07-10
    相关资源
    最近更新 更多