Jekyll 如果`foo.bar.baz`是FrontMatter变量,如何访问`site.data.header[";foo.bar.baz";`
我想要像这样的东西:Jekyll 如果`foo.bar.baz`是FrontMatter变量,如何访问`site.data.header[";foo.bar.baz";`,jekyll,liquid,Jekyll,Liquid,我想要像这样的东西: --- 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”]。但这
---
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”]
。但这增加了杰基尔的建造时间
我想我需要一些Ruby插件,但我不知道如何使用Ruby来编写插件
如果你知道这样的插件,或者可以帮我写一个,或者知道一些本机的解决方法,这将是太好了
帮助:)
我还知道我可以将page.my_var拆分为子字符串,然后将它们用作site.data[“foo”][“bar”][“baz”]。但这增加了杰基尔的建造时间
我不确定你能做到这一点。即使可以,我也不确定是否会对性能产生真正的影响
但你可以这样做:
\u数据/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 }}
我们希望做的事情被设计所阻碍
site.data[“foo.bar.baz”]
意味着您需要一个名为foo.bar.baz.yml
或foo.bar.baz.json
。。。等等
但Jekyll会清理数据文件的名称,因此生成的对象只有一个名为“foobarbaz”
可以编写一个有目的地删除这种消毒的插件,但对最终用户来说,它似乎不是一个良性或安全的插件。因此,在野外找到这样一个插件的机会微乎其微