如何在`archiveParams`循环中,根据自定义参数的名称筛选要显示的

作为一名资深的网站运营专家,我深知内容管理系统(CMS)的灵活性是网站能否快速响应市场变化、优化内容结构的关键。安企CMS(AnQiCMS)凭借其强大的自定义内容模型功能,为我们提供了极大的便利。然而,仅仅定义了自定义参数还不够,如何根据实际需求,在模板中灵活地调用和筛选这些参数,是许多运营者和开发者面临的实际问题。今天,我们就来深入探讨如何在archiveParams循环中,根据自定义参数的名称,精准筛选出我们想要展示的内容。

理解 AnQiCMS 的自定义参数机制

在深入筛选策略之前,我们首先要明确安企CMS中自定义参数是如何运作的。安企CMS的核心优势之一便是其高度灵活的内容模型。无论是文章、产品还是其他任何类型的内容,我们都可以根据业务需求,为它们添加各种专属字段,这些字段就是我们常说的“自定义参数”。

这些自定义参数的定义通常在后台的“内容管理”模块中进行,具体路径是“内容管理” -> “内容模型” -> 选择或新建一个模型 -> “自定义字段”。在这里,你会为每个自定义参数设置一个“参数名”(这是在后台界面和前端模板中用于识别和展示的名称)以及一个“调用字段”(这是系统内部用于存储和通过编程接口访问的唯一标识)。

当我们在文档(或产品等内容)的编辑页面填写这些自定义字段后,这些数据就会与该文档一同存储。在前端模板中,我们便可以通过archiveParams标签来获取这些附加信息。

archiveParams 标签的核心作用

archiveParams标签是安企CMS模板中用于获取当前文档或指定文档的所有自定义参数的强大工具。通常,我们会这样使用它:

{% archiveParams params %}
    {% for item in params %}
        {# 这里的 item 包含了自定义参数的 Name(参数名)和 Value(参数值) #}
        <p>{{ item.Name }}:{{ item.Value }}</p>
    {% endfor %}
{% endarchiveParams %}

在这段代码中,archiveParams标签将文档的所有自定义参数作为一个数组赋值给params变量。然后,我们通过for循环遍历这个params数组,每一个item都代表一个自定义参数。默认情况下,archiveParams会以sorted=true的方式返回一个有序的数组,每个item都包含两个关键属性:Name(即你在后台设置的“参数名”)和Value(即该参数的具体内容)。

然而,仅仅是遍历并显示所有参数,在很多场景下是不够的。比如,你可能为一篇文章定义了“作者”、“出版社”、“ISBN”、“页数”等多个参数,但在页面某个区域,你只想突出显示“作者”和“出版社”这两个信息,而其他参数则放在页面的另一个更详细的区域。这时,我们便需要在循环中进行筛选。

在循环中根据名称筛选参数

解决在archiveParams循环中筛选特定参数的方法,是结合AnQiCMS模板引擎的for循环和if条件判断标签。由于archiveParams循环中的每个item都提供了Name属性,我们可以直接利用这个属性进行比较,从而筛选出我们希望展示的参数。

设想这样一个场景:你有一个“书籍”内容模型,为其添加了“作者”、“出版社”、“出版日期”、“ISBN”等自定义参数。现在,你希望在文章摘要卡片中只显示“作者”和“出版社”这两个信息。你可以这样来实现:

<div class="book-info-card">
    <h3>书籍信息概览</h3>
    {% archiveParams bookDetails with sorted=true %}
        {% for detail in bookDetails %}
            {# 根据参数名(item.Name)进行条件判断 #}
            {% if detail.Name == "作者" or detail.Name == "出版社" %}
                <p><strong>{{ detail.Name }}:</strong> {{ detail.Value }}</p>
            {% endif %}
        {% endfor %}
    {% endarchiveParams %}
</div>

在这段代码中:

  1. 我们使用{% archiveParams bookDetails with sorted=true %}来获取当前文档的所有自定义参数,并将它们存储在bookDetails变量中。
  2. {% for detail in bookDetails %}循环遍历每一个自定义参数。
  3. 核心在于{% if detail.Name == "作者" or detail.Name == "出版社" %}这行。它会检查当前参数的Name属性是否等于“作者”或“出版社”。
  4. 只有当条件满足时,if标签内部的内容(<strong>{{ detail.Name }}:</strong> {{ detail.Value }})才会被渲染出来。

通过这种方式,即使archiveParams获取了文档的所有自定义参数,我们也能在前端页面上灵活地根据参数名称,选择性地展示我们所需的信息,这大大提升了内容展示的精细化程度和可维护性。