模板使用颜色

使用 kramdown 语法,

  • 如果想要给部分文字加字体样式,就需要使用两个星号包裹(即加粗样式),后面带上 css style 样式({:后需要注意有一个空格,否则不能正确渲染)
  • 如果是给整个块加样式,直接把{: style="放在紧贴着这个块的下一行。
  1. **红色卡片**{: style="color: var(--b3-card-error-color);background-color: var(--b3-card-error-background);"}
  2. **橙色卡片**{: style="color: var(--b3-card-warning-color);background-color: var(--b3-card-warning-background);"}
  3. **蓝色卡片**{: style="color: var(--b3-card-info-color);background-color: var(--b3-card-info-background);"}
  4. **绿色卡片**{: style="color: var(--b3-card-success-color);background-color: var(--b3-card-success-background);"}

模板分栏

分栏语法是思源特有的超级块语法,使用三个大括号包裹 {{{col,col 代表按列,即横排;row 代表行,即竖排。类似于代码块语法,而需要分几栏其实只要按 enter 换行就好。
横排

  1. {{{col
  2. 1
  3. 2
  4. 3
  5. 4
  6. }}}

竖排
竖排的作用主要用于比如用于比如两个标题横排,如果还需要往标题添加新内容,就需要给标题及其内容加上竖向超级块,否则按enter就又会添加新的横排栏

思源目前的分栏机制,是按enter 就会创建对应的新的分栏,所以需要嵌套加竖向超级块,使得按enter变为添加行

  1. {{{row
  2. 1
  3. 2
  4. 3
  5. 4
  6. }}}

具体案例这里直接复制的是 meteor 模板的分栏。

分两栏({: style=…就是运用前面提到的 kmarkdown 进行 css 内嵌样式配置)

  1. {{{col
  2. {{{row
  3. ### ✨ fisrt
  4. {: style="color: var(--b3-card-error-color);background-color: var(--b3-card-error-background);"}
  5. - text
  6. }}}
  7. {{{row
  8. ### 🎉 second
  9. {: style="color: var(--b3-card-info-color);background-color: var(--b3-card-info-background);"}
  10. - text
  11. }}}
  12. }}}

分四栏

  1. {{{col
  2. {{{row
  3. ### ✨ fisrt
  4. {: style="color: var(--b3-card-error-color);background-color: var(--b3-card-error-background);"}
  5. - text
  6. }}}
  7. {{{row
  8. ### 🎉 second
  9. {: style="color: var(--b3-card-info-color);background-color: var(--b3-card-info-background);"}
  10. - text
  11. }}}
  12. {{{row
  13. ### ✏ three
  14. {: style="color: var(--b3-card-success-color);background-color: var(--b3-card-success-background);"}
  15. - text
  16. }}}
  17. {{{row
  18. ### 🎯 four
  19. {: style="color: var(--b3-card-warning-color);background-color: var(--b3-card-warning-background);"}
  20. - text
  21. }}}
  22. }}}

模板嵌入

  1. .action{/* ---------------模板嵌入----------------------- */}
  2. .action{/* 模板块嵌入例子1:本文档加粗文字汇总 */}
  3. 本文档加粗文字汇总
  4. {{SELECT * FROM blocks WHERE path LIKE '%/.action{.title}.sy' AND markdown LIKE '%**%**%' AND type ='p'}}
  5. .action{/* END */}
  6. .action{/* 模板块嵌入例子2:查询今天更新的所有笔记,root_id != '.action{.id}'排除了查询页面的内容 */}
  7. .action{$week := add (mod (div ((toDate "2006-01-02" "2050-03-13").Sub now).Hours 24) 7) 1}
  8. ## .action{now | date "2006-01-02"} .action{last (slice (list "星期六" "星期五" "星期四" "星期三" "星期二" "星期一" " 星期天") 0 $week )} 笔记汇总
  9. {{SELECT * FROM blocks WHERE updated > ".action{now | date "20060102"}" AND type !='d' AND root_id != '.action{.id}' order by created }}
  10. .action{/* END*/}
  11. .action{/* 模板块嵌入例子3:查询近3天更新的所有笔记,date_modify "-72h" 是调用函数=当前时间-h */}
  12. <!-- -->
  13. ## .action{(now | date_modify "-72h")| date "20060102"} - .action{now | date "2006-01-02"} 创建笔记汇总
  14. {{SELECT * FROM blocks WHERE updated > ".action{(now | date_modify "-72h") | date "20060102"}" AND type !='d' AND root_id != '.action{.id}' order by created }}
  15. .action{/* END*/}

模板静态展示 sql 查询结果

很多小伙伴对于模板查询,只知道通过 sql 查询可以作为嵌入块,其实通过循环语法是可以直接把查询的文字以纯文本形式或者块引方式展示出来的。语法如下,通过 range 对查询的块进行查询,再选择块的基本属性进行展示。需要注意的是这里块的属性是大写,而 sql 查询时块的属性表都是小写,如类型为 $b.Type 而不是 $b.type

  1. <!-- 模板sql查询循环语法 -->
  2. .action{range $b := $blocks} // 相当于for 循环
  3. .action{$b}
  4. .action{$b.ID} | .action{$b.Path}
  5. Type: .action{$b.Type}
  6. Markdown: .action{$b.Markdown}
  7. Content: .action{$b.Content}
  8. .action{end}
  9. <!-- 循环结束 -->

如果我要在笔记中查询今天或者特定日期内的所有笔记,而使用块嵌入的话,鉴于思源不支持折叠块查询的子结果,会让页面特别长。这时候使用块引展示笔记文档就很合适。

以块引形式展示今天更新的笔记

  1. ## .action{ now | date "2006-01-02 Mon "} 今天更新的笔记文档
  2. .action{$today := now | date "20060102"}
  3. .action{$next := (now | date_modify "+24h")| date "20060102"}
  4. .action{$blocks :=queryBlocks "SELECT * FROM blocks WHERE id in (SELECT root_id FROM blocks WHERE (updated >= '?' AND updated <= '?' AND root_id != '?')) order by updated DESC " $today $next .id}
  5. .action{range $v := $blocks}
  6. - ((.action{$v.RootID} ".action{$v.HPath}"))
  7. .action{end}