在AnQiCMS中,网站内容的灵活性是其一大亮点,这得益于其强大的内容模型自定义字段功能。除了文章标题、内容、发布时间等标准字段外,您还可以根据业务需求,为不同的内容模型(如文章、产品)添加各种自定义字段,例如“作者”、“产品型号”、“房屋面积”或是“服务特点”等。这些自定义字段极大地丰富了网站内容的表现形式,使其更贴合实际应用场景。
那么,当您在后台辛辛苦苦定义并填写了这些自定义字段后,如何在网站前端页面上优雅地展示它们呢?AnQiCMS为此提供了一个专门的模板标签——archiveParams,它就是连接后台自定义数据与前端展示的桥梁。
理解自定义字段:后台的设置与内容的录入
在深入archiveParams标签的使用前,我们先快速回顾一下自定义字段在AnQiCMS后台的生命周期。
首先,您需要在“内容管理”下的“内容模型”中,选择或创建一个模型,并为该模型添加自定义字段。例如,您可以为“文章模型”添加一个名为“文章来源”(调用字段为source)的“单行文本”类型字段。
接着,当您在“内容管理”下“发布文档”时,选择您定义了自定义字段的分类,页面底部通常会有一个“其他参数”的折叠区域。展开后,您会看到您为该模型定义的所有自定义字段。在这里,您可以为每篇文档填写相应自定义字段的数据,比如文章来源填写“知乎”或“原创”。
archiveParams标签:获取自定义字段数据
archiveParams标签的核心作用,就是帮助您在文档详情页(或其他需要展示特定文档自定义字段的页面)获取这些附加的自定义字段数据。这个标签的使用方式非常灵活,可以根据您的具体需求选择不同的参数来获取数据。
其基本语法结构通常是这样的:
{% archiveParams 变量名称 with 参数="值" %}
其中,变量名称是您为获取到的自定义字段数据设定的一个临时变量名,比如params或customFields。参数则用于控制数据获取的方式。
方法一:循环遍历所有自定义字段(默认且推荐)
当您希望在页面上展示某篇文档的所有自定义字段,或者不确定有哪些字段,需要动态显示时,可以使用archiveParams的默认用法。它会返回一个按后台排序的数组对象,每个对象都包含了字段的中文名称和它的值。
{# 假设当前页面是文档详情页,我们将获取到的自定义字段命名为 params #}
<div>
<h3>文档附加信息:</h3>
<ul>
{% archiveParams params %}
{% for item in params %}
<li><strong>{{ item.Name }}:</strong> {{ item.Value }}</li>
{% endfor %}
{% endarchiveParams %}
</ul>
</div>
在这段代码中:
{% archiveParams params %}标签会获取当前文档的所有自定义字段数据,并赋值给params变量。{% for item in params %}循环遍历params数组。{{ item.Name }}会输出自定义字段在后台设置的“参数名”(例如“文章来源”)。{{ item.Value }}则会输出该自定义字段在文档中填写的数据(例如“知乎”)。
这种方式特别适合产品详情页,您可以循环展示所有产品规格(如品牌、型号、尺寸、颜色等),无需预设每个字段的调用代码,极大地提高了模板的复用性。
方法二:直接获取特定自定义字段的值
如果您已知某个自定义字段的“调用字段”名称,并且只需要获取它的值,而不是遍历所有字段,那么有几种更简洁的方式。
最直接的方式:通过archive对象访问
在文档详情页中,通常可以直接通过archive对象(AnQiCMS会自动将当前文档的详情数据赋值给archive变量)来访问自定义字段。您只需要知道其在内容模型中定义的“调用字段”名称即可。
{# 假设您在内容模型中定义了一个调用字段为 'author' 的自定义字段 #}
<p><strong>作者:</strong> {{ archive.author }}</p>
{# 假设您在内容模型中定义了一个调用字段为 'productModel' 的自定义字段 #}
<p><strong>产品型号:</strong> {{ archive.productModel }}</p>
这种方式最为简洁,前提是您确保archive变量可用,且自定义字段的“调用字段”名称准确无误。
通过archiveParams配合sorted=false获取指定字段
如果您需要获取多个特定字段,并且也想同时获取它们的“参数名”,或者当前页面不是直接的文档详情页,不能直接使用archive对象,那么可以将archiveParams标签的sorted参数设置为false。这样,archiveParams会返回一个以“调用字段”为键名的map对象,您可以像访问字典一样,直接通过键名获取字段数据。
{# 设置 sorted=false 后,我们将获取到的自定义字段命名为 customFields #}
{% archiveParams customFields with sorted=false %}
<p><strong>{{ customFields.author.Name }}:</strong> {{ customFields.author.Value }}</p>
<p><strong>{{ customFields.source.Name }}:</strong> {{ customFields.source.Value }}</p>
{# 假设 customFields.author 和 customFields.source 存在 #}
{% endarchiveParams %}
在这种方式中,customFields.author是一个对象,它包含了Name(参数名,如“作者”)和Value(字段值)两个属性。author和source就是您在后台内容模型中为自定义字段设定的“调用字段”名称。
指定文档ID获取自定义字段
archiveParams标签还支持通过id参数来指定获取某个特定文档的自定义字段数据,而不是默认获取当前页面的文档。这在某些需要跨文档获取数据的场景下非常有用。
{# 获取 ID 为 10 的文档的自定义字段 #}
{% archiveParams otherDocParams with id="10" %}
{% for item in otherDocParams %}
<p><strong>{{ item.Name }}:</strong> {{ item.Value }}</p>
{% endfor %}
{% endarchiveParams %}
总结
archiveParams标签是AnQiCMS模板制作中非常实用的一个功能,它配合内容模型中的自定义字段,让您可以灵活地管理和展示各种类型的内容数据。无论是动态遍历所有字段,还是精准定位特定字段,archiveParams都能提供简洁高效的解决方案,帮助您构建功能丰富、结构清晰的网站页面。
常见问题解答 (FAQ)
1. 我在后台定义了自定义字段,为什么使用archiveParams标签时,前端页面没有显示任何数据?