模板语法

LifeOS 现在有两套模板语法,需要按你使用的版本区分:

  • LifeOS Pro / Aino LifeOS:使用内置模板语法,例如 {{snapshot:Project}}{{date}}{{tags}}。这套语法不依赖 Templater。
  • 社区版 / 开源版 LifeOS:只支持旧的 Templater 语法,例如 <% LifeOS.Project.snapshot() %>。如果你使用开源版本,不要把模板替换成新语法。

基础变量

这些变量可以放在周期笔记模板和主题笔记模板里:

变量说明
{{date}}当前笔记日期,格式为 YYYY-MM-DD
{{date:FORMAT}}使用 Day.js 格式化当前笔记日期,例如 {{date:YYYY-MM-DD dddd}}
{{date+N:FORMAT}} / {{date-N:FORMAT}}当前笔记日期前后偏移 N 天
{{monday:FORMAT}} ... {{sunday:FORMAT}}当前周内指定星期的日期,适合在周记里引用每天的日记
{{time}}当前时间,格式为 HH:mm
{{time:FORMAT}}使用 Day.js 格式化当前时间
{{title}} / {{filename}}新建笔记的文件名,不含 .md
{{year}} / {{month}} / {{day}}年、月、日
{{week}} / {{weekYear}}周序号、周所属年份
{{quarter}}季度,例如 Q1
{{periodType}}周期类型:DailyWeeklyMonthlyQuarterlyYearly
{{tags}}创建主题笔记时传入的主题标签,不含开头的 #

周内日期变量

在周记模板里,可以用 {{monday:FORMAT}}{{sunday:FORMAT}} 引用当前周的每一天。中文环境默认按周一到周日计算;如果你在设置中修改了周起始日,会按设置计算。

例如,日记文件名是 YYYY-MM-DD 时:

![[{{monday:YYYY-MM-DD}}]]
![[{{tuesday:YYYY-MM-DD}}]]
![[{{wednesday:YYYY-MM-DD}}]]
![[{{thursday:YYYY-MM-DD}}]]
![[{{friday:YYYY-MM-DD}}]]
![[{{saturday:YYYY-MM-DD}}]]
![[{{sunday:YYYY-MM-DD}}]]

如果你的日记文件名是 YYYYMMDD dddd,也可以写成:

![[{{sunday:YYYYMMDD dddd}}]]

快照变量

LifeOS Pro 的快照变量写法是:

{{snapshot:Project}}
{{snapshot:Area}}
{{snapshot:Resource}}
{{snapshot:Archive}}
{{snapshot:Theme}}

它会生成对应目录下主题索引文件的编号列表。例如 {{snapshot:Project}} 会扫描项目目录,找到每个项目文件夹里的索引文件,然后生成:

1. [[1. 项目/项目 A/README|项目 A]]
2. [[1. 项目/项目 B/README|项目 B]]

如果你使用的是 *.README.md 索引模式,LifeOS Pro 会按当前设置寻找索引文件。

条件块

可以按工作日 / 周末切换模板内容:

{{if weekday}}

## 工作日计划

- [ ] 处理今日重点任务
      {{else}}

## 周末回顾

- [ ] 做一次轻量复盘
      {{endif}}

weekday 指周一到周五。周六、周日会使用 {{else}} 后的内容;没有 {{else}} 时,周末会输出空内容。

周期笔记示例

## 项目列表

{{snapshot:Project}}

## 日常记录

%%你的记录%%

## 明日提醒

{{date+1:YYYY-MM-DD}}

主题笔记示例

创建主题笔记时,{{tags}} 会被替换成当前主题标签。写成正文标签时,通常要自己加上 #

---
tags:
  - { { tags } }
---

## 任务

- [ ] #{{tags}} 截止日期 📅 {{date+7:YYYY-MM-DD}}

```LifeOS
TaskListByTag
```

社区版 / 开源版兼容语法

社区版 / 开源版 LifeOS 依赖 Templater,只支持旧写法:

<% LifeOS.Project.snapshot() %>
<% LifeOS.Area.snapshot() %>
<% LifeOS.Resource.snapshot() %>
<% LifeOS.Archive.snapshot() %>

主题标签仍使用 Templater 的 frontmatter 变量:

#<% tp.frontmatter.tags %>

如果你维护的是开源版仓库或旧版示例库,请继续使用这套旧语法,并确保 Templater 已启用 Trigger Templater on new file creation

迁移安全规则

当你使用"检查并安全迁移"功能将旧模板转换为新语法时,请注意:

  • 自动迁移只会更新无残留脚本的模板。如果你的模板中只包含 tp.date.nowtp.frontmatter.tagstp.file.titlesnapshot() 等已识别的旧语法片段,迁移会自动完成。
  • 含自定义 JavaScript 脚本的模板不会被自动修改。模板中如果包含 <%* let ... %><% if ... %>tp.user.* 等自定义 Templater 脚本,系统不会自动写入,避免破坏你的自定义逻辑。
  • 可以在设置页随时重新检查。打开设置 → 周期笔记或主题笔记页,点击"!"按钮并选择"检查并安全迁移",即可重新扫描模板的最新状态。
  • 手动改写建议:如果你的模板依赖 .weekday() 等日期判断,可以用 {{if weekday}}...{{else}}...{{endif}} 替代。如果你的模板依赖其他 Templater 插件或复杂脚本,建议继续保留 Templater,或手动把这些脚本改写为 LifeOS 原生语法后再迁移。