所需插件:Templater , Dataview
为页面创建页面 footer 引用
效果图,主要可以很方便链接跳转到其他md文档。
- 创建footer模板,并编写Dataview
- 在需要的页面引用
创建footer模板
在任意文件创建一个页面,并写入需要的footer内容,例:
<!-- 在非模板文件夹创建footer.md,内容如下-->
## footer
| [[note agenda]] | [[agenda2]] | [[agenda3]] |
| ----------------------------------------------- | ----------- | ----------- |
| `$=dv.list(dv.pages('"文件夹路径"').file.link)` | | |
还可以加入 dv.list() 的限制条件:
.where(c => {if(c.type == "project" && c.status != "close"){return c}})
让列表为当前目录及子目录下的所有md文件:
'"文件夹路径"' 替换为:app.workspace.getActiveFile().parent.path
<!-- 当在任何页面引用时,都会替换为当前文件目录及子目录下的所有md文件-->
在需要的页面引用
- 可以在模板文件夹新建一个页md文件,方便直接快捷引用,例:
<!-- 模板文件夹中新建的插入footer的文件内容,在任意页面直接插入或包含在模板中即可-->
## ![[footer-Template#footer]]
获取当前目录的任意文件列表
效果图,好处是文件夹任意文件变动后,都可以实时更新。
- 任意页面新建 dataviewjs 代码块,代码如下
let a, b, d = new Array(), e = new Array(), g = app.workspace.getActiveFile().parent;
a = app.vault.getFiles();
b = g.path;
for(let i in a){
if(a[i].path.indexOf(b) == 0 && a[i].extension != "md"){
// a[i].path.indexOf(b) == 0 通过indexOf()判断为当前目录及子目录
// a[i].extension != "md" 排除md文档类型
d.push(a[i])
}
}
for (let group of dv.array(d).groupBy(p => p.parent.path)){ e.push(group); }
dv.table(["Path","File","mtime","ctime","size"],
e
.map(f => [f.key.replace(g.path, function(h){if(h == f.key){return ".";}else{return ".";}}),
f.rows.map(p => "[[" + p.name + "]]"),
f.rows.map(p => new Date(p.stat.mtime).toLocaleDateString()),
f.rows.map(p => new Date(p.stat.ctime).toLocaleDateString()),
f.rows.stat.size])
)
也可以在任意页面引用代码块,实现动态获取当前文件夹下的所有非md文件;
注:还没能解决在同单元行中的文件排序问题,欢迎大神帮忙