AnQiCMS作为一个高效且可定制的内容管理系统,提供了强大的内容模型功能,让我们可以根据不同业务需求为文章添加各种自定义字段。这些自定义参数不仅能让文章内容更加丰富和结构化,还能在前台页面进行个性化展示,极大地提升了网站的灵活性和用户体验。

今天,我们就来深入探讨如何在AnQiCMS的前台页面,灵活地展示文章中的这些自定义参数列表。

后台准备:定义自定义参数

在AnQiCMS中,自定义参数是与“内容模型”紧密关联的。这意味着,你首先需要在后台为你的内容模型定义好这些参数。

登录到AnQiCMS后台,导航到“内容管理”菜单下的“内容模型”。在这里,你可以看到系统内置的“文章模型”、“产品模型”等,也可以创建自己的内容模型。选择你需要添加自定义参数的模型,点击“编辑”。

在模型编辑界面,你会找到一个名为“内容模型自定义字段”的区域。这里就是我们定义各种个性化参数的地方。每一个字段都像给内容添加了独特的“标签”和“属性”,可以指定参数名(供后台管理和识别)、调用字段(供前台模板调用)、字段类型(如单行文本、数字、多行文本、单项选择、多项选择、下拉选择)以及是否必填、默认值等。例如,你可以为“文章模型”添加一个名为“文章来源”的自定义字段,或者为“产品模型”添加“产品尺寸”、“颜色选项”等。

一旦你在这里定义并保存了自定义字段,它们就和文章内容本身一样,可以在前台模板中被调用和展示了。

前台展示:核心标签archiveParams的运用

现在,我们已经定义好了后端的数据结构,接下来就要在前台模板中将这些信息展示出来。AnQiCMS提供了一个专门用于获取文章自定义参数的标签:archiveParams

这个标签通常用在文章详情页,用于获取当前文章所关联的所有自定义参数。它的基本用法是将其定义为一个变量,然后通过for循环遍历这个变量来显示每个参数的名称和值。

基本的代码结构会是这样:

{% archiveParams params %}
    {% for item in params %}
        <div>
            <span>{{ item.Name }}:</span>
            <span>{{ item.Value }}</span>
        </div>
    {% endfor %}
{% endarchiveParams %}

在这段代码中:

  • {% archiveParams params %} 将当前文章的所有自定义参数存储在名为params的变量中。
  • {% for item in params %} 遍历这个params数组,item在每次循环中代表一个自定义参数。
  • {{ item.Name }} 会输出该自定义参数在后台设置的“参数名”(通常是中文,如“文章来源”)。
  • {{ item.Value }} 则会输出该自定义参数的实际内容值(如“AnQiCMS官方博客”)。

archiveParams标签默认会根据你在后台设置的顺序来返回参数列表,这通过sorted=true参数控制,但由于sorted=true是默认行为,通常可以省略不写。如果你想获取指定文章的自定义参数,而不是当前页面文章的,可以通过id参数来指定文章ID,例如:{% archiveParams params with id="123" %}

另一种快捷方式:archiveDetail直接调用

如果你只关心某个特定的自定义参数,并且已经明确知道它的调用字段名(即你在后台设置的“调用字段”,通常是英文),那么你可以使用archiveDetail标签来直接获取它的值,而无需遍历整个参数列表。

例如,假设你有一个自定义字段的调用字段名是author_source,你可以在模板中这样直接获取它的值:

<div>文章来源:{% archiveDetail with name="author_source" %}</div>

或者,如果你想将其值先赋给一个变量再使用,可以这样:

{% archiveDetail articleSource with name="author_source" %}
<div>文章来源:{{ articleSource }}</div>

这种方法适用于当你只希望展示少数几个特定自定义参数,并且你已经知道它们的调用字段名时,代码会更加简洁。

优化与注意事项

在实际的前台展示中,还有一些细节和优化技巧可以帮助你更好地呈现这些自定义参数:

  1. 样式控制: item.Nameitem.Value输出的通常只是纯文本。为了让它们在前台看起来更美观,你可能需要自行编写CSS样式来美化<div><span>等HTML元素的显示。

  2. 空值处理: 有时,自定义参数可能没有填写内容。为了避免前台显示空白或不必要的标题,你可以使用if标签进行判断:

    {% archiveParams params %}
        {% for item in params %}
            {% if item.Value %} {# 仅当有值时才显示 #}
                <div>
                    <span>{{ item.Name }}:</span>
                    <span>{{ item.Value }}</span>
                </div>
            {% endif %}
        {% endfor %}
    {% endarchiveParams %}
    
  3. 富文本/Markdown内容: 如果你的自定义参数类型是多行文本,并且你希望支持富文本或Markdown格式的显示,那么在输出item.Value