【模板分享】父文档列出第一层级子文档和最多六层级的子文档

1.2.5 将文件夹结构改成了父子文档结构,如果希望直接在父文档创建子文档的朋友,现在通过新建块引建立文档已经默认是新建成子文档了,输入【【、((加文字,或者将已有文字通过 ctrl+【,就可新建子文档。

ps:如果需要新建块引在同级文件下,可以把笔记本设置里的新建块引路径改为../,两个点号代表到上一级文件

目前来说,思源的父子文档比 notion、wolai 更加灵活,不强迫展示子文档,可以在父文档上更自由的书写总结概括或是其他内容,更灵活的利用块引,而不是简单的当作一个建站页面,暴力展示所有子文档。而文件树的架构,本来就能展示子文档,所以不会太影响查看子文档。

但如果有朋友觉得父文档空空如也很不符合习惯,可以看看我下面分享的模板。

在父文档下只展示第一层级的子文档

toc_ref_one_layer.md

.action{$docid:=.id}
.action{$block:= (queryBlocks "SELECT * FROM blocks WHERE type= 'd' AND path like '%/?/______________-_______.sy' Order BY hpath" $docid )}

.action{range $v:=$block} 
- ((.action{$v.ID} ".action{$v.Content}")) 
.action{end}

解释思路

父文档下的第一层级子文档,与其他更深层级文档的差别,就是其路径是父文档路径 + 自己 id.sy,

运用了 sql 的 like 语法,下划线代表匹配一个位置的字符,于是就暴力用下划线代表思源文件存储格式 “14 位时间码”“ +“-”+“7 位随机数.sy”

(话说不知道 sql 有没有_{14}的语法)

该模板按子文档名字顺序排序,并以无序列表的方式展示

保存方法:可以将代码 copy 到工作空间下/data/templates/ 文件夹下,新建 md 文件。
使用方法:使用斜杠菜单,选项第一个就是模板,搜索对应的名字就好

以官方文档「 0 请从这里开始」 为例

但是我突然想到

notion、wolai 的子文档可不是块引用,而是链接!

如果展示子文档全部都用块引用,岂不是大材小用??有时候会增加特别直白无用的引用关系?

块引用不应该这样使用才对啊!

于是我又稍微改动了下,用思源超链接协议展示子文档,照样可以通过点击直达子文档,只是没有块引的鼠标悬浮功能罢了。

.action{.title}

.action{$docid:=.id}
.action{$block:= (queryBlocks "SELECT * FROM blocks WHERE type= 'd' AND path like '%/?/______________-_______.sy' Order BY hpath" $docid )}

.action{range $v:=$block} 
- [.action{$v.Content}](siyuan://block/.action{$v.ID})
.action{end}

以官方文档「 0 请从这里开始」 为例

用块超链接而不是块引的好处主要有

坏处

在父文档下展示最多六层级子文档

有了前面的展示第一层级子文档,如果可以递归的话,就可以展示所有层级的子文档了
但是!!!!
我不知道模板里怎么设置函数、如何递归
所以呢,就手动 copy 几次吧!
六层也够我用了!hhh
(如果大佬们知道如何改进的话,务必告诉我!)

toc_ref 块引用版本

.action{$docid:=.id}
.action{$block:= (queryBlocks "SELECT * FROM blocks WHERE type= 'd' AND path like '%/?/______________-_______.sy' Order BY hpath" $docid )}
.action{range $v:=$block} 
- ((.action{$v.ID} ".action{$v.Content}")) 


    .action{$block:= (queryBlocks "SELECT * FROM blocks WHERE type= 'd' AND path like '%/?/______________-_______.sy' Order BY hpath" $v.ID)}
    .action{range $v:=$block}
    - ((.action{$v.ID} ".action{$v.Content}")) 
      .action{$block:= (queryBlocks "SELECT * FROM blocks WHERE type= 'd' AND path like '%/?/______________-_______.sy' Order BY hpath" $v.ID)}
      .action{range $v:=$block}
      - ((.action{$v.ID} ".action{$v.Content}"))   
        .action{$block:= (queryBlocks "SELECT * FROM blocks WHERE type= 'd' AND path like '%/?/______________-_______.sy' Order BY hpath" $v.ID)}
        .action{range $v:=$block}
        - ((.action{$v.ID} ".action{$v.Content}")) 
            .action{$block:= (queryBlocks "SELECT * FROM blocks WHERE type= 'd' AND path like '%/?/______________-_______.sy' Order BY hpath" $v.ID)}
            .action{range $v:=$block}
            - ((.action{$v.ID} ".action{$v.Content}"))   
                .action{$block:= (queryBlocks "SELECT * FROM blocks WHERE type= 'd' AND path like '%/?/______________-_______.sy' Order BY hpath" $v.ID)}
                .action{range $v:=$block}
                - ((.action{$v.ID} ".action{$v.Content}"))   

                .action{end}
            .action{end}
        .action{end}

     .action{end}  
  
    .action{end}
  
.action{end}

以官方文档「 0 请从这里开始」 为例

.action{$docid:=.id}
.action{$block:= (queryBlocks "SELECT * FROM blocks WHERE type= 'd' AND path like '%/?/______________-_______.sy' Order BY hpath" $docid )}
.action{range $v:=$block} 
- [.action{$v.Content}](siyuan://block/.action{$v.ID})


    .action{$block:= (queryBlocks "SELECT * FROM blocks WHERE type= 'd' AND path like '%/?/______________-_______.sy' Order BY hpath" $v.ID)}
    .action{range $v:=$block}
    - [.action{$v.Content}](siyuan://block/.action{$v.ID})
      .action{$block:= (queryBlocks "SELECT * FROM blocks WHERE type= 'd' AND path like '%/?/______________-_______.sy' Order BY hpath" $v.ID)}
      .action{range $v:=$block}
      - [.action{$v.Content}](siyuan://block/.action{$v.ID})  
        .action{$block:= (queryBlocks "SELECT * FROM blocks WHERE type= 'd' AND path like '%/?/______________-_______.sy' Order BY hpath" $v.ID)}
        .action{range $v:=$block}
        - [.action{$v.Content}](siyuan://block/.action{$v.ID})
            .action{$block:= (queryBlocks "SELECT * FROM blocks WHERE type= 'd' AND path like '%/?/______________-_______.sy' Order BY hpath" $v.ID)}
            .action{range $v:=$block}
            - [.action{$v.Content}](siyuan://block/.action{$v.ID})  
                .action{$block:= (queryBlocks "SELECT * FROM blocks WHERE type= 'd' AND path like '%/?/______________-_______.sy' Order BY hpath" $v.ID)}
                .action{range $v:=$block}
                - [.action{$v.Content}](siyuan://block/.action{$v.ID})  

                .action{end}
            .action{end}
        .action{end}

     .action{end}  
  
    .action{end}
  
.action{end}

以官方文档「 0 请从这里开始」 为例

本文涉及的模板下载:https://achuan.lanzoui.com/imjpbsy9g5c

思源笔记订阅推荐码:B3XX0Y8,在买会员时使用订阅推荐码可增加 500 MB 云端空间和 7 天使用期。送给有需要的朋友,谢谢。
使用我推荐码的朋友,我可以免费帮忙个性化主题,粉的、黄的、紫的都可以,Tsundoku 主题品质信赖。

广告 我要投放

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • Achuan-2
    订阅者 作者

    思源是支持无序列表直接转换为有序列表的,点击无序列表的大块标就好了。有序应该是可以,稍微麻烦点

  • 其他回帖
  • a1993613
    支持者 订阅者

    666,多谢分享 👍

  • Achuan-2
    订阅者 作者

    块引是双向的,搞的多了,反链、提及等功能都要解析,booting 加载肯定会慢。

    而块超链接是单向的,目前用的再多也不会影响加载速度,并且复制到外部也可以使用

    1 回复
    1 操作
    Achuan-2 在 2021-08-21 15:07:14 更新了该回帖
  • a1993613
    支持者 订阅者

    所以这两种方式各有什么优劣呢?不是很懂,推荐用哪种?

    1 回复
  • 查看全部回帖