在安企CMS中管理网站内容,我们经常会遇到需要展示除了标题、正文这些标准字段以外的特定信息。比如,您在运营一个电商网站,产品除了名称和描述,可能还需要展示“材质”、“产地”、“保修期”等;或者您在运营一个资讯博客,文章除了标题和内容,可能还需要显示“作者来源”、“发布机构”等。安企CMS灵活的内容模型设计,正是为了满足这种多样化的内容展示需求。

今天,我们就来深入聊聊,如何在安企CMS的模板中获取并优雅地显示文章、产品等内容模型里您自定义的参数,让您的网站内容更加丰富和结构化。

为什么需要内容模型的自定义参数?

安企CMS提供了“文章模型”和“产品模型”等多种预设内容类型,但每个行业、每个网站对内容的细化需求千差万别。自定义参数允许您:

  1. 丰富内容维度: 突破传统内容的限制,为文章、产品添加任何您认为重要的额外信息。
  2. 提升用户体验: 以结构化的方式展示信息,让访问者一眼就能找到他们关注的关键数据,例如产品的核心卖点、文章的独特背景。
  3. 优化内容管理: 将不同的信息分门别类,后台录入和管理更加清晰高效。
  4. 增强SEO效果: 结构化的数据更容易被搜索引擎理解和抓取,有助于提升网站的可见性和排名。

简而言之,自定义参数是您网站内容个性化和专业化的基石。

如何在后台设置自定义参数?

在安企CMS中,设置自定义参数的流程非常直观。您可以通过以下步骤进行:

  1. 进入内容模型管理: 登录安企CMS后台,找到左侧导航栏的“内容管理”,然后点击“内容模型”。
  2. 选择或创建模型: 您可以选择编辑现有的“文章模型”或“产品模型”,也可以根据需要新建一个内容模型。
  3. 添加自定义字段: 在模型编辑页面,您会看到“内容模型自定义字段”区域。点击“添加字段”,即可为当前模型定义新的参数。
    • 参数名: 这是后台显示给您看的中文名称,方便您理解(例如“文章作者”)。
    • 调用字段: 这是在模板中实际使用的英文变量名,请确保其唯一且易于识别(例如author)。
    • 字段类型: 根据您需要存储的数据类型选择(单行文本、数字、多行文本、单项选择、多项选择、下拉选择)。这将直接影响后台的输入形式和前端的显示方式。
    • 是否必填、默认值: 根据业务需求设置。
  4. 保存设置: 完成自定义字段的添加后,务必点击保存。

设置好内容模型后,当您在“内容管理”下添加或编辑文章、产品时,在编辑页面的“其他参数”部分,您就会看到刚刚定义的自定义字段,可以为每篇内容填入相应的数据。

在模板中获取和显示自定义参数

在安企CMS的模板中,我们主要通过两种方式来获取和显示这些自定义参数:直接通过字段名访问,以及通过循环遍历所有参数。安企CMS的模板引擎类似Django语法,使用双花括号 {{变量}} 输出,条件和循环使用 {% 标签 %} 结构。

1. 直接通过字段名获取特定自定义参数

如果您知道自定义参数的“调用字段”名称,并且只需要获取单个参数的值,可以使用archiveDetail标签。这个标签通常用于文章或产品的详情页,可以获取当前文档的详细信息,包括自定义参数。

假设您为文章模型添加了一个“文章来源”的自定义参数,其“调用字段”为source。在文章详情页的模板中,您可以这样获取并显示它:

{# 假设当前是文章详情页,archiveDetail会自动获取当前文档的详情 #}
<div>
    <span>文章标题:</span>{{ archive.Title }}
</div>
<div>
    <span>发布时间:</span>{{ stampToDate(archive.CreatedTime, "2006-01-02") }}
</div>
<div>
    {# 直接通过自定义参数的“调用字段”名称来获取 #}
    <span>文章来源:</span>{% archiveDetail with name="source" %}
</div>

{# 如果您将获取到的值赋给一个变量,可以这样: #}
{% archiveDetail articleSource with name="source" %}
<div>
    <span>文章来源(变量):</span>{{ articleSource }}
</div>

请注意,name属性的值必须是您在后台设置的“调用字段”名称。这种方式简洁明了,适用于您明确知道要显示哪些自定义参数的情况。

2. 循环遍历所有自定义参数

有时,您可能希望动态地显示所有自定义参数,或者您不确定每个内容模型具体有哪些自定义参数。这时,archiveParams标签就派上用场了。它可以获取指定文档的所有自定义参数,并允许您通过循环进行展示。

{# 获取当前文档的所有自定义参数,并将其赋给变量params #}
{% archiveParams params %}
    <div>
        <h3>其他参数:</h3>
        <ul>
            {% for item in params %}
            <li>
                <span>{{ item.Name }}:</span> {# item.Name 是参数名(例如“文章作者”) #}
                <span>{{ item.Value }}</span> {# item.Value 是参数的值 #}
            </li>
            {% endfor %}
        </ul>
    </div>
{% endarchiveParams %}

在上面的例子中,params变量是一个包含所有自定义参数的对象数组,每个item都包含了Name(参数名,即后台设置的中文名)和Value(参数值)。

处理特定类型的自定义参数:

如果您的自定义参数是多行文本富文本(例如一个详细的“产品特点介绍”,字段类型为多行文本,且后台允许HTML输入),为了确保HTML内容能够正确解析而不是被转义,您需要在输出时使用|safe过滤器。如果该字段还支持Markdown,则需要先使用|render过滤器将其转换为HTML,再使用|safe

{# 假设自定义字段"产品特点介绍"的调用字段是"features", 且支持Markdown #}
{% archiveDetail productFeatures with name="features" %}
<div class="product-features">
    {{ productFeatures|render|safe }}
</div>

如果您的自定义参数是一个图片组(例如“产品实拍图”,后台输入多张图片地址),`