`archiveDetail`中`ContentTitles`字段返回的是一个数组,如何利用数组过滤器进一步处理这些标题列表?

📅 👁️ 59

在安企CMS中管理内容时,文档详情页面的 archiveDetail 标签非常强大,它能帮助我们获取到当前文档的丰富信息。其中,ContentTitles 字段是一个特别有用的数据结构,它返回的是一个数组,包含了文档内容中所有标题(如H1、H2、H3等)的层级信息。这为我们提供了极大的灵活性,可以用来构建文章目录、智能导航,甚至进行内容分析。

ContentTitles 字段返回的每个元素都是一个对象,通常包含以下关键信息:Title(标题文本)、Tag(HTML标签,如h1、h2)、Level(标题层级,如1、2)、以及 Prefix(可能用于编号的前缀,如1.1)。

当我们拿到这个标题数组后,如何进一步处理它,让它发挥更大的作用呢?安企CMS的模板引擎提供了丰富的逻辑标签和过滤器,让我们可以像处理普通数组一样,对 ContentTitles 进行各种操作。

1. 基础遍历与条件筛选:构建动态文章目录

最直接的用法就是遍历这个数组,将所有标题展示出来。这通常通过 for 循环标签实现。例如,我们可以轻松地为文章生成一个动态目录,让读者快速跳转到感兴趣的部分。

{% archiveDetail titles with name="ContentTitles" %}
    {% if titles %} {# 检查标题数组是否存在且不为空 #}
        <nav class="article-toc">
            <h3>文章目录</h3>
            <ol>
            {% for item in titles %}
                {# 根据标题层级添加不同的样式或前缀,或者生成页面内跳转链接 #}
                <li class="level-{{ item.Level }}">
                    <a href="#section-{{ item.Title | urlencode }}">{{ item.Prefix }} {{ item.Title }}</a>
                </li>
            {% endfor %}
            </ol>
        </nav>
    {% endif %}
{% endarchiveDetail %}

在这里,item.Level 帮助我们识别标题的层级,item.Title | urlencode 则是一个非常实用的过滤器,它能将标题文本转换成URL安全的字符串,非常适合作为页面内锚点(id)的值,实现点击目录项后平滑跳转。

如果我们只想展示特定层级的标题,比如只展示二级(H2)标题作为主要章节,可以借助 if 条件判断:

{% archiveDetail titles with name="ContentTitles" %}
    {% if titles %}
        <nav class="article-main-sections">
            <h4>主要章节</h4>
            <ul>
            {% for item in titles %}
                {% if item.Level == 2 %} {# 只显示二级标题 #}
                    <li><a href="#section-{{ item.Title | urlencode }}">{{ item.Prefix }} {{ item.Title }}</a></li>
                {% endif %}
            {% endfor %}
            </ul>
        </nav>
    {% endif %}
{% endarchiveDetail %}

2. 数组长度与内容检查:快速了解文章结构概览

除了遍历,我们还可以利用一些数组过滤器来获取数组的整体信息。

  • 获取标题总数length 过滤器可以返回数组中元素的数量。这对于显示文章包含多少个标题,或者在标题数量很少时不显示目录等场景非常有用。

    {% archiveDetail titles with name="ContentTitles" %}
        {% if titles %}
            <p>本文共包含 <strong>{{ titles|length }}</strong> 个标题,为您提供了结构化的阅读体验。</p>
        {% endif %}
    {% endarchiveDetail %}
    
  • 检查特定标题是否存在:虽然没有直接的过滤器可以判断数组中对象的某个属性是否匹配特定值,但我们可以通过结合 for 循环和 if 语句实现,并用一个布尔变量来记录结果。

    ”`twig {% archiveDetail titles with name=“ContentTitles” %}

    {% set has_conclusion = false %}
    {% for item
    

相关文章

AnQiCMS模板中,在展示用户评论前,如何使用过滤器检测并过滤掉评论中的敏感词汇?

在网站运营中,用户评论是社区互动和内容活力的重要组成部分。然而,评论内容的安全与合规性同样至关重要,它直接关系到网站的品牌形象、用户信任度乃至法律风险。安企CMS深知这一点,并在系统设计中充分考虑了内容安全管理,其中就包括了强大的敏感词过滤功能。 当我们在AnQiCMS模板中展示用户评论时,虽然系统层面已经对评论内容进行了初次甚至深度的敏感词检测和过滤

2025-11-07

如何通过组合使用文本过滤器(如`split`、`contain`、`replace`)来构建更智能的AnQiCMS内容审核机制?

内容审核是网站运营中不可或缺的一环,它不仅关乎内容质量,更是维护平台健康生态、确保合规性的重要保障。在AnQiCMS中,除了后台自带的敏感词过滤等安全机制外,我们还可以巧妙地利用其强大的模板过滤器功能,尤其是`split`、`contain`和`replace`这三个文本处理过滤器,来构建一套更灵活、更智能、更贴合实际运营需求的内容审核辅助机制。 ### `contain` 过滤器

2025-11-07

在AnQiCMS后台进行“内容关键词替换”时,如何结合模板过滤器进行前端验证或预处理?

在AnQiCMS的内容运营中,“内容关键词替换”无疑是一个提高效率、优化内容质量的强大工具。它允许运营者批量、全局地调整网站内容中的特定词语或短语,无论是为了品牌统一、SEO优化还是信息更新。然而,仅仅依靠后台的替换功能,有时可能还不足以满足前端展示的精细化需求。这时,巧妙地结合AnQiCMS的模板过滤器,就能为内容展示带来更多的灵活性和控制力,实现更佳的用户体验。 ###

2025-11-07

当`add`过滤器遇到不同类型的数据(如数字和字符串)相加时,其处理逻辑是怎样的?

在安企CMS的模板开发中,过滤器(Filters)是处理和转换数据的重要工具。其中,`add`过滤器因其在数字和字符串操作上的独特行为,常常引起使用者对它处理逻辑的思考。究竟当`add`过滤器遇到不同类型的数据(如数字和字符串)相加时,它是如何运作的呢?本文将深入解析这一机制。 --- ### `add`过滤器的核心功能与基本用法 `add`过滤器的主要作用是将两个值进行“相加”操作

2025-11-07

在多语言AnQiCMS站点中,`contain`过滤器是否能正确判断不同语言的关键词?

在AnQiCMS多语言站点中,`contain`过滤器能否正确判断不同语言的关键词? AnQiCMS作为一款功能丰富的企业级内容管理系统,其强大的多语言支持能力,使得内容运营者能够轻松触达全球受众。然而,在实际的内容管理和展示中,我们常常需要对内容进行关键词检测或筛选。这时,一个关键问题就浮出水面:在面对不同语言的内容时,模板中的`contain`过滤器能否准确地识别关键词呢?今天

2025-11-07

除了直接显示或赋值,过滤器在AnQiCMS模板中的其他实用场景有哪些?

安企CMS(AnQiCMS)的模板语言提供了丰富的功能,不仅仅局限于直接显示数据或简单赋值。其中,过滤器(Filters)扮演着重要的角色,它们能够对模板中的变量值进行转换、格式化和处理,从而实现更加灵活和动态的内容展示。当我们深入了解这些过滤器的实用场景时,会发现它们极大地提升了模板的表达能力和开发效率。 ### 数据展示的精细化处理 在网站内容呈现中

2025-11-07

AnQiCMS如何灵活定制内容模型以满足多样化的展示需求?

## 驾驭AnQiCMS:灵活定制内容模型,解锁多样化展示潜力 在当今数字时代,网站早已不再是单一内容形态的展示平台。无论是企业官网、电商产品目录、行业资讯站,还是个人博客或在线教育平台,其核心内容往往千差万别,拥有独特的结构和展示需求。传统的CMS系统常常将内容硬性限制在“文章”或“产品”等固定框架内,这无疑给追求个性化和专业化的运营者带来了诸多挑战。然而

2025-11-07

如何在AnQiCMS中实现多站点内容在前端的统一管理与展示?

在AnQiCMS中管理和展示多个网站的内容,是许多运营者面临的常见需求,尤其当您需要打理多个品牌站点、产品子站,或者为不同地区、不同语言的用户提供定制内容时。AnQiCMS在设计之初就充分考虑了这一点,提供了一套灵活高效的解决方案,让您可以在一个后台轻松驾驭多个前端站点的内容。 ### 后端统一管理:一套系统,多个站点 AnQiCMS的核心优势之一,就是它支持多站点管理

2025-11-07