这一行:
const file = app.workspace.getActiveFile();
把它换成你想要获取的笔记:
// 指定笔记文件的路径
const filePath = "path/to/your/note.md";
// 获取对应文件
const file = app.vault.getAbstractFileByPath(filePath );
更进一步的定制可以问 AI。
这一行:
const file = app.workspace.getActiveFile();
把它换成你想要获取的笔记:
// 指定笔记文件的路径
const filePath = "path/to/your/note.md";
// 获取对应文件
const file = app.vault.getAbstractFileByPath(filePath );
更进一步的定制可以问 AI。
大佬,我想问一下,如果我在每一篇的笔记开头都添加这个目录显示,那在拥有上千个笔记的库在启动和运行时会不会很卡,因为我不了解dataview的运行方式,所以不是很清楚
你好,不会的,Obsidian 是动态加载,只有当前打开/聚焦的笔记内容会进行渲染。
另外如果想给每个笔记都加上目录,用这个代码块就有点麻烦了,可以考虑试试这个插件:
GitHub - RavenHogWarts/obsidian-ravenhogwarts-toolkit
【借楼发挥】在以上各位的基础上,我通过问AI得出新的自动生成目录代码,即无序目录代码二【经实用:如果没有一级标题,从二级标题开始,那就把第一行的1改成2,就显示正常了。】
但同时,请求教高手,是否可以把带层级序号的自动目录,改成可以缩进层级的版本【不懂,已问过多个AI,但仍然无法解决,先行谢过了】
以下两段可以在obsidian笔记软件里使用的dataview代码,无序目录代码二可以正常显示层级目录,请按此要求,修改序号目录代码一,使其也可以正常显示为层级目录,并保留序号相关设置:
const startHeadinglevel = 1; // 设置起始标题层级(1=从H1开始)
const file = app.workspace.getActiveFile();
const { headings } = app.metadataCache.getFileCache(file);
// 初始化层级计数器
let counters = [];
const raws = headings.map(p => {
const adjustedLevel = p.level - startHeadinglevel + 1;
if (adjustedLevel < 1) return ""; // 过滤低于起始层级的标题
// 扩展计数器数组到当前层级
while (counters.length < adjustedLevel) counters.push(0);
// 递增当前层级计数器,并重置子层级
counters[adjustedLevel-1]++;
for (let i = adjustedLevel; i < counters.length; i++) counters[i] = 0;
// 生成数字序号
const number = counters.slice(0, adjustedLevel).join(".") + ".";
// 计算缩进
const indent = " ".repeat((p.level - startHeadinglevel) * 4);
return `${indent}${number} [[#${p.heading}]]`;
});
// 输出带行距的段落
dv.container.style.lineHeight = "1.2em";
dv.paragraph(raws.join("\n"));
const startHeadinglevel = 1; // 现在可以设置为1
const file = app.workspace.getActiveFile();
const { headings } = app.metadataCache.getFileCache(file);
// 全列表的形式
const raws = headings.map(p => {
let repeatCount = Math.max((p.level - startHeadinglevel) * 4, 0);
let spacesPrefix = ' '.repeat(repeatCount); // 修改这里,直接使用 repeatCount
let listSign = '- ';
let linkText = `[[#${p.heading}]]`;
let headingList = `${spacesPrefix}${listSign}${linkText}`; // 简化逻辑
return headingList;
});
let result = raws.join('\n');
// 添加行距
dv.container.style.lineHeight = "1.5em";
dv.paragraph(result);