分享数据库模板列的一些有趣实现

显示文档题头图

我个人对显示文档题头图有异常的执着,之前用 Query 挂件的时候硬写了一个解析题头图的 SQL。

.action{$id := .id}
.action{$blockList := queryBlocks "SELECT * FROM blocks WHERE id = '?'" $id}
.action{$block := first $blockList}
.action{$backgroundImageList := regexFind `background-image:url\(.*\)` $block.IAL}
.action{$backgroundImage := toString $backgroundImageList }
.action{$backgroundImage :=  $backgroundImage | replace "&" "&"}
.action{$backgroundImage := trimPrefix `background-image:url("` $backgroundImage }
.action{$imageUrl := trimSuffix `")` $backgroundImage }
<img src=".action{$imageUrl}" class="av__cellassetimg" style="max-height:none;max-width: 100%;vertical-align: middle;" >

压缩代码

.action{$id := .id}.action{$blockList := queryBlocks "SELECT * FROM blocks WHERE id = '?'" $id}.action{$block := first $blockList}.action{$backgroundImageList := regexFind `background-image:url\(.*\)` $block.IAL}.action{$backgroundImage := toString $backgroundImageList }.action{$backgroundImage :=  $backgroundImage | replace "&" "&"}.action{$backgroundImage := trimPrefix `background-image:url("` $backgroundImage }.action{$imageUrl := trimSuffix `")` $backgroundImage }<img src=".action{$imageUrl}" class="av__cellassetimg" style="max-height:none;max-width: 100%;vertical-align: middle;" >

运行 JS 代码

<img onload="
this.onload = null;
let buttonElement = document.createElement('button');
buttonElement.innerHTML = 'Click me';
buttonElement.onclick = function() {
   alert('Button clicked!');
};
this.replaceWith(buttonElement);
" src="data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=">

代码附件

因为编辑器会把 html 转义符号内容给转义,所以显示文档题头图代码直接从上面的代码块中复制无法使用,如果想要直接复制,可以下载这 个 txt 进行复制:数据库模板列的一些有趣实现.zip

效果演示

  • 思源笔记

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

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

    18807 引用 • 70365 回帖 • 1 关注
2 操作
MisakaImouto 在 2024-04-03 18:17:37 更新了该帖
MisakaImouto 在 2024-03-08 14:33:34 更新了该帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • MisakaImouto

    发现用代码块包裹住,转义符号的内容还是被转义了,这里加上截图代码,方框标记了代码块中被转义的内容,需要手动替换。

    image.png

  • 大佬给个截图参观一下

    1 回复
  • MisakaImouto

    帖子已更新演示视频 😄

    1 回复
  • 这有点超纲啊。。要能根据名字或者 imdb 号之类的去下载豆瓣之类的封面、评级啥的填充数据库那更好了。

    1 回复
  • MisakaImouto

    这个功能估计需要插件才可以完成了 😳,模板列适合查内部已经存在的数据。

  • liptshang

    提醒一下,这个做法仅适用于较小的数据库,或者没有其他列的数据库,因为一行需要执行一条 sql,50 行就需要执行 50 条 sql,基本上是点一下就要卡一下的程度(秒级卡顿)。我目前有一个 200 行的数据库,有一个这样的模板列,渲染需要 4.5s 左右;另一个 40 行的数据库,有四个这样的模板列,渲染也需要 4.5s 左右(这个时间有点飘忽不定,有时候是 6s 左右)。由于思源目前对于模板列的渲染方式需要在后端计算出整个表格(我猜的,因为假如要对模板列进行筛选,就必须要先计算出所有的值),所以分页并不能提升反应速度。之前我也有想过分享类似的用法,但是被响应时间给劝退了 😂 看下 D 大能不能优化一下这个 @88250

    1 回复
  • 88250 1 赞同

    这个主要看是否绑定块,绑定的话要加载块,所以比较慢,后续看看能否优化了。

请输入回帖内容 ...