AnQiCMS如何在文章详情页显示文章内容的目录结构或大纲?

📅 👁️ 78

对于那些内容丰富、篇幅较长的文章来说,一个清晰的目录结构或大纲就像一张导航图,能够极大地提升读者的阅读体验。它不仅帮助读者快速掌握文章脉络,还能让他们精准跳转到感兴趣的部分,从而提高内容的可读性和实用性。在 AnQiCMS 中,实现文章详情页的内容目录展示并非难事,系统内置的功能为我们提供了简洁高效的解决方案。

AnQiCMS 如何理解文章结构?

AnQiCMS 在设计之初就考虑到了内容管理的灵活性和对搜索引擎的友好性。当您在编辑器中创作文章时,无论是使用富文本编辑器设置 H1、H2、H3 等标题,还是通过 Markdown 编辑器撰写带有 #, ##, ### 标记的层级标题,AnQiCMS 都会智能地解析这些结构。

系统不会仅仅将内容视为一大段文本,而是能识别出其中的层次和逻辑。这种智能识别能力,正是我们在文章详情页生成目录的基础。AnQiCMS 内部会处理文章内容,提取出所有的标题信息,并将它们整理成一个结构化的数据列表,供模板调用。

通过 ContentTitles 标签获取目录数据

要在文章详情页显示目录,我们需要在相应的模板文件中(通常是 archive/detail.html 或自定义的文章详情模板)利用 AnQiCMS 提供的模板标签来获取这些结构化数据。这里的关键在于 archiveDetail 标签及其一个特殊的字段:ContentTitles

ContentTitles 字段专门用于返回文章内容中所有识别到的标题列表。它并不是直接的 HTML 结构,而是一个包含多个对象的数组,每个对象都代表一个标题,并提供了该标题的以下信息:

  • Title: 标题的文本内容。
  • Tag: 标题的 HTML 标签(例如 h1, h2, h3),可以帮助我们判断标题的层级。
  • Level: 标题的数字层级(例如 H1 对应 1,H2 对应 2),这对于目录的缩进和样式控制非常有用。
  • Prefix: 标题前可能存在的编号或符号(如果编辑器有生成)。

有了这些数据,我们就可以灵活地构建文章目录了。

逐步构建目录显示

接下来,我们来看看如何在文章详情模板中,利用 ContentTitles 来实际生成一个可交互的目录。

1. 定位模板文件

首先,您需要进入 AnQiCMS 的后台,在“模板设计”部分找到当前使用的模板,并定位到负责文章详情页显示的模板文件。根据模板设计规范,这通常是 template/您的模板目录/{模型table}/detail.html 或者在自定义模板设置中指定的具体文件。

2. 获取目录数据

在模板文件的适当位置(例如,文章内容侧边栏或者文章内容上方),使用 archiveDetail 标签获取 ContentTitles 数据。建议使用 if 标签进行判断,确保只有当文章内容中存在标题时才显示目录。

{%- archiveDetail contentTitles with name="ContentTitles" %}
{% if contentTitles %}
    <div class="article-outline">
        <h3>文章目录</h3>
        <ul>
        {% for item in contentTitles %}
            {# 生成唯一的锚点ID,通常基于标题内容进行简化,这里仅作简单示例 #}
            {% set anchorId = 'heading-' ~ forloop.Counter ~ '-' ~ item.Title|replace(" ", "-")|lower %}
            <li style="margin-left: {{ (item.Level - 1) * 20 }}px;">
                <a href="#{{ anchorId }}">{{ item.Prefix }}{{ item.Title }}</a>
            </li>
        {% endfor %}
        </ul>
    </div>
{% endif %}

在这段代码中:

  • 我们首先通过 {%- archiveDetail contentTitles with name="ContentTitles" %} 获取了目录数据并赋值给 contentTitles 变量。
  • {% if contentTitles %} 判断确保只有当文章存在标题时才渲染目录结构。
  • {% for item in contentTitles %} 循环遍历每一个标题。
  • {% set anchorId = 'heading-' ~ forloop.Counter ~ '-' ~ item.Title|replace(" ", "-")|lower %} 这行代码尝试为每个标题生成一个唯一的 ID。由于 AnQiCMS 的过滤器中没有直接的 slugify 功能,这里我们使用 forloop.Counter 来确保唯一性,并用 replace 简单地将空格替换为连字符并转换为小写,作为一个基本的锚点 ID 生成示例。在实际应用中,您可能需要更健壮的 JavaScript 代码来生成 HTML 标题的 ID,并保持与目录链接的一致性。
  • margin-left: {{ (item.Level - 1) * 20 }}px; 巧妙地利用 item.Level 来实现目录的层级缩进,例如 H2 标题会比 H1 标题多缩进 20 像素。
  • <a href="#{{ anchorId }}">{{ item.Prefix }}{{ item.Title }}</a> 创建了目录项,链接到文章内容中对应标题的锚点。

3. 确保文章内容标题拥有对应的锚点 ID

为了让上述目录链接能够正确跳转,文章内容中的实际 HTML

相关文章

如何在AnQiCMS模板中生成随机文本作为占位内容进行开发测试显示?

在AnQiCMS模板开发过程中,我们经常需要在真实内容到位之前,为页面填充一些占位文本,以便更好地观察布局、测试样式和功能。手动输入“测试内容”或“占位文本”既费时又缺乏真实感。幸好,AnQiCMS 提供了一个非常便捷的内置标签,能够优雅地解决这一问题——那就是 `lorem` 标签。 ### AnQiCMS 中的随机文本生成利器:`lorem` 标签 `lorem`

2025-11-08

AnQiCMS如何将HTML代码中的URL字符串自动解析为可点击的链接并显示?

在日常的网站运营中,我们经常需要在文章内容里插入各种网址,无论是引用外部资源还是引导用户访问站内其他页面。如果每次都手动为这些URL添加`<a>`标签,既费时又容易出错。幸运的是,AnQiCMS在这方面为用户提供了非常智能和便捷的解决方案,能够自动识别并解析HTML代码中的URL字符串,将其转化为可点击的链接。 ### 核心机制:让内容中的URL“活”起来 当您在AnQiCMS的后台编辑文章

2025-11-08

如何使用AnQiCMS过滤器对显示内容进行字符串截断、大小写转换等处理?

在使用AnQiCMS进行网站内容管理时,我们常常会遇到需要对显示的内容进行一些微调的情况,比如一篇文章的标题太长了,我们希望它只显示一部分并以省略号结尾;或者有些文字希望统一以大写或小写显示。AnQiCMS强大的模板过滤器功能就能轻松帮我们实现这些需求,无需修改任何后端代码,直接在模板层面就能完成。 模板过滤器是AnQiCMS模板语言中的一个实用工具,它允许我们对模板变量的值进行转换

2025-11-08

AnQiCMS如何确保 Markdown 编辑器中插入的数学公式和流程图在前台正常显示?

在现代网站内容创作中,Markdown以其简洁高效的特点,受到了广大内容创作者的青睐。然而,对于需要呈现复杂信息,如数学公式和流程图的网站而言,如何在Markdown编辑器中无缝插入并确保它们在前台正常显示,常常是内容运营者面临的挑战。安企CMS(AnQiCMS)深知这一需求,通过灵活的配置与标准化的引入方式,让这些复杂的元素也能在您的网站上优雅地呈现

2025-11-08

如何在模板中动态获取和显示网站的联系方式,如电话、邮箱、社交媒体链接?

网站的联系方式,如电话、邮箱和社交媒体链接,是用户与我们建立连接的重要桥梁。在网站运营中,这些信息的准确性和可访问性至关重要。AnQiCMS作为一个高效的内容管理系统,提供了非常便捷的方式来管理和动态展示这些联系信息,让我们能轻松维护网站内容的统一性,并在需要时快速更新。 本文将深入探讨如何在AnQiCMS中设置联系方式,以及如何在模板中动态获取并以用户友好的方式显示它们。 ### 一

2025-11-08

AnQiCMS如何通过设置“默认缩略图”来统一缺失图片时的显示效果?

在网站内容运营中,图片扮演着至关重要的角色,它们能够吸引用户的注意力,提升内容的视觉吸引力,并帮助用户快速理解内容主题。然而,在日常的内容发布过程中,我们有时会遇到一些文章因各种原因未能上传专属缩略图的情况,或者内容本身就没有合适的图片可供提取。这时,如果前台页面直接显示空白、破损图片图标,或者布局错乱,无疑会严重影响用户体验和网站的专业度。 为了解决这一问题,AnQiCMS

2025-11-08

AnQiCMS在不同模板模式(自适应、代码适配、PC+手机)下如何影响网站的显示效果?

在搭建和运营网站时,我们常常会考虑如何让网站在不同设备上呈现出**的显示效果。安企CMS(AnQiCMS)深知这一点,因此提供了三种灵活的模板模式来满足不同的需求:自适应、代码适配以及PC+手机独立站点模式。每种模式都有其独特的实现方式和对网站显示效果的影响,理解它们能帮助我们更好地选择适合自己项目的方案。 ### 一、自适应模式:一套模板,多种屏幕 自适应模式,顾名思义

2025-11-08

如何在模板中判断变量是否存在或为空,并根据结果显示不同的默认内容?

在网站模板的开发和维护过程中,我们常常会遇到变量可能不存在、值为空或者不符合预期的情况。如果不对这些变量进行适当的处理,轻则导致页面显示异常,重则可能引发错误,影响用户体验。安企CMS(AnQiCMS)提供了强大而灵活的模板引擎,基于Django语法,让我们可以轻松地判断变量的状态,并根据结果显示不同的内容。 要确保网站的健壮性和用户体验,掌握如何在模板中判断变量是否存在或为空

2025-11-08