问题描述
我正在Github页面上构建Jekyll网站。我有一个Github操作,它以今天的时间戳将最新的每日数据传递到我的_data /文件中:
_data/
somedata_YYYYMMDD.json
{% assign today_data = 'Now' | date: "%Y%m%d" | prepend: 'site.data.somedata_' %}
或
{% capture today_data %}
site.data.somedata_{{ 'Now' | date: "%Y%m%d" }}
{% endcapture %}
在这两种情况下,如果我尝试使用today_data变量,Liquid会将其解释为惰性字符串,而不是a pointer to a liquid object。因此,如果我尝试{{today_data}}
,则会得到字符串“ site.data.somedata_20200902”,但我希望它返回json文件的内容。
我咨询了其他一些问题,但是它们似乎不适用于这种情况:
-
using Liquid variables inside of a liquid tag call-此人将变量用作标签中的字符串。我需要将变量解释为数据对象的路径。
-
Using filters in Liquid tags-此人还创建了一个变量,用作标记中的字符串。
-
Use js variable with Shopify liquid tag-同样,我认为:在变量中将变量用作字符串。
解决方法
在两种情况下都几乎是一个字符串。因此很有效:
{{ 'site.data.somedata_YYYYMMDD' }}
相反,您可以执行以下操作来访问和打印对象:
{% assign today_path = 'now' | date: "%Y%m%d" | prepend: 'somedata_' %}
{{ site.data[today_path] | jsonify }}
通过这种方式,您可以访问site.data
对象,并动态地构造键/路径。