AnQiCMS 凭借其灵活的内容模型功能,为我们管理各类网站内容带来了极大的便利。无论是文章、产品、活动还是其他任何需要特殊字段的内容类型,我们都可以在后台轻松地自定义字段,以满足独特的业务需求。但当我们满怀期待地在后台创建了新的字段并填充了数据后,新的问题也随之而来:如何在网站的前端页面上,将这些新增的自定义字段数据精准地展现给访客呢?

别担心,AnQiCMS 的模板系统提供了非常直观和强大的方式来处理这个问题。本文将带您一步步了解,如何让您自定义的内容模型字段在前端模板中栩栩如生。


了解 AnQiCMS 的模板机制

在深入操作之前,我们首先需要对 AnQiCMS 的模板机制有一个基本的认识。AnQiCMS 的模板系统采用 Go 语言的 Iris 框架内置模板引擎,语法上类似 Django 模板引擎,非常易于上手。

在 AnQiCMS 中,模板文件通常以 .html 为后缀,并存放在 /template 模板文件夹中。我们通过 {{ 变量 }} 来输出数据,通过 {% 逻辑标签 %} 来实现条件判断、循环等复杂逻辑。理解这些基本元素,是成功显示自定义字段数据的基础。


在内容详情页显示特定自定义字段数据

最常见的需求,莫过于在文章详情页、产品详情页等内容详情页中,显示为该内容模型新增的某个特定字段数据。例如,您可能为“文章模型”新增了“文章作者”字段,或者为“产品模型”新增了“产品颜色”字段。

要显示这些字段,我们需要用到 archiveDetail 标签。这个标签通常用于获取当前文档的详细信息,它也完美支持获取我们自定义的字段。

操作步骤:

  1. 找到对应的模板文件: 如果您是修改文章详情页,通常对应的模板文件可能是 article/detail.html(如果使用了默认的文件夹组织模式)或 article_detail.html(如果使用了扁平化文件组织模式)。产品详情页则可能是 product/detail.htmlproduct_detail.html

  2. 使用 archiveDetail 标签: 在模板文件中,找到您希望显示自定义字段的位置,然后使用如下语法:

    {# 假设您在后台自定义了一个名为“文章作者”,其“调用字段”为“author”的字段 #}
    <div>
        文章作者:{% archiveDetail with name="author" %}
    </div>
    
    
    {# 或者,您可以先定义一个变量来存储字段值,再输出,这样更灵活 #}
    {% archiveDetail articleAuthor with name="author" %}
    <div>
        文章作者:{{ articleAuthor }}
    </div>
    

    这里最关键的是 name="author" 这部分,author 必须与您在后台“内容模型”设置中为该自定义字段填写的“调用字段”完全一致(区分大小写)。

    同样地,如果您为“产品模型”新增了“产品颜色”字段,其“调用字段”是 color,那么在产品详情页模板中,您可以这样显示:

    {# 产品颜色自定义字段,调用字段为“color” #}
    <div>
        产品颜色:{% archiveDetail with name="color" %}
    </div>
    

    对于单页面 (pageDetail) 和分类 (categoryDetail) 来说,其使用方式也大同小异,只需将 archiveDetail 替换为 pageDetailcategoryDetail 即可,同时确保 name 参数对应的是该模型下的自定义字段。


灵活遍历和展示所有自定义字段数据

有时候,我们可能不希望逐一列出每个自定义字段,而是希望在一个区域(比如产品参数列表)中,自动遍历并显示所有已定义的自定义参数及其值。这种场景下,archiveParams 标签就派上用场了。

archiveParams 标签会返回一个包含所有自定义字段名称和值的数组对象,我们可以通过 for 循环来遍历并展示。

操作步骤:

  1. 在模板中引入 archiveParams 标签:

    {# 假设这是产品详情页,需要在一个区域展示所有自定义参数 #}
    <div class="product-parameters">
        <h3>产品详细参数</h3>
        {% archiveParams params %}
            {% for item in params %}
                <div class="parameter-item">
                    <span class="parameter-name">{{ item.Name }}:</span>
                    <span class="parameter-value">{{ item.Value }}</span>
                </div>
            {% endfor %}
        {% endarchiveParams %}
    </div>
    

    在这个例子中,params 是我们定义的变量名,它包含了文档的所有自定义参数。循环中的 item.Name 会输出参数的中文名称(即您在后台填写的“参数名”),item.Value 则会输出该参数对应的值。

    archiveParams 默认会返回一个排序后的数组,如果某些特殊情况您需要通过字段的“调用字段”直接访问,可以使用 sorted=false 参数,它会返回一个键值对(map)形式的对象。例如,如果您有一个调用字段为 material 的自定义字段: “`twig {% archiveParams customFields with sorted=false %}

    产品材质:{{ customFields.material.Value }}
    

    {% endarchiveParams %}