如何使用{{变量[内部]变量}}?

问题描述 投票:0回答:2

我是 Jekyll 和 Liquid 的新手,我正在尝试做一些小事情,但我不知道如何让它发挥作用。

基本上:

this.works[well]

(我认为)

但是:

this.does.[not].work
this.does[not]work
[this].does.not.work
[this]does.not.work

这就是我的问题:如何在“变量路径”中插入单个变量?

基本上我想调用不同语言的文本字符串,这些文本字符串目前位于我的 _data 文件夹中。 我想做的是类似于:

_data/en.yml:

hello: ‘Hello!’

页面首页:

lang: en

字符串必须出现的位置:

{{ site.data[page.lang]hello }}

有什么正确的方法可以做到这一点吗?

知道我会有几十个这样的字符串,所以它应该尽可能紧凑。

jekyll liquid
2个回答
0
投票

好吧我明白了,是:

site.data[page.lang].hello

我有一个后续问题,那就是我也在包含中传递了这些字符串。

这不起作用,并给出语法错误:

{% include box.html text=site.data[page.lang].hello %}

所以我必须做这样的事情:

{% assign hello=site.data[page.lang].hello %}
{% include box.html text=hello %}

这是非常长和愚蠢的:我最终写了 3 次(!)我的变量名,并创建了很多重复的变量。

有人知道如何写而不需要写3遍我的字符串名称吗? 谢谢!!

(更愚蠢的是,你可以在 include 的第一部分中使用带有 [] 的变量,但不能在第二部分中使用变量?

{% include site.data[page.lang].box text=hello %}

例如可以工作……)


0
投票

要在变量路径中插入单个变量,您需要使用方括号和点,如下所示:

site.data[page.lang].hello

这将使用 page.lang 的值作为键来访问 site.data 哈希中 hello 键的值

要在包含中传递这些字符串,您可以使用 raw 标签来防止 Liquid 解释花括号。例如:

{% raw %} {% include box.html text=site.data[page.lang].hello %} {% endraw %}

这将输出原始标签内的文字文本,而不尝试将其解析为 Liquid 代码

© www.soinside.com 2019 - 2024. All rights reserved.