在安企CMS中,灵活的内容模型是其核心优势之一,它允许我们根据不同业务需求创建文章、产品等各类信息载体,并为它们定义独有的属性。当我们为文档自定义了这些个性化的字段后,如何将其数据呈现在网站前端,是许多用户关注的重点。本文将详细为您解析这一过程,帮助您轻松驾驭安企CMS的自定义模型字段。

理解自定义模型字段的价值

首先,让我们明确自定义模型字段的重要性。在内容管理中,标准字段(如标题、内容、发布时间)往往不足以满足所有展示需求。例如,一个产品模型可能需要“产品型号”、“价格”、“库存”等字段;一个房产模型则可能需要“户型”、“面积”、“朝向”等。安企CMS的自定义模型字段功能,正是为了解决这种个性化需求而生。它让您的内容结构更加贴合实际业务,不仅提升了数据管理的精细度,也为前端页面的多样化展示提供了无限可能。通过合理运用,您能创建出更具信息量、更贴近用户需求的网站内容。

后台设置:自定义字段的创建与数据录入

在调用自定义字段数据之前,我们需要在后台完成字段的创建和数据的录入。

  1. 创建自定义模型字段

    • 进入安企CMS后台,导航至“内容管理” -> “内容模型”。
    • 选择您要添加自定义字段的模型(例如“文章模型”或“产品模型”),点击“修改”。
    • 在模型编辑页面,找到“内容模型自定义字段”区域,点击“添加字段”。
    • 参数名:这是字段在后台显示给管理员看的名称,例如“文章作者”、“产品价格”。
    • 调用字段这是在模板中调用该字段数据的关键名称。请务必使用英文字母,建议采用驼峰命名法(例如articleAuthorproductPrice)。这个名称将被写入数据库,是模板识别数据的唯一标识。
    • 字段类型:根据数据特点选择合适的类型,如单行文本、数字、多行文本、单项选择、多项选择、下拉选择等。这将决定您在后台录入数据时的输入方式。
    • 是否必填:根据需要设定。
    • 默认值:可以预设一个默认值。 完成设置后,保存模型。
  2. 录入自定义字段数据

    • 导航至“内容管理” -> “文档管理”(或对应模型的列表)。
    • 点击“添加文档”或编辑现有文档。
    • 在文档编辑页面,选择所属分类后,页面会加载该分类所属模型的所有字段。向下滚动,您会在“其他参数”折叠框内看到您刚刚自定义的字段。
    • 在这里,您可以为每篇文档填入对应的自定义字段数据。这些数据正是我们稍后要在前端页面上显示的内容。

模板调用:如何在页面上显示自定义数据

完成了后台设置和数据录入,接下来就是前端模板的调用环节。安企CMS的模板引擎类似Django语法,使用{{变量}}来输出数据,{% 标签 %}来处理逻辑。

1. 调用单个已知自定义字段的数据

当您明确知道要显示某个具体的自定义字段数据时,可以使用archiveDetail标签来获取。这个方法常用于文档详情页。

假设您在后台为“文章模型”创建了一个“文章作者”的自定义字段,其“调用字段”为articleAuthor。在文章详情页的模板中,您可以这样调用:

{# 直接输出文章作者的自定义字段数据 #}
<div>文章作者:{% archiveDetail with name="articleAuthor" %}</div>

{# 将文章作者的数据赋值给一个变量再输出,方便后续处理 #}
{% archiveDetail authorName with name="articleAuthor" %}
<div>作者:{{ authorName }}</div>

关键点name参数的值,必须与您在后台“内容模型自定义字段”中设置的“调用字段”完全一致(包括大小写)。

2. 遍历显示所有自定义字段的数据

有时,您可能希望在页面上动态显示某篇文档的所有自定义字段,或者不确定有哪些自定义字段,这时可以使用archiveParams标签来遍历。

在文档详情页的模板中,您可以这样使用:

{# 遍历显示当前文档的所有自定义字段 #}
{% archiveParams params %}
<div class="custom-fields">
    {% for item in params %}
    <p>
        <span>{{ item.Name }}:</span>
        <span>{{ item.Value }}</span>
    </p>
    {% endfor %}
</div>
{% endarchiveParams %}

解释

  • {% archiveParams params %}:这行代码会获取当前文档所有的自定义字段数据,并将其存储在params这个变量中。
  • {% for item in params %}:由于params是一个包含所有自定义字段的数组(或可迭代对象),我们可以使用for循环来遍历它。
  • {{ item.Name }}item.Name会输出自定义字段在后台设置的“参数名”(即中文显示名称)。
  • {{ item.Value }}item.Value会输出该自定义字段所对应的具体数据值。

高级用法:过滤不需要显示的字段 如果您希望遍历显示大部分字段,但排除某些特定字段(例如,某个内部使用的字段),可以结合if标签进行判断:

{% archiveParams params %}
<div class="custom-fields">
    {% for item in params %}
        {% if item.FieldName != 'internalNotes' and item.FieldName != 'secretCode' %}
        <p>
            <span>{{ item.Name }}:</span>
            <span>{{ item.Value }}</span>
        </p>
        {% endif %}
    {% endfor %}
</div>
{% endarchiveParams %}

注意:这里使用的是item.FieldName,它对应的是后台设置的“调用字段”。

3. 在文档列表页调用自定义字段数据

在文档列表页(例如,显示产品列表),您可能希望每项产品都显示其价格、型号等自定义字段。这时,您会用到archiveList标签。

{# 假设您正在循环产品列表,并希望显示每项产品的产品型号(调用字段:productModel)和价格(调用字段:productPrice) #}
{% archiveList products with type="page" moduleId="2" limit="10" %} {# moduleId="2" 假设是产品模型ID #}
    {% for item in products %}
    <div class="product-item">
        <h3><a href="{{ item.Link }}">{{ item.Title }}</a></h3>
        <p>型号:{{ item.productModel }}</p> {# 直接使用item.调用字段名 #}
        <p>价格:{{ item.productPrice }}</p> {# 直接使用item.调用字段名 #}
        <p>{{ item.Description }}</p>
    </div>
    {% endfor %}
{% endarchiveList %}

关键点:在