在内容管理系统中,产品详情页往往需要展示比基础信息更丰富、更具体的产品参数,以满足不同行业和产品的个性化需求。AnQiCMS 提供了强大的自定义字段功能,让我们可以轻松地为产品详情页添加这些额外的显示参数,而无需修改核心代码。

接下来,我们将分三步详细说明如何利用 AnQiCMS 的自定义字段,为您的产品详情页注入更多活力。

第一步:定义产品内容模型中的自定义字段

AnQiCMS 的灵活性体现在其内容模型的自定义能力上。要为产品详情页添加额外参数,首先我们需要在“产品模型”中定义这些参数。

  1. 进入内容模型管理: 登录 AnQiCMS 后台,导航到左侧菜单栏的“内容管理”部分,然后点击“内容模型”。
  2. 编辑产品模型: 在内容模型列表中,找到并点击“产品模型”旁边的编辑按钮。如果您有其他专门的产品模型,也可以选择相应的模型进行编辑。
  3. 添加自定义字段: 进入产品模型编辑页面后,向下滚动会看到一个名为“内容模型自定义字段”的区域。在这里,您可以点击“添加字段”来创建新的产品参数。
    • 参数名: 这是后台管理时看到的字段名称,建议使用易于理解的中文描述,例如“颜色”、“材质”、“尺寸”、“保修期”、“适用场景”等。
    • 调用字段: 这是在模板中引用该参数时使用的唯一标识符,必须是英文字母,建议小写,不要包含空格或其他特殊字符,例如对应“颜色”可以设置为 color,对应“保修期”可以设置为 warranty
    • 字段类型: 根据您需要录入的数据类型选择合适的字段。AnQiCMS 提供了多种字段类型,如单行文本(适用于短文本如型号、颜色)、数字(适用于价格、库存)、多行文本(适用于长段描述)、单项选择、多项选择或下拉选择(适用于预设选项如尺码 S/M/L、材质分类等)。
    • 是否必填: 根据业务需求勾选,如果该参数是产品发布时必须提供的信息,请设置为必填。
    • 默认值: 如果是选择型字段(单选、多选、下拉),在这里每行输入一个选项值;如果是普通文本字段,可以预设一个默认内容。

重复上述步骤,您可以根据产品的特点添加所需的任意数量的自定义参数。定义完成后,记得点击保存。

第二步:为产品填写自定义字段内容

当您在产品模型中定义好自定义字段后,这些字段就会自动出现在产品发布或编辑页面中。

  1. 进入产品发布或编辑页面: 导航至“内容管理”下的“发布文档”,选择一个产品分类,或者在“文档管理”中编辑一个已有的产品。
  2. 查找“其他参数”: 在产品编辑页面的下方,您会发现一个名为“其他参数”的折叠区域。展开这个区域,您会看到在第一步中定义的所有自定义字段。
  3. 填写字段内容: 根据每个字段的类型,输入相应的产品参数。例如,为“颜色”字段输入“红色”,为“尺寸”字段选择“L”,为“保修期”填写“一年”等。这些数据将与产品一起存储,并准备好在前端页面展示。

第三步:在产品详情页模板中展示自定义参数

最后一步是将这些丰富的自定义参数呈现在您的网站产品详情页上。这通常涉及到修改您当前主题下的模板文件,通常是 template/您的主题文件夹/product/detail.html 或类似的路径。

AnQiCMS 提供了两种主要的标签来获取和显示自定义字段:

  1. 逐个显示特定自定义字段: 如果您需要将某个特定的自定义字段放置在详情页的某个固定位置,例如在产品名称下方显示其型号,可以直接使用 archiveDetail 标签,并指定您在第一步中设置的“调用字段”名称。

    <p>产品型号:{% archiveDetail with name="model" %}</p>
    <p>保修期:{% archiveDetail with name="warranty" %}</p>
    {# 如果自定义字段的内容是HTML,请务必加上 |safe 过滤器防止被转义 #}
    <div class="product-features">
        {% archiveDetail introduction with name="introduction" %}
        {{ introduction|safe }}
    </div>
    

    这里的 modelwarrantyintroduction 就是您在第一步中为自定义字段设置的“调用字段”名称。

  2. 循环遍历并显示所有自定义字段: 如果您希望将所有自定义字段以列表的形式统一展示,例如在一个“产品参数”或“规格”模块中,那么使用 archiveParams 标签会更加便捷。它会自动获取当前产品的所有自定义参数并进行遍历。

    <div class="product-specs">
        <h3>产品规格</h3>
        <ul>
            {% archiveParams params %}
            {% for item in params %}
            {# 确保只显示有值的字段 #}
            {% if item.Value %}
            <li>
                <span class="spec-name">{{ item.Name }}:</span>
                <span class="spec-value">{{ item.Value|safe }}</span>
            </li>
            {% endif %}
            {% endfor %}
            {% endarchiveParams %}
        </ul>
    </div>
    

    在这个示例中,item.Name 会显示您在后台设置的“参数名”(如“颜色”、“材质”),而 item.Value 则显示您为该产品填写的具体值(如“红色”、“棉麻”)。|safe 过滤器可以确保如果自定义字段中包含 HTML 内容也能正确解析显示。

结合产品详情页的完整示例(仅展示与自定义字段相关的部分):

假设您的产品模型除了 AnQiCMS 内置字段外,还定义了 model (型号,单行文本) 和 features (特点,多行文本/富文本) 两个自定义字段。

”`twig

<h1 class="product-title">{% archiveDetail with name="Title" %}</h1>

<div class="product-summary">
    {# 显示产品型号自定义字段 #}
    <p class="product-model">型号:{% archiveDetail with name="model" %}</p>
    <p class="product-description">{% archiveDetail with name="Description" %}</p>
</div>

<div class="product-image">
    <img src="{% archiveDetail with name='