如何在Liquid Templates中给变量分配Hashmap并正确访问?
原生Liquid模板引擎不支持直接使用{key: 'value'}的字面量语法给变量赋值哈希对象,你尝试的写法会被解析为无效语法,最终返回空字符串是符合原生Liquid行为的。
实现方案
方案1:原生Liquid通用实现(无扩展依赖)
通过分别定义键、值数组,用索引匹配的方式实现键值映射:
# 定义键数组和对应的值数组 {% assign translation_keys = "en,es" | split: "," %} {% assign translation_values = "Hello,Hola" | split: "," %} # 读取指定语言对应的翻译内容 {% assign target_key = "en" %} {% assign key_index = translation_keys | indexOf: target_key %} {{ translation_values[key_index] }}
输出结果为Hello。
方案2:使用JSON解析(支持json_parse过滤器的环境可用,比如Shopify Liquid、部分扩展版Liquid)
先将哈希内容写为符合规范的JSON字符串,再通过JSON解析过滤器转为对象:
{% assign translations = '{"en": "Hello", "es": "Hola"}' | json_parse %} {{ translations.en }}
输出结果为Hello。
方案3:静态站点场景(如Jekyll等)
直接将哈希内容定义在数据配置文件中:
- 在站点
_data目录下新建translations.yml,写入内容:
en: Hello es: Hola
- 在模板中直接访问:
{{ site.data.translations.en }}
输出结果为Hello。
内容的提问来源于stack exchange,提问作者Seif
相关产品推荐
相关产品推荐

