You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jekyll/Liquid中将Frontmatter变量用作模板变量?

为什么直接用 {{ [my_variable] }} 无法引用Frontmatter变量?

嘿,这个问题我之前也碰到过,本质是主流模板引擎(比如Jekyll、Hugo这类静态站点常用的)对变量解析的语法规则限制:

  • 方括号的作用场景:方括号[]核心是用来动态访问对象的属性,它必须依附于一个明确的父对象上下文才能生效。单独写[my_variable]时,引擎找不到对应的对象载体,自然没法解析出变量的值。
  • 有效写法的原因:当你写{{ some_other_text.[my_variable] }}时,some_other_text是一个明确的嵌套对象(比如你在Frontmatter里定义的层级结构),方括号在这里相当于告诉引擎:“去some_other_text这个对象里,找名为my_variable的属性值”,所以能正常生效。

针对不同需求的解决办法

根据你想要实现的效果,可以用这几种方式处理:

  1. 直接引用顶层Frontmatter变量
    如果只是想直接调用顶层的my_variable,完全不需要加方括号,直接写:
{{ my_variable }}
  1. 动态引用顶层变量(变量名存在另一个变量中)
    如果你需要动态指定要引用的变量名(比如变量名存在target_var里),可以借助模板引擎的赋值语法,先明确顶层对象上下文(通常顶层Frontmatter在page对象下,以Jekyll为例):
{% assign target_var = "my_variable" %}
{{ page[target_var] }}
  1. 访问嵌套对象的属性(你的有效场景)
    保持你当前的写法即可,前提是Frontmatter里有对应的嵌套结构:
# Frontmatter 定义
some_other_text:
  my_variable: "这是嵌套属性的值"

模板里引用:

{{ some_other_text.[my_variable] }}

内容的提问来源于stack exchange,提问作者Felix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:02:10