在网站运营中,我们常常会遇到这样的情况:标准的“文章”或“产品”内容类型无法完全满足我们独特的业务需求。比如,您可能需要发布“房产信息”,它需要“户型”、“面积”、“朝向”等专属字段;或者您在运营一个“招聘平台”,需要“职位名称”、“工作地点”、“薪资范围”和“技能要求”等。此时,AnQiCMS灵活的内容模型和自定义字段功能就显得尤为重要,它能帮助我们打造出完全贴合业务的内容结构,并在网站前端进行精准展示。

本文将深入探讨如何充分利用AnQiCMS的内容模型自定义字段,并将其内容在前端模板中完美呈现。

理解内容模型与自定义字段的价值

在AnQiCMS中,内容模型可以被理解为创建各种内容类型的“蓝图”。系统默认提供了“文章模型”和“产品模型”,它们定义了诸如标题、内容、缩略图等通用字段。然而,当我们面对更具体、更专业的内容时,这些通用字段就显得捉襟见肘了。

自定义字段正是为了解决这一痛点而生。它允许我们为特定的内容模型添加任何我们需要的专属数据字段。这不仅让内容管理更加精细化、标准化,还有助于提升网站的SEO表现(因为能填充更具体的关键词信息),并为用户提供更精准、更丰富的展示内容,从而优化整体用户体验。

创建和配置自定义字段

要开始使用自定义字段,我们需要进入AnQiCMS的后台管理界面。

  1. 进入内容模型管理: 在后台左侧导航栏找到“内容管理”菜单,点击进入后会看到“内容模型”选项。这里列出了所有已存在的内容模型,包括系统内置的和您自定义的。

  2. 选择或新建模型: 您可以选择编辑现有的内容模型(例如“文章模型”),为它添加新的字段,也可以创建一个全新的内容模型来承载特定类型的内容。点击“新增自定义模型”或选择一个模型进行编辑。

  3. 添加自定义字段: 进入模型编辑页面,您会看到一个名为“内容模型自定义字段”的区域。在这里,我们可以添加和配置所需的字段。每一次添加,您都需要填写以下关键信息:

    • 参数名: 这是字段在后台显示给您看的中文名称,例如“户型”、“薪资范围”。
    • 调用字段: 这是字段在数据库中存储和在前端模板中调用的英文标识符,建议使用简洁且有意义的英文小写字母,例如houseTypesalaryRange
    • 字段类型: AnQiCMS提供了多种字段类型,以适应不同数据的录入需求:
      • 单行文本: 适用于短文本输入,如产品型号、作者姓名。
      • 数字: 仅限输入数字,如库存数量、商品价格。
      • 多行文本: 适用于较长文本,如产品特点、职位描述。
      • 单项选择: 提供多个选项,但只能选择其中一个,例如“性别”、“是否推荐”。
      • 多项选择: 提供多个选项,可以多选,例如“技能标签”、“产品特性”。
      • 下拉选择: 类似单项选择,但以下拉菜单形式呈现,节省页面空间。
    • 是否必填: 如果此字段必须填写,请勾选,系统会在提交时进行校验。
    • 默认值: 如果字段有预设值,可以在此处填写。对于“单项选择”、“多项选择”和“下拉选择”类型,这里用于输入每个选项的值,每个选项占据一行。
  4. 保存并生效: 完成字段配置后,别忘了点击保存按钮。这样,您的内容模型就具备了新的自定义字段。

在文档中填写自定义字段数据

自定义字段配置完成后,它们会立即体现在内容发布和编辑界面中。

当您进入“内容管理”下方的“发布文档”或编辑现有文档时,在文档编辑界面的底部,通常会有一个名为“其他参数”的折叠区域。展开这个区域,您就会看到刚刚创建的自定义字段以对应的输入形式展现。

例如,如果您创建了“户型”(调用字段:houseType,类型:单行文本)和“是否推荐”(调用字段:isRecommend,类型:单项选择)两个字段,那么在文档编辑页面的“其他参数”中,您会看到一个文本框用于输入户型信息,和一个单选框组用于选择是否推荐。根据字段类型,您可以方便地录入相应的数据。

在前端模板中展示自定义字段

将自定义字段数据呈现在网站前端,是实现个性化内容展示的关键一步。AnQiCMS采用了类似Django模板引擎的语法,使用起来非常直观。

AnQiCMS的模板文件通常位于/template目录下,并使用.html作为后缀。在模板中,变量通过双花括号 {{变量}} 来定义,而逻辑控制标签则使用单花括号和百分号 {% 标签 %}

基本展示:直接调用单个字段

如果您需要在文档详情页(例如{模型table}/detail.html)中显示某个特定的自定义字段,可以直接使用archiveDetail标签。

假设您有一个自定义字段,其“调用字段”为 productMaterial,用于记录产品材质。在详情页中,您可以这样调用并显示它:

<p>产品材质:{% archiveDetail with name="productMaterial" %}</p>

如果您的自定义字段是“多行文本”类型,并且您允许用户输入HTML内容(例如产品详情中的一段富文本介绍),那么在前端展示时,您需要使用 |safe 过滤器来确保HTML内容能够被浏览器正确解析,而不是作为纯文本显示:

<div>详细介绍:{% archiveDetail productDescription with name="productDescription" %}{{productDescription|safe}}</div>

这里,productDescription是我们给变量起的别名,用于接收自定义字段的值,然后通过|safe过滤器进行安全输出。

遍历展示:循环所有自定义字段

在某些情况下,您可能希望动态地显示文档中的所有自定义字段,或者不确定每个文档会包含哪些自定义字段。AnQiCMS提供了archiveParams标签,允许您遍历并显示当前文档的所有自定义字段。

这个标签通常用于文档详情页,它会返回一个包含所有自定义字段名称和值的数组对象。

<div class="custom-fields">
    <h4>其他产品参数:</h4>
    <ul>
    {% archiveParams params with sorted=true %}
        {% for item in params %}
        <li>
            <span>{{item.Name}}:</span> <!-- 显示字段的中文名称 -->
            <span>{{item.Value}}</span> <!-- 显示字段的值 -->
        </li>
        {% endfor %}
    {% endarchiveParams %}
    </ul>
</div>

在上面的代码中,params 是我们为archiveParams标签定义的变量名,item.Name会显示您在后台设置的“参数名”(如“户型”),而item.Value则会显示该字段所填写的数据。sorted=true参数确保字段以固定的顺序(通常是创建顺序)显示,方便布局。

高级应用:自定义字段作为筛选条件

AnQiCMS的强大之处还在于,自定义字段不仅可以展示,还可以用于构建灵活的内容筛选功能,尤其是在列表页(例如{模型table}/list.html)。通过archiveFilters标签,您可以将自定义字段的选项动态地生成为前端的筛选链接。

假设您为“房产信息”模型定义了“户型”(调用字段:houseType)和“面积范围”(调用字段:areaRange)等自定义字段。archiveFilters标签能够根据这些字段的预设值或已有的数据,生成可点击的筛选链接:

<div class="filter-area">
    <h4>筛选条件:</h4>
    {% archiveFilters filters with moduleId="1" allText="不限" %}
        {% for item in filters %}
        <div class="filter-group">
            <span>{{item.Name}}:</span>
            <ul>
                {% for val in item.Items %}
                <li class="{% if val.IsCurrent %}active{% endif %}">
                    <a href="{{val.Link}}">{{val.Label}}</a>
                </li>
                {% endfor %}
            </ul>
        </div>
        {% endfor %}
    {% endarchiveFilters %}
</div>

这里的moduleId参数指向您的内容模型ID(例如“文章模型”的ID为1)。allText定义了“全部”或“不限”选项的显示文本。item.Name是字段的显示名,val.Label是筛选选项的名称,val.Link是点击该选项后生成的筛选URL,而val.IsCurrent则用于判断当前选项是否被选中,方便添加样式。

结合archiveList标签,您就可以根据这些筛选条件动态地加载匹配的文档列表了。这种方式极大地提升了网站内容的交互性和用户导航的便捷性