跳转到主要内容

Obsidian 插件 Templater

Templater 让新建笔记自动带上日期、标题和交互式输入,模板里还能直接写 JavaScript。下面是我常用的 tp.* 语句,以及两个现成的代码片段:给正文加天气信息、用选择框插入 Callouts。

教程

语句

tp.file

  • 文件标题 <% tp.file.title %>
  • 创建时间 <% tp.file.creation_date() %>

tp.date

  • 今天 <% tp.date.now("YYYY-MM-DD") %>
  • 明天 <% tp.date.now("YYYY-MM-DD", 1) %>
  • 明天 <% tp.date.tomorrow("YYYY-MM-DD") %>
  • 昨天 <% tp.date.now("YYYY-MM-DD", -1) %>
  • 昨天 <% tp.date.yesterday("YYYY-MM-DD") %>

tp.system

  • 提示输入 <% tp.system.prompt("请输入内容") %>
  • 选择输入 <% tp.system.suggester(["待办","进行中","完成"],["待办","进行中","完成"],true,"提示内容") %>

代码片段

在文章正文中添加天气信息

来源:【搭建你的日记本】在文章正文中添加天气信息 - 经验分享 - Obsidian 中文论坛

<%* 
let url = 'https://www.tianqi.com/beijing/' 
let res = await request({url: url,method: "GET"}); res = res.replace(/\n/g,'')
let dqwd = /<p class="now"><b>(\d+)<\/b><i>℃<\/i><\/p>/.exec(res) 
let tqwdfw = /<span><b>(.*?)<\/b>(.*?)<\/span>/.exec(res) 
let sdfxzwx = /<dd class="shidu"><b>(.*?)<\/b><b>(.*?)<\/b><b>(.*?)<\/b><\/dd>/.exec(res) 
let kqzlrcrl = /<dd class="kongqi" ><h5 style="background-color:#[0-9a-z]{6};">(.*?)<\/h5><h6>(.*?)<\/h6><span>(.*?)<br \/>(.*?)<\/span><\/dd>/.exec(res) 
let 当前温度 = '当前温度:' + dqwd[1]+'℃' 
let 天气 = '天气:' + tqwdfw[1] 
let 温度范围 = '温度范围:' + tqwdfw[2] 
let 湿度 = sdfxzwx[1] 
let 风向 = sdfxzwx[2] 
let 紫外线 = sdfxzwx[3] 
let 空气质量 = kqzlrcrl[1] + ' ' + kqzlrcrl[2] 
let 日出日落 = kqzlrcrl[3] + ' ' +kqzlrcrl[4] 
-%>
<% 当前温度 %> 
<% 天气 %> 
<% 温度范围 %>
<% 湿度 %> 
<% 风向 %>
<% 紫外线 %>
<% 空气质量 %> 
<% 日出日落 %>
选择样式插入 Callouts

来源:obsidian templater终极指南 | 轻松记笔记的技巧_哔哩哔哩_bilibili

<%*
const callouts = {
note: '🔵 ✏ Note',
info: '🔵 ℹ Info',
todo: '🔵 🔳 Todo',
tip: '🌐 🔥 Tip / Hint / Important',
abstract: '🌐 📋 Abstract / Summary / TLDR',
question: '🟡 ❓ Question / Help / FAQ',
quote: '🔘 💬 Quote / Cite',
example: '🟣 📑 Example',
success: '🟢 ✔ Success / Check / Done',
warning: '🟠 ⚠ Warning / Caution / Attention',
failure: '🔴 ❌ Failure / Fail / Missing',
danger: '🔴 ⚡ Danger / Error',
bug: '🔴 🐞 Bug',
};

const type = await tp.system.suggester(Object.values(callouts), Object.keys(callouts), true, '选择 callout 类型');
const fold = await tp.system.suggester(['无', '展开', '折叠'], ['', '+', '-'], true, '选择 callout 折叠选项');

const title = await tp.system.prompt('标题:', '', true);
let content = await tp.system.prompt('内容 (Shift + Enter 换行):', '', true, true);
content = content.split('\n').map(line => `> ${line}`).join('\n')  

const calloutHead = `> [!${type}]${fold} ${title}\n`;

tR += calloutHead + content
-%>