如何根据Django模板引擎语法规则编写AnQiCMS模板?

📅 👁️ 72

安企CMS(AnQiCMS)作为一个高效、可定制的内容管理系统,其强大的模板引擎是实现多样化网站展示的核心。系统采用的模板引擎与Django的语法规则高度相似,这使得熟悉Web开发的用户能够更快上手,即使是初学者也能通过本文的指引,逐步掌握模板的编写技巧。

掌握AnQiCMS模板的编写,首先要了解其基本语法结构和文件组织方式,然后深入到各种功能标签和过滤器,最终能够灵活地将数据呈现在网站前端。

熟悉模板引擎的核心语法

AnQiCMS的模板语言主要通过两种标记来与动态数据和逻辑交互:变量输出和逻辑控制。

1. 变量输出:双花括号 {{ }} 当你需要在页面上显示来自后台的数据时,例如文章标题、分类名称、系统设置等,都会用到双花括号 {{ }}。例如,要显示一篇文档的标题,你会写 {{archive.Title}}。这里的 archive 是一个变量名,Title 则是该变量的一个属性。AnQiCMS中的变量名通常遵循驼峰命名法,首字母大写,例如 archive.Idcategory.Link

2. 逻辑控制:单花括号和百分号 {% %} 这部分用于实现模板中的条件判断、循环遍历、引入其他模板文件等复杂逻辑。与变量输出不同,逻辑控制标签需要成对出现,即 {% 标签名 %} 后面必须跟着 {% end标签名 %}。例如,一个简单的条件判断:{% if archive.Id == 10 %} 这是文档ID为10的文档 {% endif %}

3. 注释:{# #}{% comment %} 为了保持模板代码的清晰和可维护性,你可以使用注释来解释代码。单行注释使用 {# 这是单行注释 #},多行注释则使用 {% comment %} 这里可以写多行注释 {% endcomment %}。这些注释在渲染页面时不会被输出到最终的HTML中。

4. 编码与文件后缀 所有的模板文件都以 .html 为后缀,并统一使用UTF-8编码。如果编码不正确,页面可能会出现乱码。

模板文件的组织与约定

AnQiCMS对模板文件的存放位置和命名有一套约定,这有助于系统自动识别并应用正确的模板。

1. 模板根目录与配置 所有模板都存放在 /template 目录下。每一套独立的模板都需要在该目录下拥有自己的子目录,并且该子目录内必须包含一个 config.json 文件。这个文件描述了模板的名称、版本、作者、类型(自适应、代码适配、PC+手机端)等基本信息。

2. 静态资源的存放 模板中使用的CSS样式、JavaScript脚本、图片等静态资源,应独立存放在 /public/static/ 目录下,以便系统统一管理和优化。

3. 常用模板文件命名 AnQiCMS支持两种文件组织模式:文件夹组织和扁平化组织。无论选择哪种,系统都预设了一些默认的模板名称,如果你创建了这些文件,系统会根据上下文自动应用:

  • 首页: index/index.htmlindex.html
  • 模型首页: {模型table}/index.html{模型table}_index.html (例如 article/index.html 用于文章模型首页)
  • 文档详情页: {模型table}/detail.html{模型table}_detail.html
  • 文档列表页: {模型table}/list.html{模型table}_list.html
  • 单页面详情页: page/detail.htmlpage.html
  • 错误页: errors/404.htmlerrors_404.html 此外,你还可以为特定ID的文档、分类或单页创建自定义模板,例如 article/detail-10.html 会专门用于ID为10的文章详情页,或者 page/about.html 用于“关于我们”的单页。

4. 移动端模板 如果你的网站需要为移动设备提供单独的模板,可以在模板根目录下创建 mobile/ 子目录。移动端模板的目录结构和文件命名与PC端保持一致,系统会根据访问设备自动选择相应的模板。

核心功能标签的灵活运用

AnQiCMS提供了丰富的内置标签,用于获取和展示各类数据。这些标签通常以 {% 标签名 参数 %} 的形式使用,并用 {% end标签名 %} 结束。

1. 系统与通用信息

  • system 标签:获取网站名称 {{system.SiteName}}、网站Logo {{system.SiteLogo}}、备案号 {{system.SiteIcp}} 等全局设置。
  • contact 标签:调用联系人 {{contact.UserName}}、电话 {{contact.Cellphone}}、地址 {{contact.Address}} 等联系方式。
  • tdk 标签:用于输出当前页面的SEO标题 <title>{% tdk with name="Title" siteName=true %}</title>、关键词和描述。

2. 内容结构与列表

  • categoryList 标签:获取文章或产品的分类列表。你可以指定 moduleId 来获取特定模型下的分类,或 parentId 来获取子分类。例如,获取文章模型下的所有顶级分类:
    
    {% categoryList categories with moduleId="1" parentId="0" %}
        {% for item in categories %}
            <li><a href="{{item.Link}}">{{item.Title}}</a></li>
        {% endfor %}
    {% endcategoryList %}
    
  • archiveList 标签:用于获取文档列表,支持按分类 categoryId、模型 moduleId、推荐属性 flag、排序 order、显示数量 limit 等多种条件筛选。它还可以用来获取相关文档 type="related" 或实现搜索功能 q="关键词"
    
    {% archiveList articles with categoryId="1" limit="5" order="views desc" %}
        {% for item in articles %}
            <li><a href="{{item.Link}}">{{item.Title}}</a><span>{{stampToDate(item.CreatedTime, "2006-01-02")}}</span></li>
        {% endfor %}
    {% endarchiveList %}
    
  • pageList 标签:获取所有单页列表,常用于构建底部导航或侧边栏链接。

3. 详情页数据展示

  • archiveDetail 标签:在文档详情页使用,获取当前文档的ID {{archive.Id}}、标题 {{archive.Title}}、内容 {{archive.Content|safe}}、缩略图 {{archive.Thumb}} 等。|safe 过滤器在这里很重要,它能确保HTML内容被正确解析而不是转义。
  • categoryDetail 标签:获取当前分类的详细信息,如分类标题 {{category.Title}}、描述 {{category.Description}}
  • pageDetail 标签:获取当前单页的详细内容,如单页标题 {{page.Title}}、内容 {{page.Content|safe}}

4. 导航与面包屑

  • navList 标签:构建网站的导航菜单,支持多级导航和自定义导航类别。
  • breadcrumb 标签:自动生成当前页面到首页的面包屑导航,提高用户体验和SEO。

5. 分页功能

  • pagination 标签:与 archiveList 配合使用

相关文章

AnQiCMS模板标签如何正确使用才能避免常见错误?

AnQiCMS 提供了强大而灵活的模板系统,让网站内容的展示高度可定制。其模板标签语法借鉴了 Django 模板引擎,并融合了 Blade 模板的易用性,使得即使是不熟悉 Go 语言的用户也能轻松上手。然而,要充分发挥模板标签的潜力并避免常见错误,理解其正确的使用方式和潜在陷阱至关重要。 ### AnQiCMS 模板标签基础:理解核心语法和约定 AnQiCMS 的模板文件通常以 `

2025-11-07

统计代码标签”是否支持根据用户角色或登录状态来决定是否加载?

在网站运营中,数据统计是理解用户行为、优化内容策略和提升转化率的核心。然而,并非所有用户的数据都需要以相同的方式被追踪,特别是对于内部团队成员、管理员或特定VIP用户,我们可能希望避免将他们的行为数据混入对外展示的统计报告中,或者出于隐私考量,仅对特定用户群体加载统计代码。对于安企CMS用户来说,一个常见且非常实用的疑问是:我们是否能够根据用户角色或登录状态,灵活地决定页面上的统计代码是否加载

2025-11-07

安企CMS是否提供A/B测试所需的统计代码集成能力?

安企CMS作为一个高效、可定制的内容管理系统,在网站运营中扮演着重要的角色。当谈到A/B测试所需的统计代码集成能力时,虽然安企CMS本身不直接提供内置的A/B测试平台和流量分配逻辑,但其设计哲学和丰富的功能为集成第三方A/B测试工具提供了坚实的基础和极高的灵活性。 理解这个问题,我们需要从两个层面来看待:首先是统计代码的嵌入,其次是创建和管理A/B测试所需的页面变体。 ###

2025-11-07

流量统计与爬虫监控”功能是否会消耗大量服务器资源?

作为网站运营者,我们总是在追求数据增长的同时,也时刻警惕着任何可能拖慢网站速度的因素。尤其是当涉及到流量统计和爬虫监控这类需要实时收集和处理大量数据的模块时,性能消耗常常是我们最担忧的焦点。毕竟,一个功能再强大,如果牺牲了网站的访问速度,那也是得不偿失。 那么,安企CMS(AnQiCMS)内置的流量统计与爬虫监控功能,是否也会让服务器不堪重负,成为网站性能的潜在瓶颈呢?我的看法是,大可不必过虑

2025-11-07

AnQiCMS模板中的变量输出和逻辑控制标签有什么区别?

在AnQiCMS模板开发中,我们经常会与两种核心的模板元素打交道:变量输出标签和逻辑控制标签。它们虽然都服务于将动态内容呈现在用户面前,但在功能定位、语法形式和实际作用上有着本质的区别。理解并掌握它们的异同,是高效构建AnQiCMS网站模板的关键。 ### 变量输出标签(`{{ ... }}`):数据展示的直接窗口 想象一下,你的网站是一个精美的橱窗,而变量输出标签,就好比橱窗里陈列的商品

2025-11-07

如何在AnQiCMS模板中引入外部HTML片段(include)?

在AnQiCMS中构建网站模板时,我们常常会遇到一些需要重复使用的HTML代码块,比如网站的页头、页脚、侧边栏导航、广告位或者是一些通用的内容模块。如果每次都在不同的模板文件中重复编写这些代码,不仅效率低下,而且一旦需要修改,就得逐个文件去查找和更新,维护起来会非常麻烦。 为了解决这个问题,AnQiCMS提供了强大的模板功能,其中就包括了引入外部HTML片段的能力

2025-11-07

AnQiCMS模板继承功能如何实现页面骨架的复用?

在网站建设与运营中,我们常常面临一个挑战:如何既能保证网站整体风格的一致性,又能灵活地修改各个页面的特定内容,同时还要兼顾开发效率与后期维护的便捷性?AnQiCMS 提供了一套强大而直观的模板继承机制,这正是解决这些问题的核心。它就像为你的网站打造了一个“母版”,让你可以轻松复用公共结构,专注于内容创作。 ### 理解模板继承的核心原理 简单来说,AnQiCMS

2025-11-07

AnQiCMS模板宏函数(macro)与include标签的适用场景分别是什么?

在 AnQiCMS 的模板开发中,为了提高代码复用性、降低维护成本,我们经常会用到一些强大的模板功能,其中“宏函数(macro)”和“Include 标签”便是两位得力助手。它们各自拥有独特的优势和适用场景,理解并恰当运用,能让模板开发事半功倍,构建出高效、易于维护的网站。 ### 宏函数(Macro):封装可复用的动态逻辑 宏函数在模板开发中,就像编程语言里的函数一样

2025-11-07