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

最终效果如图所示:

需要用到的插件:

  • 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插件追踪的是文件的个数,而非字数,作为日记本而言,一天可能只会建立一篇日记,所以热度图的颜色没有特别大的意义
9 个赞

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

1 个赞

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

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