安企CMS以其出色的灵活性和高度可定制性,深受内容运营者的喜爱。在日常网站管理中,我们经常会遇到需要为不同类型的内容(例如文章、产品、活动等)添加专属属性的场景。这时,安企CMS的文档自定义参数字段功能便能大显身手,它允许我们根据业务需求扩展内容的结构,从而实现更加个性化和丰富的展示效果。
本文将详细介绍如何在安企CMS后台创建这些自定义参数字段,以及如何在前端模板中准确获取并优雅地呈现它们,帮助你充分利用这一强大功能,让你的网站内容更具表现力。
什么是文档的自定义参数字段?
简单来说,自定义参数字段就是对安企CMS预设的内容结构进行扩展,为我们的文档添加额外的、独有的属性。例如,如果你的网站有“产品”模块,除了常规的产品名称、描述和图片外,你可能还需要记录产品的“价格”、“库存量”、“颜色选项”等信息;如果是一个“文章”模块,你可能想添加“文章作者”、“来源链接”或“阅读时长”等属性。这些根据特定业务需求而添加的额外信息,就是自定义参数字段。它让每一条内容的数据结构更加完整,也为前端展示提供了更多维度。
如何在安企CMS后台创建自定义参数字段?
创建自定义参数字段的过程非常直观,它与内容模型的管理紧密相连。
进入内容模型管理: 首先,登录安企CMS后台,通过左侧导航栏进入“内容管理”部分,然后点击“内容模型”。在这里,你会看到系统内置的“文章模型”、“产品模型”,以及你可能已经创建的其他自定义模型。
选择或创建内容模型: 选择你想要添加自定义字段的内容模型(例如“产品模型”),点击其右侧的“编辑”按钮。如果你需要为一种全新的内容类型设置字段,则可以点击“添加新模型”来创建一个新的内容模型。
配置自定义字段: 在内容模型的编辑界面,向下滚动找到“内容模型自定义字段”区域。这里就是我们定义各种个性化字段的地方。点击“添加字段”,会出现一个配置表单:
- 参数名:这是字段在后台界面和前端模板中用于识别的中文名称,例如“产品价格”、“文章作者”。
- 调用字段:这是在数据库和模板中实际引用的字段标识符,建议使用英文字母,如“productPrice”、“author”。这个字段名至关重要,它将是你在前端模板中获取该参数的唯一凭证。
- 字段类型:根据你希望存储的数据类型选择合适的类型,安企CMS提供了多种选择,包括:
- 单行文本:适用于短文本输入,如作者名、品牌名。
- 数字:仅限输入数字,如库存、价格。
- 多行文本:适用于较长的文本内容,如产品特性描述、简要介绍。
- 单项选择/多项选择/下拉选择:用于预设选项,让用户从固定列表中选择,例如产品颜色、尺寸等。
- 是否必填:勾选此项,发布内容时该字段必须填写。
- 默认值:为字段设置一个初始值,如果用户未填写,则会使用此默认值。对于选择类型的字段,默认值需一行一个地输入选项内容。
完成配置后,点击“确定”保存。重复此步骤可以添加多个自定义字段。
关联到文档编辑: 一旦自定义字段在内容模型中设置完毕,当你进入“内容管理”下的“发布文档”或编辑现有文档时,选择对应的分类(该分类所属模型需包含你自定义的字段),在文档编辑页面的“其他参数”折叠区域中,就会看到你刚刚定义的自定义参数字段。此时,你就可以为每篇文档填写这些专属信息了。
在前端模板中获取和显示自定义参数字段
定义好自定义参数字段后,下一步就是如何在你的网站前端模板中将这些信息展示出来。安企CMS提供了灵活的模板标签,让我们能够方便地获取这些数据。
安企CMS的模板语法类似Django,变量使用双花括号 {{变量名}} 包裹,标签则使用 {% 标签名 参数 %}。
使用
archiveDetail标签获取单个自定义字段当你明确知道自定义字段的“调用字段名”,并且只需要获取当前文档的该字段值时,
archiveDetail标签是最直接的选择。- 基本用法:
例如,你为“文章模型”定义了一个“文章作者”字段,其“调用字段”为{% archiveDetail with name="自定义字段的调用字段名" %}author:<div>文章作者:{% archiveDetail with name="author" %}</div> - 获取多值字段(如图片组):
如果你的自定义字段类型是图片组,它会返回一个图片URL的数组。你需要将其赋值给一个变量,然后通过
for循环遍历显示: 假设你定义了一个“产品图片”字段,调用字段为product_images:{% archiveDetail productImages with name="product_images" %} <div class="product-gallery"> {% for imgUrl in productImages %} <img src="{{ imgUrl }}" alt="产品图片" /> {% endfor %} </div> - 处理Markdown格式内容:
如果你的自定义字段类型是多行文本,并且你希望其内容支持Markdown格式并渲染为HTML,你需要结合
render和safe过滤器: 假设你有一个“详细介绍”字段,调用字段为details_markdown:<div class="product-details"> {% archiveDetail detailsContent with name="details_markdown" %} {{ detailsContent|render|safe }} </div>|render过滤器负责将 Markdown 文本解析为 HTML,而|safe则告诉模板引擎这段 HTML 是安全的,不需要进行二次转义。
- 基本用法:
使用
archiveParams标签获取所有自定义字段当你不确定有哪些自定义字段,或者你希望以通用方式遍历显示文档的所有自定义参数时,
archiveParams标签非常有用。它能获取当前文档或指定文档的所有自定义参数。- 获取有序列表(默认行为或
sorted=true):archiveParams默认返回一个有序的数组,每个数组项是一个包含Name(参数名)和Value(参数值)的对象。
这种方式非常适合在产品详情页等场景,以列表形式展示所有自定义参数。你也可以在循环中根据{% archiveParams params %} <ul class="product-specs"> {% for item in params %} <li> <span>{{ item.Name }}:</span> <span>{{ item.Value }}</span> </li> {% endfor %} </ul> {% endarchiveParams %}item.Name进行条件判断,对特定字段做特殊处理。 - 获取无序Map对象(
sorted=false): 如果你更喜欢通过键名直接访问,可以将sorted参数设置为false,此时archiveParams会返回一个Map对象。 “`twig {% archiveParams params with sorted=false %}{% if params.productPrice %} {# 判断字段是否存在 #}价格:{{ params.productPrice.Value }}{% endif %} {% if params.stockQuantity
- 获取有序列表(默认行为或