Jekyll 根据名称获取特定的 _data 数据
Jekyll get specific _data data based on an name
我有一个数据文件夹结构:
_data/footer/1.yml
_data/footer/2.yml
等
我想做的是在模板中,基于前面的变量是 select 这些文件之一和 return 其中包含的数据。
如果我这样做:
site.data.footer.1
它 return 是 1.yml 中的数据。如果我尝试做 site.data.footer.{{page.footer}}
它 return 没什么,即使前面的内容将页脚变量设置为 1,如下所示:
---
footer: 1
---
{% assign foot_id = page.footer %}
{{foot_id}}
{% assign stuff = site.data.footer.{{foot_id}} %}
{{stuff}}
stuff
在这种情况下将为空白。这是正确的方法吗?怎么了?
如果我们查看您的数据:
site.data.footer = {"1"=>{"variable"=>"one"}, "2"=>{"variable"=>"two"}}
我们有一个散列键是字符串。
我们可以像这样访问我们的数据:
{{ site.data.footer.1 }} => {"variable"=>"one"}
or
{{ site.data.footer["1"] }} => {"variable"=>"one"}
请注意,括号表示法将字符串作为键。如果您尝试使用整数,它 returns 什么都没有 {{ site.data.footer[1] }} => null
。
如果我们想使用一个page
变量,我们需要它是一个字符串。可以是:
---
# a string in the front matter
footer: "1"
---
{{ site.data.footer[page.footer] }} => {"variable"=>"one"}
或转换为字符串的整数
---
# a string in the front matter
footer: 1
---
Transform an integer to a string by adding it an empty string
{% assign foot_id = page.footer | append: "" %}
{{ site.data.footer[foot_id] }} => {"variable"=>"one"}
注意:您也可以像这样将字符串转换为整数:
{% assign my_integer = "1" | plus: 0 %}
{{ my_integer | inspect }} => 1 but not "1"
我有一个数据文件夹结构:
_data/footer/1.yml
_data/footer/2.yml
等
我想做的是在模板中,基于前面的变量是 select 这些文件之一和 return 其中包含的数据。
如果我这样做:
site.data.footer.1
它 return 是 1.yml 中的数据。如果我尝试做 site.data.footer.{{page.footer}}
它 return 没什么,即使前面的内容将页脚变量设置为 1,如下所示:
---
footer: 1
---
{% assign foot_id = page.footer %}
{{foot_id}}
{% assign stuff = site.data.footer.{{foot_id}} %}
{{stuff}}
stuff
在这种情况下将为空白。这是正确的方法吗?怎么了?
如果我们查看您的数据:
site.data.footer = {"1"=>{"variable"=>"one"}, "2"=>{"variable"=>"two"}}
我们有一个散列键是字符串。
我们可以像这样访问我们的数据:
{{ site.data.footer.1 }} => {"variable"=>"one"}
or
{{ site.data.footer["1"] }} => {"variable"=>"one"}
请注意,括号表示法将字符串作为键。如果您尝试使用整数,它 returns 什么都没有 {{ site.data.footer[1] }} => null
。
如果我们想使用一个page
变量,我们需要它是一个字符串。可以是:
---
# a string in the front matter
footer: "1"
---
{{ site.data.footer[page.footer] }} => {"variable"=>"one"}
或转换为字符串的整数
---
# a string in the front matter
footer: 1
---
Transform an integer to a string by adding it an empty string
{% assign foot_id = page.footer | append: "" %}
{{ site.data.footer[foot_id] }} => {"variable"=>"one"}
注意:您也可以像这样将字符串转换为整数:
{% assign my_integer = "1" | plus: 0 %}
{{ my_integer | inspect }} => 1 but not "1"