在安企CMS中管理内容时,我们常常会遇到需要为文章、产品或页面添加除了标题、正文等常规信息之外的更多个性化数据,比如文章的作者、内容来源,或者产品的具体参数、活动页面的特定属性等。这些额外的定制信息,我们称之为“自定义字段”。安企CMS强大的内容模型功能,让自定义字段的创建和管理变得十分便捷,而更重要的是,如何将这些精心录入的自定义字段,在网站的前端页面上准确、美观地呈现出来,是每一个运营者和开发者都关心的问题。
这篇文章就将带你深入了解,安企CMS如何将这些文档自定义字段,巧妙地呈现在你的网站页面上。
后台配置:自定义字段的创建
要让自定义字段在前台显示,首先得在后台将它们定义好。安企CMS提供了灵活的内容模型,允许你根据业务需求为不同的内容类型(如文章、产品)添加专属字段。
进入后台后,我们可以在“内容管理”菜单下找到“内容模型”选项。在这里,你可以选择已有的模型(比如“文章模型”),或者创建新的内容模型。进入模型编辑页面后,在“内容模型自定义字段”区域,你就可以开始添加自定义字段了。
在添加字段时,有几个关键信息需要填写:
- 参数名:这是字段在后台管理界面和模板中供你识别的中文名称,例如“文章作者”、“内容来源”。
- 调用字段:这是字段在数据库和模板中被实际引用的唯一英文标识符,比如你可以为“文章作者”设置调用字段为
author,为“内容来源”设置调用字段为source。这个“调用字段”的名称,是我们在前端模板中获取数据时使用的关键。 - 字段类型:安企CMS支持多种字段类型,如单行文本、数字、多行文本、单项选择、多项选择和下拉选择等。选择合适的字段类型,能确保你录入数据的准确性,也影响到前端的展示方式。
- 是否必填:根据字段的重要性,你可以设置其为必填项。
- 默认值:如果字段常常有固定值,可以设置默认值,这样在发布内容时,如果未手动填写,就会自动应用默认值。
举例来说,如果我们想为文章添加一个“作者”字段,我们可以在文章模型中新增一个字段,参数名为“文章作者”,调用字段为 author,字段类型选择“单行文本”。同理,可以添加一个“内容来源”字段,调用字段为 source。当你在编辑具体的文章内容时,这些自定义字段就会出现在“其他参数”区域,供你填写相应的信息。
前端显示:让自定义信息跃然屏上
当自定义字段在后台配置并填充好数据后,下一步就是如何在前端的HTML模板中,通过安企CMS的模板引擎标签将它们展示出来。安企CMS的模板引擎语法类似Django,变量用双花括号 {{变量}},逻辑标签用单花括号和百分号 {% 标签 %}。
在前端模板中显示自定义字段,通常有两种主要方式:
方法一:直接调用特定自定义字段
如果你明确知道某个自定义字段的“调用字段”名称(例如author或source),并且希望在文章详情页等特定位置直接显示它的值,可以使用 archiveDetail 标签来精准获取。
在文章详情页(例如{模型table}/detail.html)的模板中,你可以这样来调用:
<p>作者:{% archiveDetail with name="author" %}</p>
<p>来源:{% archiveDetail with name="source" %}</p>
这里,name="author"就是我们后台设置的“调用字段”。这样写,模板引擎会自动识别当前文章的ID,并获取对应的author和source字段值进行显示。
你也可以先将字段值赋值给一个变量,再使用:
{% archiveDetail articleAuthor with name="author" %}
<p>作者:{{ articleAuthor }}</p>
这种方式特别适合在页面上固定位置展示特定信息的场景。
方法二:循环遍历所有自定义字段
有时候,你可能希望动态地展示所有自定义字段及其值,或者不确定有哪些自定义字段,需要根据实际数据来渲染。这时,archiveParams 标签就派上用场了。它能够获取当前文档(文章、产品等)所有已设置的自定义参数,并让你通过循环的方式逐一展示。
archiveParams 标签通常会将自定义字段返回为一个数组对象,每个对象包含字段的Name(参数名,即显示名称)和Value(字段值)。
在文章详情页中,你可以这样动态地展示所有自定义字段:
<h3>更多文章信息</h3>
<div>
{% archiveParams params with sorted=true %}
{% for item in params %}
<div>
<span>{{ item.Name }}:</span>
<span>{{ item.Value }}</span>
</div>
{% endfor %}
{% endarchiveParams %}
</div>
这段代码会遍历当前文章的所有自定义字段,并以“参数名:字段值”的形式列出。例如,如果文章有“作者”和“来源”两个自定义字段,它就会显示:
作者:张三 来源:某某新闻网
如果你想更精细地控制显示,例如跳过某些字段,可以在循环中加入条件判断:
{% archiveParams params %}
{% for item in params %}
{% if item.Name != '文章作者' %} {# 假设你不想显示“文章作者”这个字段 #}
<div>
<span>{{ item.Name }}:</span>
<span>{{ item.Value }}</span>
</div>
{% endif %}
{% endfor %}
{% endarchiveParams %}
特殊字段类型的处理
对于不同类型的自定义字段,前端展示时数据格式会有所不同,但核心原理不变:
- 单行文本、数字、多行文本:
item.Value会直接是它们的值。如果多行文本可能包含HTML,请记得使用|safe过滤器来确保HTML内容正确渲染,例如{{ item.Value|safe }}。 - 图片组:如果你定义了一个图片组类型的自定义字段(比如调用字段为
arcimages),它的Value会是一个图片URL的数组。你需要像遍历普通数组一样,再次循环它来显示每张图片:{% archiveDetail customImages with name="arcimages" %} {% for imgUrl in customImages %} <img src="{{ imgUrl }}" alt="" /> {% endfor %} {% endarchiveDetail %} - 单项选择、多项选择、下拉选择:
item.Value会是用户选择的文本值。多项选择的话,item.Value会是一个包含多个选择项的字符串或数组,具体取决于后台存储方式,可能需要进一步处理(如用|split过滤器分割)。
实践中的一些小贴士:
- 保持调用字段一致:在后台设置自定义字段时,“调用字段”的名称务必保持英文