AnQiCMS 凭借其灵活的内容模型功能,为我们管理各类网站内容带来了极大的便利。无论是文章、产品、活动还是其他任何需要特殊字段的内容类型,我们都可以在后台轻松地自定义字段,以满足独特的业务需求。但当我们满怀期待地在后台创建了新的字段并填充了数据后,新的问题也随之而来:如何在网站的前端页面上,将这些新增的自定义字段数据精准地展现给访客呢?
别担心,AnQiCMS 的模板系统提供了非常直观和强大的方式来处理这个问题。本文将带您一步步了解,如何让您自定义的内容模型字段在前端模板中栩栩如生。
了解 AnQiCMS 的模板机制
在深入操作之前,我们首先需要对 AnQiCMS 的模板机制有一个基本的认识。AnQiCMS 的模板系统采用 Go 语言的 Iris 框架内置模板引擎,语法上类似 Django 模板引擎,非常易于上手。
在 AnQiCMS 中,模板文件通常以 .html 为后缀,并存放在 /template 模板文件夹中。我们通过 {{ 变量 }} 来输出数据,通过 {% 逻辑标签 %} 来实现条件判断、循环等复杂逻辑。理解这些基本元素,是成功显示自定义字段数据的基础。
在内容详情页显示特定自定义字段数据
最常见的需求,莫过于在文章详情页、产品详情页等内容详情页中,显示为该内容模型新增的某个特定字段数据。例如,您可能为“文章模型”新增了“文章作者”字段,或者为“产品模型”新增了“产品颜色”字段。
要显示这些字段,我们需要用到 archiveDetail 标签。这个标签通常用于获取当前文档的详细信息,它也完美支持获取我们自定义的字段。
操作步骤:
找到对应的模板文件: 如果您是修改文章详情页,通常对应的模板文件可能是
article/detail.html(如果使用了默认的文件夹组织模式)或article_detail.html(如果使用了扁平化文件组织模式)。产品详情页则可能是product/detail.html或product_detail.html。使用
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替换为pageDetail或categoryDetail即可,同时确保name参数对应的是该模型下的自定义字段。
灵活遍历和展示所有自定义字段数据
有时候,我们可能不希望逐一列出每个自定义字段,而是希望在一个区域(比如产品参数列表)中,自动遍历并显示所有已定义的自定义参数及其值。这种场景下,archiveParams 标签就派上用场了。
archiveParams 标签会返回一个包含所有自定义字段名称和值的数组对象,我们可以通过 for 循环来遍历并展示。
操作步骤:
在模板中引入
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 %}{% endarchiveParams %}产品材质:{{ customFields.material.Value }}