日记与数据库模板列的结合使用分享

本贴最后更新于 226 天前,其中的信息可能已经物是人非

上示例

这是我的日记模板

image.png

这是加入到数据库中后的效果,可以自动获取日记中的属性

image.png

上代码

初版代码

.action{$key := "关键词:"}
.action{$ret := queryBlocks "SELECT * FROM blocks WHERE root_id = '?' AND type = 'p' AND content LIKE '?%' LIMIT 1" .id $key}
.action{if len $ret}
.action{$val := first $ret}
.action{trimPrefix $key $val.Content}
.action{end}

这个代码是要放到数据库的模板列里面的

只需要把第一行 $key 的值改成你的字段名,其他的内容不动,像我的日记模板里面,对应的就是 $key := "天气:" $key := "星星:" $key := "关键词:"

这时候,细心的小伙伴就会发现我的关键词样式不是纯文本

我在这里加了点样式,参考了数据库的多选样式,再加上随机数取巧来实现随机颜色

我的关键词是根据","中文逗号进行的分割,大家在实际使用中根据自己的需求替换下面第六行中的符号即可

.action{$key := "关键词:"}
.action{$ret := queryBlocks "SELECT * FROM blocks WHERE root_id = '?' AND type = 'p' AND content LIKE '?%' LIMIT 1" .id $key}
.action{if len $ret}
.action{$val := first $ret}
.action{$str := trimPrefix $key $val.Content}
.action{$list := splitList "," $str}
.action{ range $v := $list }
.action{$a := randInt 1 13}
<span class="b3-chip" style="background-color:var(--b3-font-background.action{$a});color:var(--b3-font-color.action{$a})">.action{$v}</span>
.action{end}
.action{end}

总结

个人用不太习惯反链形式的无压日记记录,我的日记的关键字承担的功能是一天中的事情总结

其实很早之前就想将日记的 关键字块 添加到数据库中了,目的是方便我快速全览查找某天发生了什么事

但是手动将事件一个个加到数据库很繁琐,所以一直没有动手,直到我在一个帖子看到 @liptshang 提供的攻略,才促使我开始研究。

目前还是有一个缺憾,就是新建的日记不能自动添加到数据库,如果这个功能能够实现那就完美了

另外,我自己试了下,关键字分割后加了随机颜色的样式,数据多了会比较花,实际阅读效率似乎低于不分割直接展示,这就看自己的选择了。

感谢

感谢 @Frostime思源模板功能新人指南:模板语法 + 函数 + md 块语法 - 链滴 (ld246.com)

感谢 @liptshang 在帖子中的经验分享数据库一些列的值能否自动获取文档里的数据 - 链滴 (ld246.com)

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    23108 引用 • 93044 回帖
1 操作
jihui 在 2024-05-14 17:06:56 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 目前还是有一个缺憾,就是新建的日记不能自动添加到数据库,如果这个功能能够实现那就完美了

    关联 Issue #10863 · siyuan-note/siyuan

  • 其实我感觉本质上还是这个:官方有无计划支持在文档开头显示数据库属性 - 链滴 (ld246.com)

    只要官方支持的话,也就不用费力写模板列来实现了 emmm

    虽然社区大佬们也在开发,不过目前相关插件开发已经搁置,相关挂件的作者也明确说不考虑增加编辑功能

  • huaingabc

    礼貌提问:可以实现直接抓取日记内容里的文字作为关键词吗?不用专门输入“关键词:”;比如:“今天去了广州动物园看老虎”,直接可以抓取“广州”作为关键字;

    感谢分享!

    1 回复
  • jihui

    主要是你每篇日记的关键字不一样,没有一个统一的关键字作为切入点就意味着你需要给每篇日记单独写定制代码,更关键的是你一列的关键字一般都是一样的,按你这种需求就跟我的实现不对应,需要多个列对应不同的关键字。

    我用关键字的目的就是作为一个统一的切入点,将当天的事件简称放在这,然后在数据库快速全览找到这个事对应的日记,然后进去看下面的详细内容,也就是说我在维护日记的同时还需要在关键字这里维护当天的事件简称。

  • CuiHS

    @jihui 请问一下,我尝试把你这个模板放入数据库中,但好像不起作用啊,是我哪里做错了?

    由于我那个是无序列表,所以把关键字改了,SQL 语句中的 type 改成了 l,但依然显示不出任何字符。

jihui
可是,现在是春天,一切的好事都应该有权利发生。