我想要类似的东西
---
my_var: "foo.bar.baz"
---
{{- site.data.header[page.my_var] -}}
不幸的是,它不起作用...
我知道我可以使用site.data.header.foo.bar.baz
或site.data.header["foo"]["bar"]["baz"]
,但事实并非如此。
我还知道我可以将page.my_var
拆分为子字符串,然后将其用作site.data.header["foo"]["bar"]["baz"]
。但这会增加Jekyll的构建时间。
我想我需要一些Ruby插件,但是我不认识,也不知道Ruby会写一个。
如果您知道这样的插件,或者可以帮助我写一个插件或知道一些本地的解决方法,那么太好了!
帮助:)
答案 0 :(得分:0)
我还知道我可以将page.my_var拆分为子字符串,然后将它们用作site.data [“ foo”] [“ bar”] [“ baz”]。但这会增加Jekyll的构建时间。
我不确定您可以这样做。即使可以,我也不确定会对性能产生真正的影响。
但是您可以这样做:
_data / foo.yml
bar:
baz: 1
biz: 2
buz: 3
beer:
baz: 1
biz: 2
buz: 3
然后:
---
my_var: "foo.bar.baz"
---
{% assign keys = page.my_var | split: "." %}
{% assign object = site.data %}
{% for key in keys %}
{% assign object = object[key] %}
{% endfor %}
{{ object }}
答案 1 :(得分:0)
希望做的事已被设计阻止。
site.data["foo.bar.baz"]
意味着您需要有一个名为foo.bar.baz.yml
或foo.bar.baz.json
等的数据文件,等等。
但是Jekyll 消毒了数据文件的名称,因此生成的对象将只有一个名为"foobarbaz"
的键
可以删除故意删除此清理问题的插件,但对于最终用户而言似乎不是良性或安全的。因此,在野生的中找到这样的插件的机会很小。