||||
-|-|
| 摘要 | DiscoTOC 将允许你一键为你的主题生成交互式目录!
|
| 预览 | 在 Discourse 主题创建器上预览 |
| 仓库链接 | https://github.com/discourse/DiscoTOC
|初次使用 Discourse 主题? | Discourse 主题使用入门指南
安装此主题组件
示例
桌面端
移动端
功能
toc = 目录
-
通过编辑器齿轮菜单中的按钮自动生成整个目录
-
目录将始终显示在屏幕上 - 随内容滚动,类似于主题进度小部件
-
当你在主题中滚动经过各个章节时,目录中的当前元素将被设置为活动状态(蓝色高亮)
-
为标题添加 id 属性(你可以从其他主题/帖子链接到特定章节)
-
点击目录中的任何链接,浏览器将导航到相关部分(平滑滚动)
-
在每个标题旁边添加一个可复制的链接(如果你想链接到它)
-
支持 RTL(从右到左)布局
-
颜色基于你当前激活的颜色主题
它是如何工作的?
简而言之,它会查找主题中标记为需要目录的标题(通过编辑器按钮),如果当前主题被标记,它会将所有标题放入目录中(按标题级别嵌套排序)- 这意味着你的 Markdown 语法必须正确。
# 标题 1
## 标题 2
### 标题 3
#### 标题 4
##### 标题 5
###### 标题 6
你可以自由地在标题级别之间来回切换,但顺序必须正确
# 标题 2
## 标题 3
## 标题 3
### 标题 4
## 标题 3
# 标题 2
依此类推...
为了使目录中的链接正常工作,标题必须具有 id 属性。该组件会检查标题是否已有 id,如果有,则予以尊重。如果你曾经手动创建过目录,这非常有用。
如果标题没有 id,它将根据标题文本为每个标题生成一个 id(去除不需要的字符)
完成所有这些操作后,它还会在每个标题旁边添加一个直接链接到该部分的链接:
设置
| 名称 | 描述
|-|
| 创建目录的最低信任等级 | 用户必须在编辑器中看到目录按钮所需的最低信任等级
| 编辑器目录文本 | 出现在编辑器预览面板顶部,指示该主题将包含目录的文本
| 自动目录类别 | 在这些类别的主题中自动启用目录
| 自动目录标签 | 在这些标签的主题中自动启用目录
| 目录最小标题数 | 主题中显示目录所需的最小标题数量
翻译
| 翻译项 | 默认值
|-|
| table_of_contents | 目录
| insert_table_of_contents | 插入目录
| jump_bottom | 跳转到底部
| toggle_toc.show_timeline | 时间线
| toggle_toc.show_toc | 目录
该主题包含三个你可以翻译或更改的字符串。
table_of_contents: "目录"
这用于在移动端打开目录的按钮
insert_table_of_contents: "插入目录"
这用作编辑器齿轮菜单中目录按钮的文本
topic_will_contain_a_table_of_contents: "此主题将包含一个目录"
这是在编辑器预览中显示的文本,用于指示该主题将生成目录
我如何创建目录?
- 编写具有正确语法标题的主题
- 点击齿轮菜单中的目录按钮(仅在创建普通主题时显示 - 回复和私信会被忽略
- 大功告成。
当主题有目录时,主题进度小部件会发生什么变化?
正如你可能猜到的,没有空间同时显示两者,因此该组件的工作方式如下
在有目录的主题中,当第一篇文章在屏幕上时,主题进度小部件会被隐藏,你会看到目录。
一旦你滚动经过第一篇文章,目录将不再随你滚动,而在你阅读任何回复时,将显示主题进度。
因此,第一篇文章获得目录,后续帖子获得常规的主题进度小部件。
这在桌面端和移动端都会发生。
使用此组件有任何缺点吗?
据我所知没有,所有更改都是在客户端完成的。因此,你可以轻松移除该组件,你的帖子会恢复到安装它之前的状态。
限制
该组件假设使用标准主题布局。因此,它不适用于修改该布局的主题,例如 Vincent 主题。对修改布局的流行主题的支持将在稍后阶段以组件设置的形式提供。
致谢
我最初使用了 Greg Franko 的 tocify.js 库。然而,看起来它已经有一段时间没有更新了,所以这本质上是一个硬分叉,移除了许多不必要的功能,并将其余功能集成并样式化为 Discourse。
因此,没有外部请求,总大小约为 4kb gzip。
非常感谢 @erlend_sh 提供了许多有价值的反馈,以及感谢 @david 在翻译方面的帮助。
由我们托管? 主题组件在我们的 Pro、Business 和 Enterprise 计划中均可使用。









