Templater 模板引擎核心功能解析与使用指南

Templater 模板引擎核心功能解析与使用指南

Templater A template plugin for obsidian Templater 项目地址: https://gitcode.com/gh_mirrors/te/Templater

Templater 是一个功能强大的模板引擎,专为知识管理和笔记应用设计。它提供了丰富的功能模块,可以帮助用户自动化处理文档创建、内容生成和文件管理等任务。本文将深入解析 Templater 的核心功能模块及其使用方法。

核心模块概览

Templater 通过模块化的方式组织功能,主要包含以下几个核心模块:

  1. 应用模块 (tp.app) - 提供应用实例访问
  2. 用户模块 (tp.user) - 支持用户自定义脚本
  3. 配置模块 (tp.config) - 暴露模板运行时的配置信息
  4. 日期模块 (tp.date) - 提供日期处理功能
  5. 文件模块 (tp.file) - 处理文件相关操作
  6. Frontmatter 模块 (tp.frontmatter) - 访问文件的前置元数据
  7. 钩子模块 (tp.hooks) - 提供事件钩子机制

日期处理功能详解

日期处理是 Templater 中最常用的功能之一,tp.date 模块提供了丰富的日期操作方法。

基础日期函数

  1. 当前日期 (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") %> // 一个月后的日期
      
  2. 昨天和明天

    • 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 模块提供了完整的文件生命周期管理功能。

文件内容操作

  1. 获取文件内容

    • tp.file.content 获取文件当前内容
    • 注意:修改此变量不会实际改变文件内容
  2. 文件包含

    • tp.file.include 可以包含其他文件内容
    • 支持区块引用和章节引用
    <% await tp.file.include("[[参考文档#重要章节]]") %>
    <% await tp.file.include("[[笔记模板^关键段落]]") %>
    

文件创建与管理

  1. 创建新文件

    • 支持从模板创建或直接指定内容
    • 可控制文件打开行为和存储位置
    // 从模板创建文件
    <%* await tp.file.create_new(tp.file.find_tfile("日记模板"), "今日日记") %>
    
    // 在指定文件夹创建文件
    <%* await tp.file.create_new("# 新笔记", "创意记录", false, "灵感/未整理") %>
    
  2. 文件移动与重命名

    • 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 + "-草稿") %>
    

元数据访问

  1. 文件属性

    • tp.file.title 获取文件名
    • tp.file.tags 获取文件标签数组
    • tp.file.folder() 获取所在文件夹
  2. 时间信息

    • 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 %>

最佳实践建议

  1. 日期处理:建立统一的日期格式标准,便于后续检索和处理
  2. 文件命名:结合日期和内容设计有意义的文件名规则
  3. 模板组织:按用途分类存储模板文件,建立模板索引
  4. 错误处理:在复杂脚本中添加适当的错误检查逻辑
  5. 性能优化:避免在模板中包含过多耗时的操作

通过合理利用 Templater 提供的各种功能,可以大幅提升知识管理效率,实现文档处理的自动化,让用户能够更专注于内容创作而非格式调整。

Templater A template plugin for obsidian Templater 项目地址: https://gitcode.com/gh_mirrors/te/Templater

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋崧欣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值