【问题标题】:Jekyll get specific _data data based on an nameJekyll 根据名称获取特定的 _data 数据
【发布时间】:2016-04-06 00:35:51
【问题描述】:

我有一个数据文件夹结构:

_data/footer/1.yml _data/footer/2.yml

我要做的是在模板内,根据前面的变量是,选择其中一个文件并返回其中包含的数据。

如果我这样做: site.data.footer.1 它返回 1.yml 内的数据。如果我尝试执行 site.data.footer.{{page.footer}} 它什么也不返回,即使前面的内容将页脚变量设置为 1,如下所示:

---
footer: 1
---
{% assign foot_id = page.footer %}
{{foot_id}}
{% assign stuff = site.data.footer.{{foot_id}} %}
{{stuff}}

stuff 在这种情况下为空白。这是正确的方法吗?怎么了?

【问题讨论】:

    标签: jekyll


    【解决方案1】:

    如果我们查看您的数据:

    site.data.footer = {"1"=>{"variable"=>"one"}, "2"=>{"variable"=>"two"}}
    

    我们有一个哈希,键是字符串。

    我们可以这样访问我们的数据:

    {{ site.data.footer.1 }} => {"variable"=>"one"}
    or
    {{ site.data.footer["1"] }} => {"variable"=>"one"}
    

    请注意,括号表示法将字符串作为键。如果您尝试使用整数,它不会返回任何内容{{ 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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      相关资源
      最近更新 更多