wilsons
关注
142093 号成员,2024-05-12 13:24:23 加入
2.2k
个人主页 浏览
1.5k
帖子 + 回帖 + 评论
人生最大的敌人是自己,战胜自己,才能超越一切。
  • 如何查询所有外观调整过的块?

    2025-04-03 17:08

    @JeffreyChen 原来如此,块上还可以加样式

    这样应该可以,再不行就不知道了,原理没问题,涉及细节东西只能根据自身情况具体问题具体分析了

    select * from blocks where path like '%/20250313235710-3zalpkc%' and (markdown like '%background-color: var(--b3-card-success-background); color: var(--b3-card-success-color);%' or ial like '%background-color: var(--b3-card-success-background); color: var(--b3-card-success-color);%');
  • 如何查询所有外观调整过的块?

    2025-04-03 16:33

    不清楚,我这边正常

    image.png

  • 如何查询所有外观调整过的块?

    2025-04-03 15:09
    select * from blocks where path like '%/20250403065429-4huyq4c%' and markdown like '%background-color: var(--b3-card-success-background); color: var(--b3-card-success-color);%';
  • 请问超级块边框如何设置阴影?

    2025-04-02 18:14

    需要什么效果让 ai 帮忙改 box-shadow 就行了

    .sb[data-sb-layout="row"]{ box-shadow: 4px 4px 10px 0 rgba(0, 0, 0, 0.1); /* 设置阴影,需要什么效果让ai帮忙改就行 */ padding-left:5px!important; /* 左边距大小,不需要删除这行即可 */ }

    image.png

  • [js] 有什么办法能让回车不创建文档?

    2025-04-02 16:57

    改变 dataset 类型值就好了,如下代码

    可参考 https://github.com/siyuan-note/siyuan/blob/1317020c1791edf440da7f836d366567e03dd843/app/src/search/util.ts#L798

    // 搜索不到时回车不新建文档(鼠标点击可新建) // see https://ld246.com/article/1743579723972 (()=>{ observeSearchNewDocDom((searchNew) => { // 加载时修改类型 searchNew.dataset.type = 'search-new-disabled'; // 点击时恢复类型 searchNew.addEventListener('click', function(event) { searchNew.dataset.type = 'search-new'; }); searchNew.querySelector('.b3-list-item__meta').textContent = '点击创建'; if(searchNew.nextElementSibling && searchNew.nextElementSibling.matches('.search__empty')) { searchNew.nextElementSibling.textContent = `搜索结果为空,点击创建新文档`; searchNew.nextElementSibling.addEventListener('click', function(event) { searchNew.click(); }); } }); function observeSearchNewDocDom(callback) { // 创建一个观察者实例并传入回调函数 const observer = new MutationObserver(async (mutationsList, observer) => { for (const mutation of mutationsList) { if (mutation.type === 'childList') { mutation.addedNodes.forEach(node => { // 监控搜索新建文档dom被加载 if (node.nodeType === 1 && node.matches('#searchList [data-type="search-new"]')) { callback(node); } }); } } }); // 配置观察选项: const config = { childList: true, // 观察子节点的变化(添加/删除) subtree: true, // 观察所有后代节点 attributes: false, }; // 选择需要观察变动的节点 const targetNode = document.body; // 或者选择更具体的父节点以减少性能消耗 // 开始观察目标节点 observer.observe(targetNode, config); // 返回一个取消观察的方法 return () => observer.disconnect(); } })();

    该代码回车不创建文档,点击创建,保留了一部分原本功能。

  • 如何查询所有外观调整过的块?

    2025-04-02 15:11

    大概是

    select * from blocks where path like '%/你的文档id%' and markdown like '%你的字体颜色关键词%';

    至于字体颜色关键词,颜色,字体颜色,背景色,字体效果,关键词都不一样,根据自己需要查询

    多个可通过 and (markdown like '% 你的字体颜色关键词 %' or markdown like '% 你的字体颜色关键词 %') 进行组合

    可通过开发者工具查看具体颜色关键词,比如

    image.png

  • 红尘练心,五年一回

    2025-04-02 14:54

    做没做过不重要,只要需求说清楚一样可以做。

  • 搜索结果字号和行距更改求助

    2025-04-01 22:10

    可以,其他样式,行高啥的你可以自己加

    .search__header [data-type="set-criteria"] { font-size: 16px; margin: 2px; }
  • 搜索结果字号和行距更改求助

    2025-04-01 21:05

    具体大小可根据自己情况修改

    [data-type="search-item"] { font-size: 16px; line-height: 25px; min-height: 25px; }
  • 求获取数据库主键所在的二级标题模板代码

    2025-04-01 12:43

    刚才看你代码,感觉你这里的主键 id 应该是块 id,不是文档 id,上面的 SQL 仅对主键 id 是文档 id 才有效

    如果主键是块 id,加上模板仅支持 select * 查询

    需要用下面的 SQL,分别查询标题和 h2,然后用模板函数 cat 拼接到一起

    查标题还用你之前的 SQL 就行

    select * from blocks where id in (select root_id from blocks where id='20250401135156-8k4wks2');

    查 h2 用下面这个,通过 parent_id 递归查询

    WITH RECURSIVE ancestors AS ( -- 初始查询:从已知 id 开始 SELECT * FROM blocks WHERE id = '20250401135156-8k4wks2' UNION ALL -- 递归查询:通过 parent_id 向上遍历 SELECT b.* FROM blocks b INNER JOIN ancestors a ON b.id = a.parent_id ) -- 最终查询:筛选满足条件的记录 SELECT content as h2 FROM ancestors WHERE type = 'h' AND subtype = 'h2';

    别忘了在模板中具体 id 值改成?号


    转换为模板代码示例如下

    .action{ $h2Blocks := queryBlocks `WITH RECURSIVE ancestors AS (SELECT * FROM blocks WHERE id = '?' UNION ALL SELECT b.* FROM blocks b INNER JOIN ancestors a ON b.id = a.parent_id) SELECT * FROM ancestors WHERE type = 'h' AND subtype = 'h2'` .id } .action{ $blocks := queryBlocks "select * from blocks where id in (select root_id from blocks where id='?')" .id } .action{ if and (not (empty $blocks)) (not (empty $h2Blocks)) } .action{ $blockContent := (cat (first $blocks).Content "-" (first $h2Blocks).Content ) } .action{$blockContent} .action{ end }

    模板中用 cat 函数会在 - 前后产生一个空格,如果不想要这个空格,如下解决

    .action{ $blockContent := (cat (first $blocks).Content "-" (first $h2Blocks).Content ) }

    改为

    .action{ $blockContent := (list (first $blocks).Content (first $h2Blocks).Content | join "-") }
  • 插件如何刷新数据库

    2025-04-01 12:01

    建议再加个重新加载文档树吧 /api/filetree/reloadFiletree,比如 A 端更新了树样式,希望 B 端同步后,重新生成文档树

    目前的做法是 B 端一个个遍历重放,比较麻烦。

  • 求获取数据库主键所在的二级标题模板代码

    2025-04-01 11:49

    简单方式,分开查询,然后用模板拼接起来应该可以吧

    select content as title from blocks where id = '20250126175945-876nap9'; select content as h2 from blocks where root_id='20250126175945-876nap9' and type = 'h' and subtype='h2';

    或者合并到一条 SQL

    SELECT (SELECT content FROM blocks WHERE id = '20250126175945-876nap9') AS title, (SELECT content FROM blocks WHERE root_id = '20250126175945-876nap9' AND type = 'h' AND subtype = 'h2') AS h2;

    或者用 join

    SELECT b1.content AS title, b2.content AS h2 FROM blocks b1 LEFT JOIN blocks b2 ON b1.id = '20250126175945-876nap9' AND b2.root_id = '20250126175945-876nap9' AND b2.type = 'h' AND b2.subtype = 'h2' WHERE b1.id = '20250126175945-876nap9' LIMIT 1;
  • [js] 文档树文档置顶和设置颜色 [0.0.8 完美版]

    2025-03-31 16:53

    0.0.7 新增防止重复执行和多端同步时自动更新置顶的文档

    可配合下面的同步感知,实时更新置顶状态和颜色信息,完美!

    白嫖党的福利,js 片段实现同步感知

  • 怎样使用 AI 进行错别字纠正?

    2025-03-31 14:24

    调用 ai api 加上类似这种提示词应该就可以了吧

    你是一个文本纠错专家,纠正输入句子中的语法错误,并输出正确的句子,输入句子为:xxxxx

    简单的直接复制到 ai 网站让帮助纠错后再复制回来也行吧。

  • 求教代码块在使用 shift+tab 缩进的时候,部分从别的软件贴过来的代码无法正常使用 shift+tab 缩进

    2025-03-31 13:54

    image.png

    把这个设置为 4,大部分软件都可以,不可以的就先把 tab 转换为空格后再粘贴

  • [js] 文档树文档置顶和设置颜色 [0.0.8 完美版]

    2025-03-30 20:07

    更新至 0.0.6 增加用户配色方案;改进当存在用户配置文件时默认配置不再生效;增加置顶到顶层功能(右键菜单中按 shift(手机端长按置顶)可置顶到顶层)

  • 求隐藏已完成任务块的代码片段

    2025-03-30 10:36

    有 bug 耶,无法保存显示隐藏状态,刷新显示状态就没了。

    解决办法:

    1 把之前的代码块代码改成这个

    // 隐藏所有已完成任务 async function main() { // css 代码 const styleContent = ` [data-type="NodeListItem"][data-subtype="t"].protyle-task--done { display: none; } `; // 定义 style 的内容 const styleId = "ShowOrHideAllDoneTask"; // 判断是否加载 const isLoading = args.includes('load'); // 获取存储状态 let status = await api.getFile('/data/storage/'+styleId+'.json'); if(!status || status.code === 404) { status = 'show'; } else { status = status.status || 'show'; } if(!isLoading) status = status === 'show' ? 'hide' : 'show'; if (status === 'show') { // 获取现有的 <style> 元素 let styleElement = document.getElementById(styleId); // 如果存在,则删除它 if(styleElement) styleElement.remove(); if(!isLoading){ await client.pushMsg({ msg: "已显示完成的任务", timeout: 3000, }); await api.putFile('/data/storage/'+styleId+'.json', false, new Blob(['{"status":"show"}'])); } } else { // 如果不存在,则创建并添加它 const newStyle = document.createElement("style"); newStyle.id = styleId; newStyle.textContent = styleContent; document.head.appendChild(newStyle); if(!isLoading){ await client.pushMsg({ msg: "已隐藏完成的任务", timeout: 3000, }); await api.putFile('/data/storage/'+styleId+'.json', false, new Blob(['{"status":"hide"}'])); } } } main(); plugin.saveAction(thisBlock.id, "显示/隐藏所有已完成任务");

    2 给 js 代码块命名为 ShowOrHideAllDoneTask

    image.png

    3 把代码块保存为可调用方法

    image.png

    4 添加新的 js 代码片段(注意是设置/外观/代码片段,不是编辑器里的代码块),代码片段中输入以下代码即可

    runJs.plugin.call('ShowOrHideAllDoneTask', 'load')

    image.png

  • 寻找一个类似思源插件 web 集成的电脑应用

    2025-03-29 15:12

    浏览器可以使用 Ctrl + Tab 切换标签,或者使用 Ctrl + Shift + Tab 来切换到上一个标签页。如果你想直接跳转到特定的标签页,可以使用 Ctrl + 数字键(1 到 8),其中数字代表标签页的位置。如果你想切换到最后一个标签页,可以使用 Ctrl + 9

    固定标签可以常驻标签,好像还有插件可以把标签页放到左侧,貌似遨游支持,很久没用了。

  • [js] 文档加密

    2025-03-29 10:09

    @CongSec 0.0.4 修复搜索预览和模式切换/导出预览被加载显示 bug,建议更新。

  • 求隐藏已完成任务块的代码片段

    2025-03-29 08:01

    或者安装 Run JS 插件

    然后在任意文档中,插入 js 代码块,然后在代码块中输入以下代码

    // 隐藏所有已完成任务 async function main() { // css 代码 const styleContent = ` [data-type="NodeListItem"][data-subtype="t"].protyle-task--done { display: none; } `; // 定义 style 的内容 const styleId = "ShowOrHideAllDoneTask"; // 获取现有的 <style> 元素 let styleElement = document.getElementById(styleId); if (styleElement) { // 如果存在,则删除它 styleElement.remove(); await client.pushMsg({ msg: "已隐藏", timeout: 3000, }); } else { // 如果不存在,则创建并添加它 const newStyle = document.createElement("style"); newStyle.id = styleId; newStyle.textContent = styleContent; document.head.appendChild(newStyle); await client.pushMsg({ msg: "已显示", timeout: 3000, }); } } main(); plugin.saveAction(thisBlock.id, "隐藏所有已完成任务");

    然后,在右键中运行下代码即可,如下图

    image.png

    然后,在顶栏即可快速切换了

    image.png

  • 求隐藏已完成任务块的代码片段

    2025-03-28 19:09

    用下面的 css 隐藏所有已完成任务

    [data-type="NodeListItem"][data-subtype="t"].protyle-task--done{ display:none; }

    然后,配合插件 quickSnippets 就可以了吧

    image.png

  • [js] 文档树文档置顶和设置颜色 [0.0.8 完美版]

    2025-03-28 10:29

    暂不支持移动到顶级(已支持)

    这个置顶的本质是通过 css order 实现的

    不过,置顶到顶级可以通过移动实现,通过移动 + 置顶,然后自定义属性中添加来源 path,取消时再根据来源 path 恢复 + 取消置顶

  • [js][css] 提取写味主题列表转表格导图看板功能

    2025-03-27 16:03

    我这边一切正常,如果你那边圆点有问题的话,可以试试用下面的代码调整下 top 试试

    .protyle-wysiwyg [data-node-id].li>.protyle-action{ top: 0px; /* 根据自己需要调整 */ }
  • 很久没更新思源软件了,今天刚更新,打开笔记本所有的文档不见了

    2025-03-27 00:17

    我觉得这个问题,官方应该可以避免吧,新建工作空间时应该能判断是否在程序安装目录吧,只要给用户提示下,不允许不就行了

    其实安装时也可以读取用户工作空间目录,然后判断下正在安装的目录是否存在工作空间吧,如果存在可以提示用户先备份后再继续吧

    其他细节我觉得可以允许不重要,但涉及用户资料问题细节一定要到位,因为对用户来说资料才是最重要的,怎样能保证用户资料的绝对安全我觉得才是衡量一个好笔记软件的最重要的指标。

    @88250 @JeffreyChen

  • [js][css] 提取写味主题列表转表格导图看板功能

    2025-03-26 19:27

    修改这个最小高度应该就行

    image.png

  • 请问怎样才能统计带有持续时间格式的日期列变量啊?

    2025-03-26 19:02
    .action{ .开始时间} -> .action{ .开始时间_end}

    .action{ .开始时间} <svg class="av__cellicon"><use xlink:href="#iconForward"></use></svg> .action{ .开始时间_end}
  • 使用 sql 搜索时怎么过滤指定路径?

    2025-03-21 10:04

    👍 学习了

    我看了下源码

    其实就是#searchInput 元素的 dom 事件

    local-searchdata 存储数据是在 blur 时

    input-search 是在 input 时

    参考源码 https://github.com/siyuan-note/siyuan/blob/0b0c27b0bad3e2a073f61ed28c6ce76d2f2b4b07/app/src/search/util.ts#L912

    另外,思源底部的注释原来是插件的事件绑定结点,学习了。

    https://github.com/siyuan-note/siyuan/blob/0b0c27b0bad3e2a073f61ed28c6ce76d2f2b4b07/app/src/plugin/EventBus.ts#L7

  • 设置标题默认不加粗,按豆包的方法不成功

    2025-03-21 01:07

    试试这个

    .b3-typography .h1, .b3-typography h1, .b3-typography .h2, .b3-typography h2, .b3-typography .h3, .b3-typography h3, .b3-typography .h4, .b3-typography h4, .b3-typography .h5, .b3-typography h5, .b3-typography .h6, .b3-typography h6, .protyle-wysiwyg .h1, .protyle-wysiwyg h1, .protyle-wysiwyg .h2, .protyle-wysiwyg h2, .protyle-wysiwyg .h3, .protyle-wysiwyg h3, .protyle-wysiwyg .h4, .protyle-wysiwyg h4, .protyle-wysiwyg .h5, .protyle-wysiwyg h5, .protyle-wysiwyg .h6, .protyle-wysiwyg h6{ font-weight: normal!important; }

    ps:问 ai 先要在控制台先把 HTML 结构复制给它才准确。