如何在 AnQiCMS 模板中利用 Django 风格的标签和变量动态展示数据?
AnQiCMS 提供了一套灵活且功能强大的模板系统,它采用了类似 Django 模板引擎的语法风格,这使得有经验的开发者能够快速上手,同时也非常直观,即便是不熟悉模板语言的用户也能通过简单的学习来动态呈现网站内容。这套系统以其简洁的标签和变量使用方式,让数据与前端页面的交互变得高效且易于管理。
要充分利用 AnQiCMS 模板来动态展示数据,我们需要理解其核心的语法结构:变量、标签和过滤器。
理解变量:直接输出数据的途径
在 AnQiCMS 模板中,变量是您将后端数据直接输出到前端页面的主要方式。它们通常使用双花括号 {{ 变量名 }} 来定义。当页面被请求时,AnQiCMS 会解析这些变量,并将其替换为对应的实际数据。例如,如果您想显示一篇文章的标题,可以直接使用 {{ archive.Title }}。
值得注意的是,变量名通常遵循驼峰命名法则,即每个单词的首字母大写,比如 archive.Id 代表文章的 ID,archive.CreatedTime 代表文章的创建时间。这种命名规范使得变量的含义一目了然。
运用标签:实现逻辑控制和数据获取
标签是 AnQiCMS 模板系统中实现逻辑控制和执行特定功能的核心。它们以单花括号和百分号 {% 标签名 %} 的形式出现,并且大多数标签都需要一个对应的结束标签,如 {% if ... %}{% endif %} 或 {% for ... %}{% endfor %}。
数据获取标签 AnQiCMS 内置了多种数据获取标签,让您能够轻松地从数据库中提取所需信息。
archiveDetail和archiveList:用于获取单篇文章详情或多篇文章列表。例如,{% archiveDetail with name="Title" %}可以获取当前页面的文章标题,而{% archiveList archives with type="page" limit="10" %}则能获取一个分页的文章列表,并将其赋值给archives变量。这些标签通常接受id(ID)、categoryId(分类ID)、moduleId(模型ID)、order(排序方式) 等参数,帮助您精确筛选所需数据。categoryDetail和categoryList:用于获取分类详情或分类列表。您可以根据moduleId和parentId参数来构建复杂的分类导航结构。system和contact:这些标签则用于获取网站全局设置(如网站名称SiteName、备案号SiteIcp)和联系方式(如联系电话Cellphone、邮箱Email)。- 还有
pageDetail、pageList用于单页面内容,tagDetail、tagList、tagDataList用于标签相关数据,以及linkList用于友情链接等,都以类似的参数和方式工作。
控制流标签 这些标签让模板具备了编程语言般的逻辑能力。
if条件判断:{% if condition %}{% elif another_condition %}{% else %}{% endif %}结构允许您根据不同的条件显示不同的内容。例如,{% if archive.Thumb %} <img src="{{ archive.Thumb }}" /> {% else %} <img src="/default-thumb.png" /> {% endif %}可以根据文章是否有缩略图来选择显示不同的图片。for循环遍历:{% for item in collection %}{% empty %}{% endfor %}用于遍历列表或数组。当集合为空时,{% empty %}块中的内容会被执行。在循环内部,item变量代表当前循环到的元素,您还可以使用forloop.Counter来获取当前循环的索引。
功能性标签
stampToDate:这是一个非常实用的功能,可以将 Unix 时间戳格式化为可读的日期和时间字符串。例如,{{ stampToDate(item.CreatedTime, "2006-01-02 15:04") }}将文章创建时间显示为“年-月-日 时:分”的格式。pagination:用于生成分页导航,通常与archiveList配合使用,让用户能够浏览大量列表内容。breadcrumb:自动生成面包屑导航,增强网站的用户体验和 SEO 友好性。with和set:{% with key="value" %}{% endwith %}和{% set new_var = "value" %}用于在模板中定义临时变量,方便复杂逻辑或数据传递。
掌握过滤器:数据美化和转换的利器
过滤器是 AnQiCMS 模板系统中处理和格式化变量输出的强大工具。它们通过竖线符号 | 应用于变量之后,如 {{ 变量 | 过滤器名:参数 }}。
safe:当您需要输出包含 HTML 内容的变量(如文章正文archive.Content)时,为了避免 HTML 标签被转义为纯文本,必须使用|safe过滤器。例如:{{ archive.Content|safe }}。truncatechars/truncatewords:用于截断字符串到指定长度,并自动添加省略号。truncatechars按字符数截断,truncatewords按单词数截断,还有对应的_html版本用于安全处理 HTML 内容。add/replace/split/join:进行字符串的拼接、替换、分割成数组或将数组拼接成字符串等操作。例如,{{ "Hello AnQiCMS"|replace:"AnQi,Go" }}。upper/lower/capfirst/title:转换英文字符串的大小写。thumb:对于图片路径变量,|thumb过滤器可以快速获取其缩略图版本。render: 当您在后台启用了 Markdown 编辑器后,内容默认会以 Markdown 格式存储。使用|render过滤器可以在前端将其转换为 HTML 格式显示。
实际操作示例:动态构建页面
假设我们正在构建一个展示最新文章列表的首页,并希望每篇文章都包含标题、摘要、发布日期和缩略图。
”`twig {# 获取网站名称,用于页面标题 #}
最新文章
{# 使用 archiveList 标签获取文章列表,类型为列表,限制10篇,并显示flag属性 #} {% archiveList latest_archives with type="list" limit="10" showFlag=true %} {% for article in latest_archives %}{{ article.Title }}
<div class="article-body">
{# 检查是否有缩略图,如果有则显示 #}
{% if article.Thumb %}
<a href="{{ article.Link }}" class="article-thumb">
<img src="{{ article.Thumb }}"
相关文章
AnQiCMS 支持的自适应、代码适配、PC+手机端模板模式应如何选择和应用?
在构建和运营网站时,如何确保内容能够在各种设备上优雅且高效地呈现,是每个运营者都需要面对的挑战。AnQiCMS 作为一个功能丰富的企业级内容管理系统,充分考虑了这一点,提供了自适应、代码适配和PC+手机端独立站点这三种灵活的模板模式,让我们能够根据实际需求做出**选择。 接下来,我们将深入探讨这三种模式的特点、应用场景以及在 AnQiCMS 中如何配置和运用
2025-11-07模板制作时,AnQiCMS 对模板文件命名和目录结构有哪些具体约定?
AnQiCMS 作为一个以其高效、灵活著称的内容管理系统,在模板制作方面也有一套清晰的约定,旨在帮助开发者和运营者构建结构清晰、易于维护的网站。理解这些约定,是高效利用 AnQiCMS 进行网站定制和内容展示的关键一步。 ### 模板文件的核心约定 AnQiCMS 的模板文件,统一采用 `.html` 作为后缀名。这一约定让文件类型一目了然,也有助于编辑器进行语法高亮和智能提示
2025-11-07AnQiCMS 的模块化设计如何支持个性化定制和二次开发需求?
在内容管理系统(CMS)的选择上,灵活性和可扩展性是许多企业和个人用户关注的核心。安企CMS(AnQiCMS)以其独特的模块化设计,在支持个性化定制和二次开发方面展现出了显著的优势,让用户能够根据自身需求,打造出功能强大且独具特色的网站。 ### 模块化设计的基石:核心架构的弹性 安企CMS采用Go语言开发,这一选择本身就为系统带来了高性能和高并发的优势。更重要的是
2025-11-07如何确保 AnQiCMS 网站在高并发访问量下的稳定性和流畅性?
当您的AnQiCMS网站访问量开始快速增长,甚至面临高并发的挑战时,如何确保它依然能够稳定运行、响应流畅,是每位运营者都非常关心的问题。好在AnQiCMS在设计之初就充分考虑了这一点,结合其底层技术优势和一些巧妙的运营策略,我们可以打造一个坚如磐石的网站。 AnQiCMS的核心优势之一,在于它采用了Go语言进行开发。Go语言以其出色的并发处理能力而闻名
2025-11-07`archiveList` 标签如何精确筛选并展示特定分类、模型或推荐属性的文档列表?
在安企CMS中,`archiveList` 标签是构建动态内容列表的核心工具,它让你可以灵活地从网站的文档库中提取并展示你想要的内容。无论是展示特定分类下的最新文章,还是某个内容模型下的热门产品,抑或是带有特定推荐属性的专题文档,`archiveList` 都能通过其丰富的参数配置,帮助你精准地实现这些需求。 ### 精准定位内容:分类、模型与推荐属性 首先
2025-11-07`archiveDetail` 标签如何获取特定文档的标题、内容、图片及自定义字段进行展示?
在AnQiCMS中,如何使用`archiveDetail`标签精细控制文档内容展示? AnQiCMS作为一个高效、灵活的内容管理系统,其核心优势之一在于其强大的内容展示能力。对于网站上每一篇独立的文章、产品详情或其他任何“文档”类型的内容,我们都希望能够精细控制它们在前台页面的展示方式。这正是`archiveDetail`标签大展身手的地方。它不仅能帮助我们获取文档的基础信息
2025-11-07`categoryList` 标签如何实现多级分类的层级显示和嵌套调用?
在AnQiCMS中构建一个清晰、有条理的网站导航,特别是处理多级分类时,是提升用户体验和网站可访问性的关键。`categoryList` 标签正是为此而生,它提供了强大的功能,帮助我们灵活地展示分类的层级结构,并进行精细化的嵌套调用。 ### 理解 `categoryList` 标签的基础 `categoryList` 标签是AnQiCMS模板引擎中的一个核心组件
2025-11-07如何在文章详情页使用 `prevArchive` 和 `nextArchive` 标签导航到相邻文档?
在内容驱动的今天,网站文章详情页的用户体验显得尤为重要。当读者沉浸于一篇精彩内容时,如果能顺畅地导航到相关或相邻的文章,不仅能延长他们在网站上的停留时间,提升页面浏览量,还能通过内部链接结构,间接优化搜索引擎的抓取和排名。安企CMS作为一款高效、SEO友好的内容管理系统,充分考虑到了这些细节,并提供了简单直观的模板标签,帮助我们轻松实现这一功能。 今天
2025-11-07