CSA
(CSA)
2024 年11 月 7 日 14:40
1
我在obsidian 建立了一个笔记名字叫 “1. 卡片盒” ,里面连接了很多笔记如 “1.0 卢曼是谁” , “1.1 制作目的” .想要用 templater 插件,在笔记“1. 卡片盒” 显示多个笔记,想要像 DATAVIEW 这样显示有表格的。如下:
尝试以下代码,可是一直显示错误 Templater Error: Invalid file format, provide an obsidian link between quotes.
FYI,
Obsidian 版本: V1.7.5
代码保存在 TEMPLATES/TEMPLATES1
请问以下代码是不是错误了?需要怎么调整?
<%*
const notes = ["1.0 卢曼是谁", "1.1 制作目的"]; // 笔记名称列表
let output = "| filename | tags | date | author | literature |\n";
output += "|----------|------|------|--------|------------|\n";
for (let note of notes) {
let file = await tp.file.find_tfile(note); // 查找文件
if (file) {
// 获取 YAML 属性
let tags = await tp.file.get_yaml("tags", file) || "无";
let date = await tp.file.get_yaml("date", file) || "无";
let author = await tp.file.get_yaml("author", file) || "无";
let literature = await tp.file.get_yaml("literature", file) || "无";
// 添加到输出字符串
output += `| [[${file.basename}]] | ${tags} | ${date} | ${author} | ${literature} |\n`;
} else {
output += `| ${note} | 文件未找到 | 无 | 无 | 无 |\n`;
}
}
-%>
<%= output %>
“1.0 卢曼是谁” , “1.1 制作目的” 这两个笔记已经有 YAML 属性
tags:
date:
author:
literature:
Probe
(Probe)
2024 年11 月 9 日 16:29
2
没试出来, 我理解只在类似 tp.file.include("[[Template1]]")
关键词出现时, 才会报这个 Templater Error: Invalid file format, provide an obsidian link between quotes 错, 见 generate_include()
在没有用到 include 时, 似乎不该报这个, 不太熟悉这插件可能是调用方式导致的吧, 总之先不管这个了
我拿下面的代码试成功了, 大致这个意思?
<%*
const notes = ["1.0 卢曼是谁", "1.1 制作目的"]; // 笔记名称列表
let output = "| filename | tags | date | author | literature |\n";
output += "|----------|------|------|--------|------------|\n";
for (let note of notes) {
let file = await tp.file.find_tfile(note); // 查找文件
if (file) {
// 获取 YAML 属性
// debugger
let fm = app.metadataCache.getFileCache(file).frontmatter;
let tags = fm.tags || "无";
let date = fm.date || "无";
let author = fm.author || "无";
let literature = fm.literature || "无";
// 添加到输出字符串
output += `| [[${file.basename}]] | ${tags} | ${date} | ${author} | ${literature} |\n`;
} else {
output += `| ${note} | 文件未找到 | 无 | 无 | 无 |\n`;
}
}
-%>
<% output %>
代码大部分都对, 但是一楼的 await tp.file.get_yaml("tags", file)
没这语法
而 tp 里虽有个 tp.frontmatter 它好像只能取得自身笔记的属性, 怎么让它获取 “别的某个笔记的 YFM”, 我还不会
最后我是 app.metadataCache.getFileCache(file).frontmatter.tags
代替, 这才能用
1 个赞
CSA
(CSA)
2024 年11 月 11 日 15:26
3
谢谢谢谢谢谢你!解决了我的问题!
你提及tp.file.include("[[Template1]]")
时,我才发现在新笔记写的代码错误,应该是
tp.file.include(“[[Template1]]”)
而不是
<% tp.file.include(“Templates/Templates1”) %>
我复制了你的代码后,至于显示了我想要的表格了~