Skip to content

用于创建更新子文档目录列表的思源笔记挂件。 A SiYuan widget to create and update directory list.

License

Notifications You must be signed in to change notification settings

OpaqueGlass/listChildDocs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e5a2c9a · Mar 22, 2025
Jun 4, 2023
Oct 6, 2023
Mar 22, 2025
Mar 11, 2024
Jan 12, 2023
Jun 4, 2023
Mar 22, 2025
Mar 13, 2024
Aug 14, 2022
Mar 22, 2025
Jul 19, 2024
Feb 20, 2023
Jun 13, 2023
May 27, 2024
May 27, 2024
Oct 5, 2022
Mar 22, 2025

Repository files navigation

list Child Docs列出子文档

用于思源笔记创建、更新指定文档目录列表的挂件。

  • 创建指定文档的目录或大纲列表;
    • 挂件中、文档中的有序或无序列表;
    • 以markmap导图 或 预览方格形式;
    • 支持在挂件加载或标签页切换时刷新;

当前版本:v0.3.6 修复: URL+大纲标题居中时,显示html居中代码的问题;

详见更新日志CHANGELOG.md;更新日志(网络)

插入时模式为默认、启用自动刷新、层级1、分栏0(自动分栏)、大纲层级3。

listChildDocs 最初在2022年8月发布,感谢陪伴!现已进入维护阶段,停止功能新增;如遇bug缺陷请反馈。

如果正在使用文档内创建列表的模式,可考虑改为使用“目录插件”,可以在(listChildDocs设置-全局设置-最下方“重置和危险操作”)中批量删除挂件。

快速开始

请注意,listChildDocs是一个挂件,不是插件;挂件作为文档内容块存在,需要您手动插入到文档中(编辑器内/菜单->挂件)。另请参考:挂件

  • 双击刷新按钮保存设置项;
  • 鼠标悬停在按钮或设置项旁边的i图标上,将显示提示;
  • 关于模式:可以切换到相应模式后点刷新试用一下;
  • 建议往下阅读注意部分;
  • 常见问题:
    • 文档中目录列表不能自动刷新? 默认启用了安全模式,请确认不使用同步后,可关闭安全模式;
  • 快捷键(焦点在挂件上才生效,请先点击挂件空白处)
    • Ctrl + S 打开或关闭设置面板;
    • Ctrl + F 打开或关闭搜索对话框;
    • F5 刷新;

设置项说明

界面

图片

  1. 刷新按钮:单击将刷新子文档列表;双击将保存当前设置 ;
  2. 显示/隐藏设置
  3. 挂件内高亮检索;
  4. 刷新情况提示;

设置项变更后,需要双击刷新按钮保存设置,否则下次启动时将丢失更改。

设置项分区

常规设置界面部分提示

模式简介

模式名称前有1.的,将以有序列表的方式创建目录;模式名称前有1.1.的,将在有序列表的基础上使用全角空格缩进,创建多级编号的目录;

  1. 无序列表*
  • 默认: (挂件中创建目录)“引用块”;

  • 挂件beta:(挂件中创建目录)“引用块”(悬停时触发浮窗,不稳定) 自v0.2.2起废弃,可以启用“悬停触发浮窗”替代(但并不好用,建议禁用);

  • url: (文档中创建目录)在挂件下方创建无序列表展示siyuan://超链接;

  • 引用块:(文档中创建目录)在挂件下方创建无序列表展示引用块;

  1. 有序列表*
  • 1.默认:(挂件中)有序列表“引用块”;

  • ……

  1. 带层级序号的列表(请参考下文的代码片段以隐藏列表项圆点)

  2. 任务列表

  • 任务列表:(文档中) 【已知问题!刷新将创建一个新的任务列表,导致丢失任务的完成信息】(建议使用模板完成创建);
  1. 导图;(依赖Markmap)
  2. 预览方格;(同时提供子文档的开头部分内容预览,子文档为空,则显示子文档的子文档链接)
  3. 按日期分组;(按创建/更新日期倒序分组显示)
  4. 本地文件夹;(从指定的本地文件夹开始,创建文件夹目录列表)(仅桌面端)

代码片段

1.1.url模式显示效果修改

由于1.1 模式基于无序列表显示,如要隐藏列表项前的圆点,需要添加以下代码片段。

复制以下内容,在 设置-外观-代码片段-CSS 中添加代码片段:

/* 不显示无序列表* */
.list[custom-list-format*=standard-ol-on-ul][data-subtype="u"] .protyle-action {
    display: none !important;
    border: 0;
}
/* 左侧间距调整 */
.protyle-wysiwyg [custom-list-format*=standard-ol-on-ul][data-subtype="u"] [data-node-id].li>[data-node-id] {
    margin-left: 5px !important;
}
/* 无序列表行距调整 */
.protyle-wysiwyg [custom-list-format*=standard-ol-on-ul][data-subtype="u"]  [data-node-id] {
    margin-top: 0px;
    margin-bottom: 1px;
    padding-top: 0px;
    padding-bottom: 0px;
}

.protyle-wysiwyg [custom-list-format*=standard-ol-on-ul][data-subtype="u"] .li {
    min-height: 30px;
}
/* 列表提示线调整 */
.protyle-wysiwyg  [custom-list-format*=standard-ol-on-ul][data-subtype="u"] [data-node-id].li:before {
    top: 30px;
    left: 15px;
}

自定义说明

v0.2.2版本后,挂件对设置项的保存方式有所修改。挂件将默认把数据保存至工作空间/data/storage/listChildDocs文件夹。

该文件夹下的数据包括:

  • data 文件夹,保存针对文档的挂件设置,一般来说,插件插入的listChildDocs会对应给文档创建一个配置文件;
  • schema 文件夹,默认模板配置,目前无效;
    • default.json 挂件插入时的默认设置;
  • global.json 全局配置文件,需要手动保存全局设置后才会创建;
  • custom.css 自定义的样式文件,不自动创建;

默认设置和全局设置项

如果是初次升级到v0.2.2及以上版本,请在挂件手动保存默认设置、全局设置。(理论上,挂件将在首次载入时迁移原custom.js中保存的设置一次,设置项迁移将保留1个版本后被移除)

保存后,您可以打开工作空间/data/storage/listChildDocs/global.json手动对配置进行更改;

允许的配置项可参考挂件位置/src/ConfigManager.jsdefaultGlobalConfig。您也可以在该文件直接更改,但如果和global.json的设置不同,将以global.json为准。

自定义样式

如果对挂件的默认样式不满意,您可以自行修改,将CSS保存在工作空间/data/storage/listChildDocs/custom.css文件下。

⚠️注意

由于开发者能力所限,挂件还存在以下问题。使用前必读。

  • 直接将子文档目录列表写入文档中时:
    • 请避免过快地刷新文档列表;
    • 如果要多设备同步文档、且挂件所在文档要写其他内容时,请勿使用自动刷新1
  • 每次刷新时,将完全更新列表(即使子文档没有变化,也将更新列表全部内容);
  • 如果未完成同步,请勿点击刷新按钮(多端同步前,在旧文档上刷新可能导致同步覆盖)1
    • 单击刷新按钮会更新文档中的目录列表或更新挂件目录列表缓存,文档编辑时间将被更新;
    • 双击刷新按钮会保存设置(设定挂件属性),文档编辑时间将被更新;
  • 切换页签时自动刷新的方法有点玄学,可能在未来的版本更新中无法使用;
  • 关于超级块属性刷新后重写:
    • superBlockBeta应设为true
    • 若刷新后为超级块,属性将写入超级块的直接无序列表子块和超级块本身;
    • 若刷新前为超级块,将随机继承一个无序列表子块的属性;
    • 如要删除属性,建议直接删除超级块重新设置;
  • 关于写入自定义emoji图片:
    • 请避免图片路径包括特殊符号,例如()%& ,如果包括,不能确定实际效果;
    • 暂不支持网络emoji;

注:关于多端同步前刷新的详细说明,请阅读FAQ(挂件所在目录下的faq.md)。

反馈bug

请到github仓库新建issue。您也可以在这里下载历史版本。

如您无法访问github仓库,请在此反馈

参考&感谢

本挂件使用/参考了以下大佬的项目:

开发者 项目 开源协议 备注
leolee9086 cc-template 木兰宽松许可证, 第2版 在挂件中展示“引用块“
InEase Note Map N/A API使用方式
Zuoqiu-Yingyi widget-query AGPL-3.0 从custom.js导入自定义设置
Trilium / note-list-widget 预览方格模式css样式,和功能设计

以下大佬参与代码贡献:

(详见贡献者(开发者)列表

依赖

  1. jQuery (本项目中通过jQuery选择页面元素);
jQuery JavaScript Library v3.6.0  https://jquery.com/
Copyright OpenJS Foundation and other contributors
Released under the MIT license  https://jquery.org/license
  1. markmap
markmap-lib v0.14.3 | MIT License
markmap-view v0.14.3 | MIT License
https://github.com/markmap/markmap
https://markmap.js.org/
  1. d3.js
BSD-3-Clause https://opensource.org/licenses/BSD-3-Clause
https://d3js.org v6.7.0 Copyright 2021 Mike Bostock
  1. day.js
Day.js is licensed under a MIT License.
https://github.com/iamkun/dayjs/
https://day.js.org/
  1. artDialog
免费,且开源,基于LGPL-3.0协议。
https://github.com/aui/artDialog
aui.github.io/artDialog/
  1. layui
Layui 采用 MIT 许可发布。其他相关协议亦可参考《免责声明》https://gitee.com/layui/layui/blob/main/DISCLAIMER.md。

图标

  1. 刷新按钮图标,作者:amoghdesign,许可协议:CC3.0 BY-NC

  2. 设置按钮图标LucideISC License

  3. 搜索按钮图标LucideISC License

Footnotes

  1. 点击刷新按钮将更新目录列表、挂件内目录缓存或保存设置,当前设备文档编辑时间也将更新。如果当前设备未同步,则当前设备的“旧”文档会覆盖云端内容,导致其他设备的编辑丢失。 2