SiYuanNote 模板

编写于 1.2.1 版本

最后修改日期 : 2021 年 7 月 28 日

SiYuan 群中,一直有群友提起模板相关的问题,而帮助文档中的描述又过于粗糙.因此总结了一些在写模板过程中的一些基础知识. 本人水平有限,如有错误和描述粗糙之处,还请多多包涵.

此外,如果你是文科生,没有学过 C 语言,没有任何编程基础,那么真的不建议在模板上花费太多时间. 能够使用一些基础的样式就足够了.可以留下自己的一些构想,编写模板其实缺少的是构思和想法. 有编程基础的群友说不定会抽空把它实现出来.

思源模板主要涉及三个部分

  • Markdwon 语法
  • SQL 查询
  • go 模板语法

Markdown 语法

基础语法

kramdown 内联属性

  • style
    • color 颜色
    • background-color 背景颜色
    • width 宽度
  • flod 是否折叠 1 为折叠
  • 属性
    • alias 别名
    • name 命名
    • memo 备注
  • 超级快布局(在后面的示例中展示)

没有直接测试过,但是 html 里能放在 style 中的应该都能放在思源模板中.

TODO :而自定义的属性如何直接在模板中设置

示例

字体颜色和背景颜色
{: style="color: var(--b3-font-color1); background-color: var(--b3-font-background1);"}

居中
{: style="text-align: center;"}

- 折叠
	- 1
	- 2
	- 3
{: fold="1"}

设置属性
{: alias = TestAlias" name="TestName" memo="TestMemo"}

超级块布局
{{{col

{{{ 
第一列
}}}

{{{
第二列
}}}

}}}
思源内置的颜色

SQL 查询

基础内容

.action{$blocks :=queryBlocks 
	"SELECT * FROM blocks WHERE 
		content LIKE '?' AND 
		updated > '?' LIMIT ?" 
	"%foo%" $today "3"}

学习到何种程度? 帮助文档中的这一句话能看懂就 OK.

blocks*$blocks.ID$blocks.Path

感谢思源让我巩固了 SQL 知识

常用的技巧

  • LIKE 和 =

    • = 表示搜索结果必须于给出的一模一样
    • LIKE 配合 通配符 使用,即模糊搜索
  • ? 表示占位符 , 上例中,按照顺序依次代表后面的 "%foo%" $today "3"

  • LIMIT 限制查询结果的数目,如果没有设置会默认遵守 思源设置的搜索数目限制

  • 数据处理函数

    • length(col) 用于返回值的长度

golang 模板语法

{{ 要执行的操作 }}.action{要执行的操作}
  • 参考资料

基础语法

:==.action{/*这是注释*/}

Sprig 函数 TODO

思源中封装了该项目的函数,可以直接使用,打开该网站需要科学上网. 后续可能看情况补充一些常用的函数.

regexFind "[a-zA-Z][1-9]" "abcd1234"list 1 2 3list "hello" "world" | join "_"hello_worldhas 4 $myList$new = append $myList 6

示例

逻辑控制的示例代码会添加到 Organized/getFiles 模板中

.action{/*初始化变量*/}
.action{$var:=1}
.action{/*变量赋值*/}
.action{$var=1}
.action{/*输出变量值*/}
.action{$var}

.action{/*下面是一个使用range和 if 的小例子*/}

.action{/*获取所有文件夹路径*/}
.action{$filePathList:= list $dirPath}
.action{range $index, $v:=$block}

	.action{$filePath = (regexFind  $regexDirPath  $v.Path )}

	.action{if not (has  $filePath $filePathList)}
		.action{$filePathList = append  $filePathList $filePath}
	.action{end}
	.action{$numOfSearch = $index}
.action{end}

=$numOfSearch$idnex