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”

可以编写一个有目的地删除这种消毒的插件,但对最终用户来说,它似乎不是一个良性或安全的插件。因此,在野外找到这样一个插件的机会微乎其微