五年日记(日记+dataview)

按照如下操作,可以实现n年日记的效果。

显示效果:

操作步骤:

1、创建“日记”目录

后续所有操作都在该目录下进行。

你也可以改名,dataviewjs中修改dirName的内容即可

2、创建“template”文件

3、下载dataview插件,并开启配置

4、创建“历史上的今天”文件

你也可以改名,dataviewjs中修改26行的“历史上的今天”内容即可

代码

``` dataviewjs

const dirName = "日记"; //日记存放的文件夹名称
const startYear = 2015; //日记开始的年份

// 引用的文件 yyyy-MM-dd.md
const filename = app.workspace.getActiveFile().basename;
const fileDate = moment(filename, "YYYY-MM-DD", true);

const monthDay = fileDate.format("MM-DD");
const lastYear = fileDate.year() - 1;
const currentPath = dv.current().file.path;

// 日记文件夹下所有笔记,按文件名建立索引
const pageMap = new Map(dv.pages(`"${dirName}"`).map(p => [p.file.name, p]));

let found = 0;
for (let year = lastYear; year >= `${startYear}`; year--) {
    const page = pageMap.get(`${year}-${monthDay}`);
    if (!page || page.file.path === currentPath) continue;
    found++;
    dv.header(3, `📅 ${year} 年的今天:${dv.fileLink(page.file.path, false, page.file.name)}`);
    const content = await dv.io.load(page.file.path);
    const lines = (content || "").trim().split(/\r?\n/);
    //不渲染最后一行,避免递归显示
    if (lines[lines.length - 1] === "![[历史上的今天]]") lines.pop();
    dv.paragraph(lines.join("\n").trim() || "*(空)*");
    dv.paragraph("---");
}

if (found === 0) {
    dv.paragraph("*历史上的今天没有写日记哦~*");
}
```

5、设置日记格式

6、使用自带的日记插件或者calendar插件写日记

如果已经按天写了日记,在日记末尾插入引用即可。

让ai读取“日记”文件夹,给出如下命令:
除了“历史上的今天”和“template”,在每个文件末尾,新增一行,写入“![[历史上的今天]]”