在Discuz中实现Markdown文章显示大纲(即目录/TOC),可以通过以下两种主要方式实现,结合插件配置或手动代码嵌入,具体步骤如下:
一、使用支持目录的Markdown插件(推荐)
1. 安装支持TOC的插件
推荐使用 zxsq_markdown插件,该插件原生支持目录生成功能,并适配Discuz的SEO优化需求。
- 功能点:
- 支持GFM(GitHub Flavored Markdown)语法,自动解析标题生成目录。
- 支持通过
[toc] 标签在文章中插入目录位置。
- 提供后台配置选项,如禁止生成
h1 标签以避免SEO问题。
- 安装步骤:
- 确保服务器环境满足条件(PHP≥5.3,已安装mbstring扩展)。
- 在插件市场安装插件后,进入Discuz后台配置,启用Markdown解析和目录功能。
- 发帖时使用
[md空格] 标签包裹Markdown内容,并在需要目录的位置插入 [toc] 。
2. 示例代码
[md空格]
[toc]
# 标题1
## 子标题1
## 子标题2
# 标题2
[/md空格]
文章发布后,[toc] 位置会自动渲染为层级目录,点击可跳转到对应标题。
二、手动实现目录功能(需代码调整)
若未使用插件,可通过以下步骤手动添加:
1. 引入目录生成库
在模板的页脚文件(如footer.htm )中添加Tocbot等JS库:
<script src="https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.12.3/tocbot.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.12.3/tocbot.css">
2. 初始化脚本
在页脚中插入以下代码,自动扫描文章中的标题并生成目录:
window.onload = function() {
tocbot.init({
tocSelector: '.toc', // 目录容器选择器
contentSelector: '.markdown-content', // Markdown内容容器
headingSelector: 'h1, h2, h3', // 需要捕获的标题级别
collapseDepth: 3 // 目录层级深度
});
};
3. 模板调整
- 在文章模板中添加目录占位容器(如
<div class="toc"></div> )。
- 确保Markdown内容包裹在
class="markdown-content" 的容器内。
三、注意事项
- SEO优化:
- 若使用插件,建议在插件后台禁用
h1 标签生成,避免与文章标题冲突。
- 兼容性:
- 手动实现需确保模板无冲突,且JS库与Discuz原有脚本兼容。
- 用户权限:
- 在Discuz后台设置允许使用Markdown的用户组。
四、推荐插件对比
插件名称 |
目录支持 |
其他特性 |
参考来源 |
zxsq_markdown |
是 |
GFM语法、SEO优化、按需加载资源 |
|
zhanmishu_markdown |
是(需前端解析) |
分屏预览、数学公式、流程图支持 |
|
云诺Markdown编辑器 |
否 |
轻量级、兼容默认模板 |
|
通过插件实现更为便捷且功能全面,尤其是zxsq_markdown插件对目录的原生支持较为完善。若需高度自定义,可结合手动代码调整,但需注意维护成本。
|