思源 0 篇文章

全局只读

seehttps://ld246.com/article/1743562949886 设置-编辑器-只读模式这个是打开全局只读模式的,所有文档变为只读。需要单独编辑某文档,只需要点击它右上的小锁图标,就能解锁编辑。快捷键 shift+cmd/ctrl+g‍

在文档树中定位文档

(siyuan?.mobile?.docks?.file||siyuan?.mobile?.files||siyuan.layout.leftDock.data.file).selectItem(notebookId,path)比如(siyuan?.mobile?.docks?.file||siyuan?.mobile?.files||siyuan.layout.leftDock.data.file

删除菜单的方法

​window.siyuan.menus.menu.remove();​​document.body.click();​constmenuItems=document.querySelector('#commonMenu.b3-menu__items');if(menuItems)menuItems.innerHTML='';‍

判断文档树文件夹是否展开

letclicking=false;ul.addEventListener('click',async(event)=>{constli=event.target.closest('li[data-node-id]');if(li.querySelector('.b3-list-item__toggle.fn__hidden'))return;if(clicking)return;clicking=

sql 通过 parent_id 递归获取祖先元素

sql 通过 parent_id 递归获取祖先元素
seehttps://ld246.com/article/1743473205973 需求:比如如下数据库中,主键 id 是事件列,比如图中的任务项“工时登记”;然后项目列是模板列,在这个模板中获取“工作备忘”这个文档的文档标题和 h2 标题(通过文档中的任务项“工时登记”的块 id 获取,这个 id 也同时是数据库中的主键 id);即通过任务块的 id 获取该文档的标题和任务块的上级 h2 标题,然后实现方式是用数据库的模板

刷新文档

seehttps://github.com/siyuan-note/siyuan/issues/10243protyle.reloadthis.protyleSlash=[{filter:["insertemoji\u{1F60A}","\u63D2\u5165\u8868\u60C5\u{1F60A}","crbqwx"],html:`<divclass="b3-list-item__first"

提供重建单个文档索引的 API

seehttps://github.com/siyuan-note/siyuan/issues/5719 这个接口暂时不加入 API 文档中;使用方式如下:POSThttp://127.0.0.1:6806/api/filetree/reindexTree{"path":"/data/20210808180117-czj9bvb/20200812220555-lj3enxa.sy"}

生成文档树列表项

seehttps://ld246.com/article/1741359650489pc 端//第一步调用 listDocsByPath 获取文档树文档信息//fetchSyncPost('/api/filetree/listDocsByPath',{notebook:'20240723175050-336994k',path:'/20240728220858-adaleye'})//第二步调用 genFi

思源事件原理

思源事件原理
思源把插件名称生成注释 dom 结点,然后把相关事件绑定其上,在需要触发的地方通过遍历所有插件,调用 emit 进行触发。seehttps://github.com/siyuan-note/siyuan/blob/0b0c27b0bad3e2a073f61ed28c6ce76d2f2b4b07/app/src/plugin/EventBus.ts#L7 示例:seehttps://ld246.com/arti

行内自定义元素和属性

行内自定义元素和属性
seehttps://github.com/siyuan-note/siyuan/issues/13325 关联:块自定义元素和属性只能用 span,且不能嵌套,只能叠加自定义属性 custom-xxx 和 data-type 值修改或生成后,需要调用 input 事件触发比如:letmemoELement=document.querySelector(`span[data-id="${newBlockId}"]`

创建指定日期的日记

seehttps://ld246.com/article/1741777522652 参考这个:https://github.com/frostime/siyuan-plugin-kits/blob/667c2621ebc6fa11028e4e53e447afc5f00639ea/src/dailynote.ts#L72 不想自己实现也可以手动安装 npminstall@frostime/siyuan-p

给高亮搜索插件自动填入选中文本

seehttps://ld246.com/article/1729773295142 必须设置快捷键 ctrl+f​才行(()=>{//等待元素渲染完成后执行 functionwhenElementExist(selector){returnnewPromise(resolve=>{constcheckForElement=()=>{letisExist=false;if(typeofselector==

表格和数据库联动

表格和数据库联动
seehttps://ld246.com/article/1741622377103//!js//数据库块 idconstavBlockId='20250311063435-9066xpv';//表格块 idconsttableBlockId='20250311063452-p03kxva';//数据库变更后自动更新延迟,单位是毫秒,默认是 1 秒,0 则不自动更新//注意:更新该参数后需要刷新页面才能生效 c

图表和数据库联动

图表和数据库联动
seehttps://ld246.com/article/1722828811581 类似 https://ld246.com/article/1740558177875 类似 https://ld246.com/article/1741622377103 表格和数据库联动当数据库更新数据时,图表会自动更新数据哦。效果如下原理:通过 echarts 中的脚本,动态获取数据库块的数据,然后把数据再格式化为图表的数据

调用 Lute 的正确方式

seehttps://github.com/siyuan-note/siyuan/issues/14310seehttps://ld246.com/article/1741527865453‍调用方式:getLute().Md2BlockDOM(xxxxx);​封装函数如下:functiongetLute(){constsetLute=(options)=>{constlute=window.Lut