Templater 模板引擎核心功能解析与使用指南
Templater A template plugin for obsidian 项目地址: https://gitcode.com/gh_mirrors/te/Templater
Templater 是一个功能强大的模板引擎,专为知识管理和笔记应用设计。它提供了丰富的功能模块,可以帮助用户自动化处理文档创建、内容生成和文件管理等任务。本文将深入解析 Templater 的核心功能模块及其使用方法。
核心模块概览
Templater 通过模块化的方式组织功能,主要包含以下几个核心模块:
- 应用模块 (tp.app) - 提供应用实例访问
- 用户模块 (tp.user) - 支持用户自定义脚本
- 配置模块 (tp.config) - 暴露模板运行时的配置信息
- 日期模块 (tp.date) - 提供日期处理功能
- 文件模块 (tp.file) - 处理文件相关操作
- Frontmatter 模块 (tp.frontmatter) - 访问文件的前置元数据
- 钩子模块 (tp.hooks) - 提供事件钩子机制
日期处理功能详解
日期处理是 Templater 中最常用的功能之一,tp.date
模块提供了丰富的日期操作方法。
基础日期函数
-
当前日期 (now)
- 获取当前日期,支持自定义格式和偏移量
- 示例:
<% tp.date.now() %>
输出 "2023-05-15" - 高级用法:
<% tp.date.now("YYYY年MM月DD日") %> // 中文格式 <% tp.date.now("YYYY-MM-DD", -7) %> // 一周前的日期 <% tp.date.now("YYYY-MM-DD", "P1M") %> // 一个月后的日期
-
昨天和明天
tp.date.yesterday()
获取昨天日期tp.date.tomorrow()
获取明天日期- 示例:
<% tp.date.yesterday("MM月DD日") %> // 输出"05月14日" <% tp.date.tomorrow("ddd, MMM Do YYYY") %> // 输出"Tue, May 16th 2023"
周日期处理
weekday
函数特别适合处理周相关的日期:
// 获取本周一的日期
<% tp.date.weekday("YYYY-MM-DD", 0) %>
// 获取下周一的日期
<% tp.date.weekday("YYYY-MM-DD", 7) %>
// 基于文件标题中的日期获取当周周一
<% tp.date.weekday("YYYY-MM-DD", 0, tp.file.title, "YYYY-MM-DD") %>
高级日期操作
Templater 集成了强大的日期库,支持更多复杂操作:
// 获取当月第一天
<% moment(tp.file.title, "YYYY-MM-DD").startOf("month").format("YYYY-MM-DD") %>
// 获取当月最后一天
<% moment(tp.file.title, "YYYY-MM-DD").endOf("month").format("YYYY-MM-DD") %>
文件操作全解析
tp.file
模块提供了完整的文件生命周期管理功能。
文件内容操作
-
获取文件内容
tp.file.content
获取文件当前内容- 注意:修改此变量不会实际改变文件内容
-
文件包含
tp.file.include
可以包含其他文件内容- 支持区块引用和章节引用
<% await tp.file.include("[[参考文档#重要章节]]") %> <% await tp.file.include("[[笔记模板^关键段落]]") %>
文件创建与管理
-
创建新文件
- 支持从模板创建或直接指定内容
- 可控制文件打开行为和存储位置
// 从模板创建文件 <%* await tp.file.create_new(tp.file.find_tfile("日记模板"), "今日日记") %> // 在指定文件夹创建文件 <%* await tp.file.create_new("# 新笔记", "创意记录", false, "灵感/未整理") %>
-
文件移动与重命名
tp.file.move
移动文件到新位置tp.file.rename
重命名文件
// 按日期整理文件 <%* await tp.file.move("/日记/" + tp.date.now("YYYY/MM-MMM") + "/" + tp.file.title) %> // 添加状态后缀 <%* await tp.file.rename(tp.file.title + "-草稿") %>
元数据访问
-
文件属性
tp.file.title
获取文件名tp.file.tags
获取文件标签数组tp.file.folder()
获取所在文件夹
-
时间信息
tp.file.creation_date()
获取创建时间tp.file.last_modified_date()
获取修改时间
创建于:<% tp.file.creation_date("YYYY年MM月DD日 HH:mm") %> 最后更新:<% tp.file.last_modified_date("YYYY年MM月DD日 HH:mm") %>
高级功能与技巧
光标控制
Templater 提供了强大的光标定位功能:
// 设置多个光标位置
请填写姓名:<% tp.file.cursor(1) %>
请填写年龄:<% tp.file.cursor(2) %>
// 多光标编辑
<% tp.file.cursor(1) %>姓名<% tp.file.cursor(1) %>:张三
<% tp.file.cursor(2) %>年龄<% tp.file.cursor(2) %>:30
钩子机制
通过 tp.hooks
可以在模板执行完成后触发自定义操作:
<% tp.hooks.on_all_templates_executed(() => {
// 所有模板执行完成后执行的代码
console.log("模板处理完成");
}) %>
配置信息访问
tp.config
模块提供了模板运行的上下文信息:
// 获取当前模板文件信息
当前模板:<% tp.config.template_file.basename %>
// 获取运行模式
运行方式:<% tp.config.run_mode %>
最佳实践建议
- 日期处理:建立统一的日期格式标准,便于后续检索和处理
- 文件命名:结合日期和内容设计有意义的文件名规则
- 模板组织:按用途分类存储模板文件,建立模板索引
- 错误处理:在复杂脚本中添加适当的错误检查逻辑
- 性能优化:避免在模板中包含过多耗时的操作
通过合理利用 Templater 提供的各种功能,可以大幅提升知识管理效率,实现文档处理的自动化,让用户能够更专注于内容创作而非格式调整。
Templater A template plugin for obsidian 项目地址: https://gitcode.com/gh_mirrors/te/Templater
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考