在安企CMS中,灵活地展示文章的自定义参数是提升网站内容个性化和信息丰富度的关键。无论是为了更好地描述产品特点,还是为了在文章中清晰标注作者和来源,自定义参数都能提供强大的支持。安企CMS提供了简洁而高效的方式来定义和调用这些参数,让您能够轻松地在网站模板中循环显示它们。

接下来,我们将分步探讨如何在安企CMS模板中实现文章自定义参数的循环显示。

第一步:理解与创建自定义参数

在安企CMS中,自定义参数是基于“内容模型”来定义的。这意味着您可以为不同类型的内容(例如文章、产品等)设置各自专属的参数。例如,文章模型可以有“作者”、“来源”参数,而产品模型则可以有“尺寸”、“颜色”等参数。

要创建这些自定义参数,您需要在安企CMS后台进行设置:

  1. 登录后台,导航到 内容管理 > 内容模型
  2. 选择您想要添加自定义参数的内容模型(比如“文章模型”),点击“编辑”按钮。
  3. 在内容模型编辑页面,找到“内容模型自定义字段”部分。
  4. 在这里,您可以添加新的字段。每个字段都需要设定“参数名”(用于后台显示)、“调用字段”(这是您在模板中使用的唯一标识符,建议使用英文小写字母)、“字段类型”(如单行文本、多行文本、单项选择等)、是否必填以及默认值。

举例来说,如果您想为文章添加一个“来源”参数,您可以在这里创建一个调用字段名为 source,参数名为“文章来源”,字段类型为“单行文本”的自定义字段。

第二步:在文章详情页显示自定义参数

当您已经在后台创建并为文章填写了自定义参数后,接下来就是在前端模板中调用它们。在文章详情页({模型table}/detail.html{模型table}/detail-{文档ID}.html),安企CMS提供了 archiveDetail 标签来获取当前文章的详细信息,这其中也包含了自定义参数。

如果您知道具体的自定义参数名称(例如 authorsource),可以直接通过以下方式调用:

{# 假设您在后台创建了调用字段为 author 和 source 的自定义参数 #}
<div>作者:{% archiveDetail with name="author" %}</div>
<div>来源:{% archiveDetail with name="source" %}</div>

或者,如果您的模板上下文已经包含了当前文章对象(通常在文章详情页会有一个名为 archive 的变量),也可以直接通过点语法访问:

<div>作者:{{archive.author}}</div>
<div>来源:{{archive.source}}</div>

这种方法适用于您明确知道需要显示哪些自定义参数的情况。

第三步:循环显示文章的所有自定义参数

在某些情况下,您可能希望动态地显示文章的所有自定义参数,或者您不确定会有哪些参数,只想列出所有已设置的非空参数。这时,archiveParams 标签就派上了用场。这个标签专门用于获取指定文章的所有自定义参数列表,并支持循环遍历。

archiveParams 标签的使用方法如下:

{% 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}} 获取的是该参数的具体值(例如“张三”、“新华网”)。
  • 如果自定义参数的值可能包含HTML内容(比如使用了多行文本字段),为了确保HTML被正确解析而不是作为纯文本显示,您可以在 {{item.Value}} 后添加 |safe 过滤器,如 {{item.Value|safe}}

如果您希望获取指定文章 ID 的自定义参数,而不是当前页面文章的参数,可以这样使用 archiveParams

{% archiveParams params with id="123" %} {# 这里的123替换为具体的文章ID #}
    {% for item in params %}
    <div>
        <span>{{item.Name}}:</span>
        <span>{{item.Value}}</span>
    </div>
    {% endfor %}
{% endarchiveParams %}

第四步:在文章列表页中显示自定义参数

在文章列表页(例如分类列表页、搜索结果页等),您通常会使用 archiveList 标签来循环显示多篇文章。如果您希望在每篇文章的列表项中显示其自定义参数,可以将 archiveParams 标签嵌套在 archiveList 的循环内部。

{% archiveList articles with type="page" limit="10" %}
    {% for article_item in articles %}
    <div class="article-item">
        <h3><a href="{{article_item.Link}}">{{article_item.Title}}</a></h3>
        <p>发布时间:{{stampToDate(article_item.CreatedTime, "2006-01-02")}}</p>

        {# 在这里调用当前文章的自定义参数 #}
        {% archiveParams custom_fields with id=article_item.Id %}
            {% for field in custom_fields %}
            <div>
                <span>{{field.Name}}:</span>
                <span>{{field.Value}}</span>
            </div>
            {% endfor %}
        {% endarchiveParams %}

        <p>{{article_item.Description}}</p>
    </div>
    {% endfor %}
{% endarchiveList %}

在这个例子中,archiveList 循环中的 article_item 代表每一篇文章,我们通过 id=article_item.Id 将当前文章的ID传递给 archiveParams,从而获取并显示该文章的自定义参数。

总结

安企CMS的自定义参数功能结合强大的模板标签,为您提供了极大的灵活性,能够根据实际需求,在网站的任何位置精确展示文章的额外信息。通过合理利用 archiveDetailarchiveParams 标签,无论是固定参数还是动态参数列表,都能轻松驾驭,让您的网站内容更具吸引力和专业性。


常见问题解答 (FAQ)

1. 我在后台设置了自定义参数,但为什么在前台模板中通过 {{archive.customFieldName}} 访问不到? 这通常发生在 customFieldName(即您在后台设置的“调用字段”)拼写不正确,或者当前模板上下文中的 archive 变量并未包含该自定义参数数据。请仔细检查调用字段的拼写,并确保您是在文章详情页或 archiveList 循环内部,并且 archive 变量确实指向了正确的文章对象。使用 archiveParams 标签进行循环遍历是更稳健的方法,因为它会明确返回所有已设置的自定义参数。

2. 如何仅显示某个特定的自定义参数,而不循环所有参数? 如果您只想显示一个已知的特定自定义参数,可以直接使用 {% archiveDetail with name="您的调用字段名" %} 标签。例如,要显示“作者”,可以使用 {% archiveDetail with name="author" %}。这种方式避免了不必要的循环,代码更加简洁明了。

3. 我的自定义参数是一个多行文本字段,其中包含了HTML代码,如何在模板中正确显示这些HTML内容? 如果您的自定义参数的值中可能包含HTML代码(例如一个包含加粗、链接的简介),为了让浏览器正确解析这些HTML,而不是将其作为纯文本显示,您需要在输出该参数值时使用 |safe 过滤器。例如:<span>{{item.Value|safe}}</span>。请注意,使用 |safe 过滤器意味着您信任该参数的内容是安全的,不会引入恶意脚本。