如何在前台页面显示AnqiCMS文档的自定义参数字段,如作者、来源等?

在网站运营中,内容管理系统(CMS)的灵活性至关重要。安企CMS以其强大的可定制性,允许我们为内容(如文章、产品等)添加各种自定义参数字段,以满足多样化的展示需求。这些自定义字段,如文章的“作者”、“来源”、产品的“型号”、“颜色”等,都能极大地丰富内容的维度和实用性。

那么,当我们在后台为文档添加了这些个性化的自定义参数后,如何在网站的前台页面上将它们优雅地呈现给访客呢?本文将详细指导您完成这一操作。

为什么需要自定义参数?

安企CMS提供了“灵活的内容模型”这一核心功能,它不仅仅局限于传统的文章标题、内容、简介等固定字段。在许多场景下,我们需要为特定类型的内容定义独有的属性。例如,一个新闻网站可能需要为每篇文章添加“记者姓名”和“新闻出处”;一个电商网站则可能需要为每个产品添加“品牌”、“适用人群”或“保修期”等。这些自定义参数能够让您的内容更加结构化,更符合业务逻辑,也更易于管理和搜索。它们不仅提升了内容的专业度,也为用户提供了更丰富、更精准的信息。

后台设置:创建您的自定义参数

在将自定义参数显示到前台之前,我们首先需要确保这些参数已经在安企CMS的后台正确创建并填充了内容。

  1. 进入内容模型管理: 登录安企CMS后台,导航至“内容管理”部分,找到“内容模型”选项。
  2. 选择或创建内容模型: 您可以为现有的“文章模型”或“产品模型”添加自定义字段,也可以根据需求创建一个全新的内容模型。
  3. 添加自定义字段: 在您选择或创建的内容模型编辑页面中,会看到“内容模型自定义字段”区域。点击“添加字段”,您需要填写以下几个关键信息:
    • 参数名: 这是显示给后台管理员的中文名称,例如“文章作者”、“内容来源”。
    • 调用字段: 这是在模板中实际引用的英文标识符,非常重要。例如,“author”、“source”。建议使用有意义的英文小写字母。
    • 字段类型: 根据参数的实际数据类型选择,例如“单行文本”(用于作者姓名、来源网址)、“数字”(用于产品库存)、“多行文本”(用于更详细的说明)、“单项选择”或“多项选择”(用于预设选项)。
    • 是否必填: 根据需求勾选,如果该字段必须填写,则勾选此项。
    • 默认值: 如果该字段有常用默认值,可以在此设置。
  4. 保存模型并填充内容: 完成自定义字段的设置后,保存内容模型。接着,在“内容管理”下添加或编辑文档时,您就会在“其他参数”区域看到这些新添加的自定义字段,并可以为每篇文档填写对应的值。

请确保“调用字段”的名称是唯一的且易于记忆,因为这将是我们在前台模板中引用它们的依据。

前台展示:在模板中调用自定义参数

安企CMS的模板引擎支持类似Django的语法,使用{% tag %}进行逻辑控制,用{{变量}}来输出内容。要显示文档的自定义参数,我们主要会用到archiveDetailarchiveParams这两个模板标签。

1. 直接调用特定自定义字段 (archiveDetail)

如果您只需要在页面中显示某个特定的自定义参数(例如“作者”或“来源”),可以使用archiveDetail标签并指定name属性为您的“调用字段”名称。

假设您在后台创建了一个调用字段名为author(参数名为“作者”)和一个调用字段名为source(参数名为“内容来源”)的自定义参数。在文档详情页的模板(通常是{模型table}/detail.html)中,您可以这样调用它们:

<div class="article-meta">
    <span>作者:{% archiveDetail with name="author" %}</span>
    <span>来源:{% archiveDetail with name="source" %}</span>
    {# 也可以将值赋值给一个变量,再使用 #}
    {% archiveDetail articleAuthor with name="author" %}
    {% if articleAuthor %}
        <span>发布者:{{ articleAuthor }}</span>
    {% endif %}
</div>

说明:

  • {% archiveDetail with name="author" %}会直接输出当前文档中author字段的值。
  • 如果author字段可能为空,您可以通过先将其赋值给一个变量(如articleAuthor),再使用{% if articleAuthor %}进行判断,避免显示空标签。
  • archiveDetail标签默认获取当前页面的文档信息。如果您需要获取其他指定ID或别名的文档,可以添加id="文档ID"token="文档URL别名"参数。

2. 循环遍历所有自定义字段 (archiveParams)

有时您可能需要显示文档的所有自定义参数,或者您希望以列表形式展示它们。archiveParams标签允许您获取文档的所有自定义参数,并可以在模板中通过循环遍历来显示。

<div class="custom-parameters">
    <h3>文档额外参数</h3>
    {% archiveParams params %}
        {% for item in params %}
            <div class="param-item">
                <span class="param-name">{{ item.Name }}:</span>
                <span class="param-value">{{ item.Value }}</span>
            </div>
        {% endfor %}
    {% endarchiveParams %}
</div>

说明:

  • {% archiveParams params %}会将当前文档的所有自定义参数作为一个数组对象赋值给params变量。

  • 通过{% for item in params %}可以遍历这个数组,每个item都包含Name(参数名,如“文章作者”)和Value(参数值,如“张三”)属性。

  • 处理特殊字段类型: 如果您的自定义参数类型是“多项选择”或“组图”等需要特殊处理的字段,item.Value可能会返回一个数组或JSON字符串。您需要根据实际情况进行额外的处理。例如,如果arcimages是一个组图字段,您可以这样遍历:

    {% archiveDetail arcimages with name="arcimages" %}
    {% if arcimages %}
        <ul class="product-gallery">
            {% for imgUrl in arcimages %}
                <li><img src="{{ imgUrl }}" alt="产品图片"></li>
            {% endfor %}
        </ul>
    {% endif %}
    
  • 过滤不需要的字段: 您也可以在循环中添加条件判断,排除某些您不想在前台显示的内部自定义参数:

    {% archiveParams params %}
        {% for item in params %}
            {% if item.Name != '内部标记' and item.Name != '隐藏参数' %}
                <div class="param-item">
                    <span class="param-name">{{ item.Name }}:</span>
                    <span class="param-value">{{ item.Value }}</span>
                </div>
            {% endif %}
        {% endfor %}
    {% endarchiveParams %}
    

重要提示:

  • 安全性: 如果自定义参数中可能包含HTML代码(例如使用了富文本编辑器),为了避免XSS攻击和确保内容正确渲染,请务必使用|safe过滤器,如{{ item.Value|safe }}。安企CMS默认对输出内容进行转义,|safe可以取消这种转义。
  • 默认值与空值处理: 在后台设置自定义参数时,您可以为其设置默认值。如果前台调用时该参数为空,则不会显示任何内容。您可以通过{% if 变量名 %}进行判断,以控制显示逻辑。
  • 样式: 前台显示自定义参数后,您可以通过CSS为.article-meta