模板語法
LifeOS 現在有兩套模板語法,需要按你使用的版本區分:
- LifeOS Pro / Aino LifeOS:使用內建模板語法,例如
{{snapshot:Project}}、{{date}}、{{tags}}。這套語法不依賴 Templater。 - 社群版 / 開源版 LifeOS:只支援舊的 Templater 語法,例如
<% LifeOS.Project.snapshot() %>。如果你使用開源版本,不要把模板替換成新語法。
基礎變數
這些變數可以放在週期筆記模板和主題筆記模板裡:
周內日期變數
在週記模板裡,可以用 {{monday:FORMAT}} 到 {{sunday:FORMAT}} 引用當前周的每一天。中文環境預設按週一到週日計算;如果你在設定中修改了周起始日,會按設定計算。
例如,日記檔名是 YYYY-MM-DD 時:
如果你的日記檔名是 YYYYMMDD dddd,也可以寫成:
快照變數
LifeOS Pro 的快照變數寫法是:
它會生成對應資料夾下主題索引檔案的編號列表。例如 {{snapshot:Project}} 會掃描專案資料夾,找到每個專案資料夾裡的索引檔案,然後生成:
如果你使用的是 *.README.md 索引模式,LifeOS Pro 會按當前設定尋找索引檔案。
條件塊
可以按工作日 / 週末切換模板內容:
weekday 指週一到週五。週六、週日會使用 {{else}} 後的內容;沒有 {{else}} 時,週末會輸出空內容。
週期筆記示例
主題筆記示例
建立主題筆記時,{{tags}} 會被替換成當前主題標籤。寫成正文標籤時,通常要自己加上 #:
社群版 / 開源版相容語法
社群版 / 開源版 LifeOS 依賴 Templater,只支援舊寫法:
主題標籤仍使用 Templater 的 frontmatter 變數:
如果你維護的是開源版倉庫或舊版示例庫,請繼續使用這套舊語法,並確保 Templater 已啟用 Trigger Templater on new file creation。
遷移安全規則
當你使用"檢查並安全遷移"功能將舊模板轉換為新語法時,請注意:
- 自動遷移只會更新無殘留指令碼的模板。如果你的模板中只包含
tp.date.now、tp.frontmatter.tags、tp.file.title、snapshot()等已識別的舊語法片段,遷移會自動完成。 - 含自定義 JavaScript 指令碼的模板不會被自動修改。模板中如果包含
<%* let ... %>、<% if ... %>、tp.user.*等自定義 Templater 指令碼,系統不會自動寫入,避免破壞你的自定義邏輯。 - 可以在設定頁隨時重新檢查。開啟設定 → 週期筆記或主題筆記頁,點選"!"按鈕並選擇"檢查並安全遷移",即可重新掃描模板的最新狀態。
- 模板原始檔會保留條件指令。在
Templates/Daily.md中看到{{if weekday}}、{{else}}、{{endif}}是正常的;生成後的日期日記裡只應保留命中的正文分支,不應再顯示這些指令。 - 手動改寫建議:只有在確認舊
.weekday()指令碼確實表示“週一到週五”時,才改成{{if weekday}}...{{else}}...{{endif}};Moment 的.weekday()會受 locale 的周起始日影響,外掛不會猜測轉換。如果模板依賴其他 Templater 外掛或複雜指令碼,建議繼續保留 Templater,或手動改寫後再遷移。