如何在前台页面精确显示自定义内容模型的字段数据?

📅 👁️ 102

在AnQiCMS中,我们常常需要根据网站的实际需求,创建各种各样的内容。AnQiCMS强大的自定义内容模型功能,正是为了满足这种灵活性而设计的。它允许我们为不同类型的内容(如文章、产品、案例等)定义专属的字段,从而更精确地管理和展示信息。那么,这些自定义的字段数据,我们又该如何在网站的前台页面上进行精确地调用和显示呢?

这个过程通常分为两大部分:首先是理解后台自定义字段的设置,其次是掌握前端模板的调用方法。

第一步:理解自定义内容模型与字段的定义

在AnQiCMS的后台,所有自定义内容模型的管理都集中在“内容管理”下的“内容模型”模块。当我们创建一个新的内容模型或者编辑现有模型时,可以为该模型添加“自定义字段”。

每个自定义字段在定义时,有几个关键的属性需要我们关注:

  • 参数名: 这是后台界面上显示给编辑人员看的友好名称,比如“产品特点”、“作者简介”等。
  • 调用字段: 这是最重要的一个属性。它是我们在前端模板中用来引用这个自定义字段的唯一标识符,通常建议使用英文小写字母,因为它将作为代码中的变量名。例如,为“产品特点”定义的调用字段可能是productFeatures,为“作者简介”定义的调用字段可能是authorBio
  • 字段类型: AnQiCMS支持多种字段类型,如单行文本、数字、多行文本、单项选择、多项选择、下拉选择等。不同的字段类型,决定了数据在后台的录入形式,也间接影响前端的显示方式。
  • 默认值: 如果字段有默认值,当内容编辑者未填写时,系统会自动使用这里设定的默认值。

理解了这些定义,我们就为在前台页面精准显示数据打下了基础。前端模板将主要通过“调用字段”来获取对应的数据。

第二步:在前台模板中调用自定义字段数据

AnQiCMS的模板系统采用了类似Django模板引擎的语法,使用双花括号{{变量}}来输出变量,使用单花括号和百分号{% 标签 %}来调用功能标签。

1. 在内容详情页(archiveDetail标签)显示自定义字段

在浏览具体内容的详情页面(例如{模型table}/detail.html{模型table}/{文档id}.html这类模板)时,我们通常会使用archiveDetail标签来获取当前文档的详细数据。

直接按调用字段名获取单个自定义字段: 如果自定义字段是单一的文本、数字或简单的选择项,并且我们知道其精确的“调用字段”名称,可以直接通过archiveDetail标签,并指定name参数为该字段的“调用字段”来获取。

例如,假设我们为“文章”模型定义了一个调用字段为source(文章来源)的自定义字段,在文章详情页中,可以这样显示它:

<div>文章来源:{% archiveDetail with name="source" %}</div>

或者,将其赋值给一个变量再输出:

{% archiveDetail articleSource with name="source" %}
<div>文章来源:{{ articleSource }}</div>

遍历所有自定义字段(archiveParams标签): 当一个内容模型自定义了多个字段,或者我们希望以更通用的方式遍历并显示所有自定义字段时,archiveParams标签就显得非常方便了。它能够获取当前文档所有自定义的参数。

archiveParams标签可以有两种主要的用法:

  • 以数组形式遍历(推荐): 默认情况下,或指定sorted=true时,archiveParams会返回一个包含所有自定义字段的数组。数组中的每个元素又是一个对象,通常包含Name(参数名)和Value(字段数据)两个属性。这非常适合用for循环来显示。

    {% archiveParams params %}
    <div>
        {% for item in params %}
        <div>
            <span>{{item.Name}}:</span>
            <span>{{item.Value}}</span>
        </div>
        {% endfor %}
    </div>
    

    这段代码会列出后台为当前内容定义的所有自定义字段的“参数名”及其“值”。

  • 以Map(键值对)形式直接访问(了解): 如果指定sorted=falsearchiveParams会返回一个Map对象,我们可以直接通过params.调用字段名.Value来访问特定字段的值。这种方式在需要精确访问某个自定义字段,但又不方便直接使用archiveDetail with name="字段"时,可以作为补充。

    {% archiveParams params with sorted=false %}
        <div>作者简介:{{params.authorBio.Value}}</div>
        <div>产品特点:{{params.productFeatures.Value}}</div>
    {% endarchiveParams %}
    

处理富文本或Markdown类型的自定义字段: 如果自定义字段的类型是多行文本,并且在后台开启了Markdown编辑器,或者内容本身就是HTML富文本,那么在前端显示时,为了确保HTML标签能被浏览器正确解析,我们需要使用safe过滤器。同时,如果内容是Markdown格式,我们可能还需要使用render=true参数来确保Markdown被正确转换为HTML。

{% archiveDetail richTextContent with name="rich_content" render=true %}
<div>详细描述:{{ richTextContent|safe }}</div>

2. 在内容列表页(archiveList标签)显示自定义字段

在列表页面(例如文章列表页或产品列表页),我们需要遍历多个内容项。archiveList标签会返回一个内容的集合,我们在for循环中获取每个item(即每条内容)的数据。

要显示列表中每个内容的自定义字段,我们不能直接在archiveListfor循环外部调用archiveParams,而需要在for循环内部,针对当前的item再次使用archiveParams标签,并通过id参数传入当前循环项的Id

例如,在一个文章列表中显示每篇文章的“作者”自定义字段:

”`twig {% archiveList archives with type=“page” limit=“10” %}

{% for item in archives %}
<article>
    <h2><a href="{{item.Link}}">{{item.Title}}</a></h2>
    <div>
        {# 在这里获取当前文章的自定义字段 #}
        {% archiveParams articleCustomFields with id=item.Id %}
            {% for field in articleCustomFields %}
                {% if field.Name == "作者" %} {# 假设自定义字段的参数名为“作者” #}
                    <span>作者:{{field.Value}}</span>
                {% endif %}
            {% endfor %}
        {% endarchiveParams %}
        <span>发布日期:{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>

相关文章

安企CMS如何自定义文章详情页面的内容显示布局?

安企CMS在内容展示的灵活性上有着出色的表现,特别是对于文章详情页面,它提供了多层次的自定义选项,让我们可以根据具体需求,无论是对整个模型、特定分类,还是某一篇独立文章,都能精细控制其内容显示布局。这不仅限于外观上的调整,更包括了对页面内容结构和信息呈现方式的深度定制。 ### 模板核心:自由排布的基石 安企CMS的模板系统采用了类似Django模板引擎的语法,使用`

2025-11-08

AnQiCMS高级SEO工具中的Sitemap、Robots.txt等如何影响网站内容在搜索引擎中的可见度?

在网站运营的旅程中,我们都希望自己的内容能够被更多的潜在用户发现。而搜索引擎,无疑是连接网站与用户之间最重要的桥梁。为了让这座桥梁畅通无阻,我们网站与搜索引擎之间需要进行有效的“沟通”。AnQiCMS 作为一款对 SEO 友好、功能强大的内容管理系统,在这一方面提供了诸多便利,特别是其内置的高级 SEO 工具中的 Sitemap 和 Robots.txt 管理功能

2025-11-08

在AnQiCMS中,伪静态URL规则如何配置才能优化网站内容链接的显示结构?

在网站运营中,链接结构的重要性不言而喻。一个清晰、有意义的URL不仅能提升用户体验,让访客更容易理解页面内容,更是搜索引擎优化(SEO)的关键一环。凌乱、带有大量参数的动态URL往往让搜索引擎蜘蛛难以抓取,也不利于关键词的权重传递。因此,将动态URL转化为伪静态形式,是现代网站建设的普遍选择。 安企CMS(AnQiCMS)深知这一点,内置了强大的伪静态URL配置功能

2025-11-08

AnQiCMS如何支持多语言内容的切换与显示,以满足全球化推广需求?

面对日益全球化的市场,企业网站如何有效地触达世界各地的用户,语言障碍是首先需要跨越的挑战。AnQiCMS深知这一点,因此在系统设计之初就将多语言支持作为核心功能之一,旨在帮助用户轻松实现内容的全球化推广与展示。 ### AnQiCMS如何应对全球化挑战:多语言支持的基石 AnQiCMS提供了一套简洁而高效的解决方案,让您的网站能够以多种语言面向全球用户。这意味着无论您的目标受众身处何方

2025-11-08

安企CMS如何在前台显示最新的文章列表及其发布时间?

在网站运营中,及时向访问者展示最新发布的内容,不仅能有效提升用户体验,还能增强网站的活跃度。安企CMS(AnQiCMS)提供了直观且强大的模板标签功能,让您轻松实现在网站前台显示最新的文章列表及其发布时间。 ### 理解安企CMS的文章展示机制 安企CMS采用模板标签的方式来调用和展示网站数据。这意味着,您无需编写复杂的后端代码,只需在模板文件中使用预定义的标签

2025-11-08

如何为文章列表实现用户友好的分页导航显示功能?

文章列表作为网站内容的核心展示区域,其用户体验直接影响访客的停留时间与再次访问的意愿。当文章数量较多时,分页导航的合理设计显得尤为重要。安企CMS(AnQiCMS)提供了强大且灵活的模板标签,帮助我们轻松实现用户友好的文章列表分页功能,让内容管理和展示变得更加高效。 ### 核心功能解析:安企CMS的文章列表与分页机制 在安企CMS中,实现文章列表的分页功能主要依赖两个核心模板标签

2025-11-08

如何根据指定的分类ID,在前台筛选并显示相关文章列表?

在安企CMS中,根据分类ID在前台筛选并显示相关文章列表,其实很简单! 安企CMS以其高效、灵活的特点,让内容管理和展示变得轻松。无论您是运营企业官网、行业资讯站,还是个人博客,都可能遇到需要根据特定分类显示文章列表的需求。例如,在首页展示某个“热门推荐”分类的文章,或者在某个专题页面集中展示特定“产品案例”。今天,我们就来聊聊如何在安企CMS的前台模板中,精准地实现这一功能。 ###

2025-11-08

如何在文章详情页底部显示“上一篇”和“下一篇”文章的链接?

在网站内容运营中,提升用户阅读体验是关键一环。当读者在浏览完一篇精彩的文章后,如果能立即看到相关或顺序的下一篇文章链接,无疑会大大增加他们继续留在网站的可能性。这种设计不仅优化了用户体验,有助于引导用户深入浏览网站内容,还能有效降低跳出率,并从侧面提升网站的SEO表现,让搜索引擎更好地理解您网站的内容结构。 安企CMS作为一款高效、灵活的内容管理系统,充分考虑了内容展示的各种需求

2025-11-08