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

如何在Jekyll的Liquid中为page.test添加自定义属性?

解决Jekyll中Front Matter变量添加属性及链接失效问题

首先得搞清楚为啥链接会失效:Jekyll里Front Matter定义的page.test是个静态哈希对象,Liquid模板语言不允许直接给已存在的对象追加新属性。你之前尝试把addr改成test.addr(正确写法应该是page.test.addr),但这个属性根本没被定义过,自然输出为空,链接就失效了。

下面给你两种可行的解决办法:

方法一:直接在Front Matter里预定义属性

这是最直接的方式,如果你提前知道要加的属性,直接在Front Matter里写好就行:

layout: post
title: "Welcome to Jekyll!"
test:
  name: google.com
  addr: https://www.google.com

然后模板里直接用{{ page.test.addr }},链接就能正常渲染了:

[glink]: {{ page.test.addr }}

方法二:用Liquid的merge过滤器动态合并属性

如果需要在模板里动态生成属性,那就用merge过滤器创建一个新的哈希对象,把原有的page.test和新属性合并:

{% assign updated_test = page.test | merge: { addr: "https://www.google.com" } %}
# Heading
This is a link to [the Google homepage!][ghome]
This is another link that [may or maynot work][glink]
[ghome]: https://google.com
[glink]: {{ updated_test.addr }}

这样updated_test就包含了原来的name和新的addr属性,链接就能正常解析啦。

总结一下:Front Matter的对象是静态的,不能直接修改属性,要么提前定义,要么用merge生成新对象来包含新属性~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:50:26