变量在AnQiCMS模板中如何显示?

📅 👁️ 71

在AnQiCMS的模板中,如何有效地展示变量数据,是每一位网站运营者和模板制作者都需要掌握的核心技能。AnQiCMS采用了一套类似于Django模板引擎的语法,使得数据的调用和展示既直观又灵活。本文将深入探讨在AnQiCMS模板中显示变量的各种方式,帮助您将后台配置的数据、文章内容等动态信息精准地呈现在网站前端。

核心概念:双花括号 {{ }} 与变量基础

在AnQiCMS的模板里,显示任何动态数据最基本的方式就是使用双花括号 {{ 变量名 }}。这是一种直观的语法,模板引擎在渲染页面时,会自动将双花括号内的变量替换为实际的数据。

例如,如果你想在模板中显示网站的名称,它可能被定义为一个变量 SiteName,你就可以这样调用: <h1>{{ SiteName }}</h1>

如果变量是一个包含多个属性的对象(如一篇文章、一个分类),你可以使用点 . 来访问其内部属性。例如,一篇文档对象通常会有标题 Title 和内容 Content 等属性: <h2>{{ archive.Title }}</h2> <div>{{ archive.Content }}</div>

需要注意的是,AnQiCMS中的变量命名通常遵循驼峰命名法则,即每个单词的首字母大写(例如 SiteName, CreatedTime)。

动态获取数据:标签 (Tags) 的力量

除了直接访问一些全局变量外,AnQiCMS提供了丰富的“标签” ({% tag %}) 来动态地从数据库中获取数据。这些标签执行特定的逻辑,并将查询到的数据赋值给模板中的变量,供您进一步展示。

1. 获取全局或站点级信息: AnQiCMS提供了一些标签用于获取整个网站或当前站点的配置信息,如 systemcontacttdk(TDK指Title、Description、Keywords)。这些标签通常通过 name 参数指定要获取的字段:

  • 网站系统设置: {% system with name="SiteName" %} 会显示您在后台“全局设置”中配置的网站名称。同样,{% system with name="SiteLogo" %} 会返回网站Logo的图片地址。
  • 联系方式: {% contact with name="Cellphone" %} 将显示您在后台“联系方式设置”中填写的联系电话。
  • 页面TDK: {% tdk with name="Title" %} 将获取当前页面的标题。当您需要将网站标题与网站名称结合时,可以使用 {% tdk with name="Title" siteName=true %}

2. 获取内容详情: 当您处于文章详情页、分类详情页或单页面时,可以直接使用对应的详情标签来获取当前内容的详细信息。这些标签会自动识别当前页面的上下文。

  • 文档详情: {% archiveDetail with name="Title" %} 会显示当前文章的标题。同样,{% archiveDetail with name="Content" %} 会显示文章内容。您也可以通过 idtoken 参数获取指定文档的信息。
  • 分类详情: {% categoryDetail with name="Title" %} 显示当前分类的名称,{% categoryDetail with name="Description" %} 显示分类的描述。
  • 单页详情: {% pageDetail with name="Content" %} 用于显示“关于我们”这类单页面的内容。

3. 获取内容列表: 对于需要展示多条数据(如文章列表、产品列表、分类导航)的场景,您需要使用列表标签,并结合 {% for %} 循环标签来遍历并显示每一项的数据。

  • 文档列表: {% archiveList archives with type="list" categoryId="1" limit="10" %} 会获取指定分类下的10篇文章。在循环中,您可以通过 {{ item.Title }} 访问每篇文章的标题。
  • 分类列表: {% categoryList categories with moduleId="1" parentId="0" %} 会获取文章模型下所有的顶级分类。您可以在循环中使用 {{ item.Title }}{{ item.Link }} 来构建导航。

当您使用列表标签获取数据时,通常会像这样组织代码:

{% archiveList articles with type="list" limit="5" %}
    {% for article in articles %}
        <h3><a href="{{ article.Link }}">{{ article.Title }}</a></h3>
        <p>{{ article.Description }}</p>
        <span>发布时间:{{ stampToDate(article.CreatedTime, "2006-01-02") }}</span>
    {% empty %}
        <p>暂时没有文章。</p>
    {% endfor %}
{% endarchiveList %}

这里的 articles 是您通过 archiveList 标签获取到的文章集合,article 是循环中每一篇文章的变量。

精细控制:使用过滤器 (Filters) 优化变量显示

仅仅获取原始数据往往不够,我们还需要对数据进行格式化、截取或者转换。AnQiCMS提供了“过滤器”机制,通过在变量名后添加竖线 | 和过滤器名称,您可以对变量的显示进行精细控制。

1. 处理HTML内容:|safe 当您在后台编辑器中输入了富文本(如文章内容),其中包含HTML标签时,如果直接输出 {{ archive.Content }},为了安全,模板引擎可能会将其中的HTML标签进行转义,显示为 <p>内容</p> 而不是渲染后的样式。这时,您需要使用 |safe 过滤器,告诉模板引擎这段内容是安全的,可以直接作为HTML输出: <div>{{ archive.Content|safe }}</div>

2. 格式化日期和时间:stampToDate AnQiCMS中存储的时间戳通常是10位数字。为了将其显示为人类可读的日期格式,您可以使用 stampToDate 函数: <span>发布日期:{{ stampToDate(article.CreatedTime, "2006-01-02") }}</span> <span>更新时间:{{ stampToDate(article.UpdatedTime, "2006-01-02 15:04:05") }}</span> 请注意,日期格式字符串 2006-01-02 15:04:05 是Golang特有的参考时间格式,用来表示年、月、日、时、分、秒。

3. 截取文本:|truncatechars|truncatewords 当您需要显示文章摘要或简短描述时,可以使用截取过滤器来限制字符数或单词数,并自动在末尾添加省略号: {{ item.Description|truncatechars:100 }} (截取前100个字符) {{ item.Description|truncatewords:20 }} (截取前20个单词)

4. 其他常用过滤器:

  • |lower / |upper:将字符串转换为小写/大写。
  • |add:数字:将变量与指定数字相加。
  • |replace:"旧词,新词":替换字符串中的特定内容。
  • |length:获取字符串、数组或对象集合的长度。
  • |join:", ":将数组元素用逗号和空格连接成一个字符串。

灵活的变量定义:withset 标签

有时,您可能需要在模板内部定义一些临时变量,以便代码更清晰或避免重复计算。AnQiCMS提供了 withset 标签来实现这一目的。

  • {% with ... %} 用于在模板块中定义临时的、块级作用域的变量,常与 include 标签结合使用,向被引入的模板传递参数。
    
    {% with pageTitle="我的自定义页面标题", pageKeywords="关键字1,关键字2" %}
        {% include "partial/header.html" with title=pageTitle keywords=pageKeywords only %}
    {% endwith %}
    
  • {% set ... %} 用于在当前模板中定义

相关文章

AnQiCMS模板文件应使用什么文件后缀以确保正确显示?

在使用安企CMS(AnQiCMS)进行网站建设和内容管理时,确保模板文件正确显示是网站正常运行的基础。这其中,模板文件的命名规范,特别是文件后缀,扮演着至关重要的角色。 安企CMS的模板文件有一个明确且统一的文件后缀要求,那就是使用 **.html** 作为模板文件的扩展名。这些文件通常被组织存放在网站根目录下的 `/template` 文件夹中。 选择 `.html`

2025-11-08

如何为移动端和PC端分别配置不同的内容显示模板?

在网站运营中,为不同的设备提供**的浏览体验是至关重要的。安企CMS深知这一点,它提供了一套灵活的模板机制,让你可以轻松地为移动端和PC端配置不同的内容显示模板,从而满足用户需求,提升网站表现。 下面,我们就来详细了解一下如何在安企CMS中实现这一目标。 ### 理解安企CMS的模板模式 安企CMS提供了三种主要的网站模式,以适应不同场景下对移动端和PC端内容显示的需求: 1.

2025-11-08

如何为特定分类或页面自定义模板来控制显示样式?

网站运营中,我们常常会遇到这样的情况:不同类型的内容,即使是同一个分类下的文章,或者同一个网站上的不同“关于我们”页面,都希望能有独特的展现风格,以更好地吸引读者,传达信息。安企CMS(AnQiCMS)深知这一需求,因此提供了非常灵活的模板定制机制,让我们能够轻松为特定分类或页面量身定制显示样式。 安企CMS的模板系统基于Go语言的Django模板引擎语法,这意味着只要您对前端开发有基础了解

2025-11-08

后台模板编辑功能是否支持实时预览内容显示效果?

安企CMS在网站内容管理领域以其高效、灵活的特点受到众多运营者的青睐。当我们谈及网站的视觉呈现和用户体验时,模板的定制化能力无疑是核心。其中,后台模板编辑功能与内容显示效果的实时预览,是许多用户关注的焦点。 ### 安企CMS的模板编辑能力:强大且灵活 安企CMS为用户提供了强大且灵活的后台模板编辑功能。系统采用了类似Django的模板引擎语法,这种语法对于熟悉前端开发或模板语言的用户来说

2025-11-08

如何使用条件判断和循环控制来动态调整内容的显示?

在安企CMS中管理内容,我们常常会遇到需要根据特定条件展示不同信息,或者重复展示一系列内容的场景。这时候,灵活运用条件判断和循环控制,就能让网站内容变得更加生动和智能化。 安企CMS的模板功能提供了类似Django模板引擎的强大语法支持,通过这些标签,我们可以轻松实现内容的动态调整,而无需编写复杂的后台代码。 ### 条件判断:让内容“看人说话” 条件判断是实现动态内容显示的基础。想象一下

2025-11-08

为何UTF8编码对AnQiCMS模板的内容显示至关重要?

## 内容显示不再困扰:为何UTF-8编码对AnQiCMS模板如此关键? 在使用AnQiCMS搭建和运营网站的过程中,我们常常追求网站的高效、稳定和内容的多样化展示。然而,有一个看似基础但实则至关重要的环节,如果处理不当,会让我们所有的努力付诸东流——那就是模板文件的字符编码。特别是对于AnQiCMS,UTF-8编码不仅仅是一个推荐,它是确保网站内容正确、清晰显示的核心基石。 想象一下

2025-11-08

移动端专用模板文件应存放在哪个目录下才能被AnQiCMS识别?

在安企CMS(AnQiCMS)中为网站的移动端体验提供专门的优化,是一个非常实用的需求。得益于AnQiCMS灵活的模板机制,我们可以轻松地实现这一目标。当需要为移动设备提供一套独立的模板文件时,这些模板的存放位置和配置方式是关键。 简单来说,如果您希望AnQiCMS能够识别并应用专门为移动端设计的模板,您需要将这些模板文件统一存放在当前使用的**模板主题目录下的 `mobile` 子目录中**

2025-11-08

AnQiCMS如何通过命名约定自动应用文档或分类的默认显示模板?

在网站运营中,模板管理是确保内容展示专业性和一致性的关键一环。对许多运营者来说,为每一篇新文章、每一个新分类手动选择或指定模板,无疑是一项重复且耗时的工作。安企CMS深知这一痛点,因此引入了一套智能的命名约定机制,让系统能够自动识别并应用默认的显示模板,从而大大简化了我们的日常操作。 这项功能的巧妙之处在于,AnQiCMS能够根据模板文件的特定命名规则,智能地将内容与预设的设计样式关联起来

2025-11-08