编辑
2023-02-10
知识管理
00

目录

1. 基本介绍
1.1 术语
1.2 设置
2. 内部函数
2.1 配置文件
2.2 tp日期
2.3 tp 文件
2.4 tp系统
2.5 控制台
3. 示例

1. 基本介绍

1.1 术语

  • 模板是包含命令的文件。
  • 命令是以开始标记开始<%、以结束标记结束的文本片段%>。
  • 函数是一个对象,我们可以在命令中调用它并返回一个值(替换字符串)
    • 内部函数:预定义的函数
    • 用户函数:用户自定义函数

1.2 设置

  • Template folder location :
    • 设置该选项,可以让 templater 只扫描该文件下的模板文件
  • Internal Variables and Functions:
    • 提供一个内部变量和函数的文档入口
  • Syntax Highlighting
    • 语法高亮,在编辑模式下的 Templater 命令添加语法高亮显示
  • Automatic jump to cursor
    • 自动跳转到光标,插入模板后自动触发 tp.file.cursor
  • Trigger Templater on new file creation
    • 创建文件时触发 Templater
  • Show icon in sidebar
    • 侧边栏中显示图标
  • Template Hotkeys
    • 模板热键,将模板绑定到热键上

2. 内部函数

这里就介绍部分,细节需要参考官方文档

2.1 配置文件

  • tp.config.active_file? 启动模板程序时的活动文件(如果存在)。

  • tp.config.run_mode RunMode 代表启动模板程序的方式(从模板创建新的,附加到活动文件,...)

  • tp.config.target_file TFile 表示将插入模板的目标文件的对象。

  • tp.file.template_file TFile 表示模板文件的对象。

这里除了 tp.config.run_mode 其他命令,获取到的都是文件对象,需要搭配 [tp文件](# 2.3 tp 文件) 使用

2.2 tp日期

tp.date.now(format: string = "YYYY-MM-DD", offset?: number⎮string, reference?: string, reference_format?: string)

  • format: 必填,日期格式,字符串入参, 参考格式参考
    • YYYY-MM-DD HH:mm
      , 2023-02-08 23:59:59
  • offset: 非必填, 数字或字符串入参, 偏移量
    • 距离当天,偏移多少天
  • reference: 日期参考
  • reference_format: 日期格式参考

2.3 tp 文件

tp.file.create_new(template: TFile ⎮ string, filename?: string, open_new: boolean = false, folder?: TFolder)

  • template:必填,文件格式或字符串,模板
    • 使用 tp.file.find_tfile(TEMPLATENAME) 模板文件对象
  • filename:非必填,字符串格式,文件名
  • open_new: 非必填,布尔值,是否打开新建的文件
  • folder:非必填,文件格式,放置新文件的文件夹
    • 使用 app.vault.getAbstractFileByPath("FOLDERNAME") 获取文件对象

tp.file.move(new_path: string, file_to_move?: TFile)

将文件移动到所需的 Vault 位置。

  • new_path:文件的新库相对路径,不带文件扩展名。注意:新路径需要包含文件夹和文件名,例如/Notes/MyNote

tp.file.title

获取文章标题

2.4 tp系统

tp.system.prompt(prompt_text?: string, default_value?: string, throw_on_cancel: boolean = false, multiline?: boolean = false)

生成提示模式并返回用户的输入。

  • prompt_text:放置在输入字段上方的文本
  • default_value:输入字段的默认值
  • throw_on_cancel:如果取消提示,则抛出错误,而不是返回null值
  • multiline: 如果设置为 true,输入字段将是一个多行文本区域

2.5 控制台

ctrl + shift + i

打开控制台,查看日志

3. 示例

  • 首先 , 在 100Project 文件下创建记录文件,我这里命名为 [[100Project-Record]]
markdown
| 任务 | 计划开始时间 | 计划结束时间 | 计划天数 | 实际开始时间 | 实际结束时间 | 状态 | | ---- | ------------ | ------------ | -------- | ------------ | ------------ | ---- |
  • 然后, 通过 templater 脚本进行生成( [[1a-Project-template]]),和添加记录,脚本如下:
js
--- tags: create_time: <% tp.date.now("YYYY-MM-DD HH:mm:SS") %> --- <%* // 获取当前时间 let currentDate = tp.date.now("YYYY-MM-DD") // 输入计划开始时间 let planstartDate = await tp.system.prompt("计划开始时间(YYY-MM-DD)", currentDate, true) // 输入计划天数 let plantDay = await tp.system.prompt("计划天数(dd)", 7, true) // 计算出可能结束的时间 let mayEndDate = window.moment(planstartDate).add(plantDay, "d").format("YYYY-MM-DD") // 输入计划结束时间 let planEndDate = await tp.system.prompt("计划结束时间(YYY-MM-DD)", mayEndDate, true) // 输入项目名称 let projectName = await tp.system.prompt("项目名", "_" + planEndDate, true) // 输入项目说明 let projectIntro = await tp.system.prompt("项目说明", projectName, true, false, true) -%> - 计划开始时间:<% planstartDate %> - 计划结束时间:<% planEndDate %> - 计划天数: <% plantDay %> - 实际开始时间: - 实际结束时间: - 领域/资源: - 标签: - 关联文件: - 项目说明:<% projectIntro %> ------------ <%* // 拼接其他模板 let includeFileName = await tp.system.prompt("添加模板", "none", true) // 初始化 引入文本 let includeStr = "" // 获取文件 let includeFile = await tp.file.find_tfile(includeFileName) // 如果文件存在的话,获取引入文本 if(includeFile != null) { console.log("获取引入文本") // 引入目标模板,初始化,获得最终文本 includeStr = await tp.file.include(includeFile) } // 构建记录文件添加字符串 // 提取 [[ 防止形成外链 let changeStr = "[[" let appendRecord = "\r\n|" + changeStr + projectName + "]] | " + planstartDate + " | " + planEndDate + " | " + plantDay + " | | | 未开始|" // 获取记录文件 let recordFile = tp.file.find_tfile("100Project-Record") // 添加记录到 100Project-Record await this.app.vault.append(recordFile, appendRecord) // 移动创建文档到 100Project 下 await tp.file.move("/100Project/" + projectName) -%> <% includeStr %>
  • 创建, Alt + n , 输入模板名, Project-template ,然后依次输入信息,生成完毕

关于obsidian 查看:obsidian
关于所有插件查看:obsidian 插件
官方文档:地址

本文作者:Yui_HTT

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!