【搭建你的日记本】一个够用的主页

最终效果如图所示:

需要用到的插件:

  • Homepage
  • Activity History
  • Dataview
  • Calendar

正如上篇文章 【搭建你的日记本】在文章正文中添加天气信息中所说的,我将日记从DayOne迁移到了Obsidian。DayOne有一个很漂亮的首页,能够显示已经记录的日记篇数,以及连续记录的天数,还有一个很好看的时间线,可以看到自己每天记录的内容。这篇文章主要介绍如何搭建一个实用的主页。

主页

Homepage插件可以锚定一个页面作为首页,每次启动Obsidian的时候都会显示这个页面,我们只需要照常创建一个笔记,然后将其在Homepage中设置为主页即可:

足迹

足迹这一模块由两个部分组成,上方是一个类似Github的热力图,下方是一个简单的统计总结。

热力图通过插件Activity History实现,这个插件几乎不需要什么设置,只需要在设置里给出要追踪的目录即可,剩下的就是自定义的部分,可以自定义不同热度在热力图中的颜色。


统计总结使用Dataview实现,代码如下:

今天是`=dateformat(date(today),"DD")`,`=date(today).year` 年已经过去了 `=(date(today)-date(date(today).year + "-01-01")).days` 天
今年你总共在`$=dv.pages('"日记/2023"').file.length`天中留下了你的足迹,继续加油!

这里有个小坑,原以为Dataview可以像SQL一样直接通过COUNT来计数,结果似乎是不可以的。所以这里参照这篇文章中的方法用dataviewjs来实现。内联的dataviewjs代码需要在设置中开启,而且dataview前面写=,dataviewjs前面写$=,这点不同需要稍微注意一下。


那年今日

那年今日的功能可以用Dataview查询实现,代码如下:

今天是 =dateformat(date(today),"DD"),那年今日,你曾记录过:

table WITHOUT ID file.link AS "日记", dateformat(file.ctime,"DD") AS "创建时间", dateformat(file.mtime,"DD  HH:mm:ss") AS "最近修改时间"
from "日记" 
where dateformat(file.ctime,"MM-dd") = dateformat(date(today),"MM-dd") 
limit 100

筛选出创建时间中的月份日期和今天相同的文档即可。

Future

  • Activity History插件追踪的是文件的个数,而非字数,作为日记本而言,一天可能只会建立一篇日记,所以热度图的颜色没有特别大的意义
13 个赞

请问,如果我想看在obsidian的编辑文字的活跃度的话,这个dataview应该怎么写呢

1 个赞

活跃度是指什么呢,是每天写的内容字数吗,还是更新的频率

请问,怎么把热力图插入到homepage的页面中呢?

那年今天的代码,贴上去没反应。

1 个赞

有用Dataview的格式吗,前面后面的```

1 个赞


搞成了,谢谢大佬。

1 个赞

作者,我这个为什么显示0天啊
image

1 个赞

斗胆猜一下,你可能没有“日记/2023"文件夹

今年你总共在`$=dv.pages('"日记/2023"').file.length`天中留下了你的足迹,继续加油!

上面这段是检测你“日记/2023”文件夹里的文件数量,如果你没有这个文件夹,或者路径不一样,需要自己修改。

这个热力图可以详细说说怎么设置的吗? 怎么设置追踪的目录呢?

1 个赞

哦哦哦 :grinning:十分感谢回复,没注意到 :grimacing: