如何为AnQiCMS网站创建自定义模板以实现个性化显示?

AnQiCMS 以其灵活、高效的特性,为网站内容的个性化展示提供了广阔的空间。如果您希望网站拥有独特的外观和功能,创建自定义模板无疑是**途径。通过深度定制模板,您可以完全掌控网站的每一个细节,从品牌形象到用户体验,都能实现高度的个性化,从而在众多网站中脱颖而出。

本文将引导您了解如何在 AnQiCMS 中创建和应用自定义模板,帮助您将设计理念变为现实,实现网站的个性化显示。


一、 模板定制的基石:了解 AnQiCMS 的模板机制

在 AnQiCMS 中,模板定制的核心在于理解其基于 Go 语言的模板引擎,它借鉴了类似 Django 模板的语法,这使得熟悉 Web 开发的用户能够快速上手。

首先,模板文件统一使用 .html 作为后缀名,并集中存放在网站根目录下的 /template 文件夹中。与模板相关的样式表、JavaScript 脚本和图片等静态资源,则应单独放置在 /public/static/ 目录下。这种分离有助于保持模板文件的整洁,并方便管理静态资源。

AnQiCMS 的模板语法简洁而强大:

  • 变量输出:使用双大括号 {{变量名}} 来显示数据,例如 {{archive.Title}} 可以展示文章标题。
  • 逻辑控制:使用单大括号和百分号 {% 标签 %} 来执行逻辑操作,如条件判断 {% if 条件 %}、循环遍历 {% for item in 列表 %} 等。所有逻辑标签都需要相应的结束标签,例如 {% endif %}{% endfor %}
  • 变量命名:为了保持一致性,模板中的变量名通常采用驼峰命名法则,即每个单词首字母大写(如 archive.Id, archive.Title)。
  • 编码规范:所有模板文件都应采用 UTF-8 编码,以避免页面出现乱码。

每个自定义模板都应在其根目录下包含一个 config.json 文件,用于描述模板的基本信息,例如模板名称、包名、版本、作者等。其中,template_type 字段尤为重要,它定义了模板的适配类型(0 为自适应,1 为代码适配,2 为电脑+手机独立),这决定了您的网站将如何响应不同设备的访问。


二、 动手创建您的第一个自定义模板

创建自定义模板是一个系统性的过程,从规划到具体文件编写,每一步都至关重要。

1. 规划与准备

在开始编写代码之前,建议您先明确网站的展示需求:

  • 网站类型:是企业官网、产品展示站、还是博客?
  • 适配方式:需要响应式设计(自适应)、为不同设备提供不同代码(代码适配),还是为 PC 和移动端分别部署独立模板?
  • 页面结构:网站包含哪些核心页面(首页、文章列表、详情、单页等),以及它们的大致布局。

根据您的规划,在 /template 目录下创建一个新的文件夹作为您的模板目录,例如 my_custom_theme。然后,在这个新文件夹中创建 config.json 文件,并填写相应的信息。

2. 核心页面模板的搭建

AnQiCMS 支持两种模板文件组织模式:文件夹组织模式和扁平化文件组织模式。无论选择哪种,以下是一些核心页面的模板文件命名规则:

  • 公共代码片段:为了避免代码重复,可以将页头、页脚、侧边栏等公共部分拆分成独立文件,例如 partial/header.htmlpartial/footer.html。这些文件可以通过 {% include "partial/header.html" %} 标签在其他模板中引用。
  • 基础骨架:创建一个 base.html 文件作为所有页面的基础骨架。在这个文件中,定义 HTML 文档的基本结构(<html>, <head>, <body>)以及公共的样式和脚本引用。使用 {% block 区域名称 %}{% endblock %} 标签来定义可被子模板重写或扩展的内容区域。例如,您可以定义 {% block title %}{% block content %} 等。
  • 首页index/index.html (文件夹模式) 或 index.html (扁平化模式)。这是网站的入口页面,通常会展示最新文章、推荐内容、轮播图等。
  • 模型列表页:例如文章列表页 article/list.htmlarticle_list.html,产品列表页 product/list.htmlproduct_list.html。这些页面用于展示特定内容模型的列表数据。
  • 模型详情页:例如文章详情页 article/detail.htmlarticle_detail.html,产品详情页 product/detail.htmlproduct_detail.html。这些页面用于展示单篇文章或产品的详细内容。
  • 单页面page/detail.htmlpage_detail.html。适用于“关于我们”、“联系我们”等静态内容页面。
  • 移动端模板:如果您的 template_type 设置为 1 或 2,则需要在模板目录中创建一个 mobile/ 子目录,并在其中按照相同的结构创建移动端适配的模板文件。

引用静态资源:在您的模板文件中,引用 CSS、JavaScript 文件或图片时,应使用 AnQiCMS 提供的 {templateUrl} 变量来构建正确的路径。例如: <link href="{% system with name="TemplateUrl" %}/css/style.css" rel="stylesheet"> <img src="{% system with name="TemplateUrl" %}/images/logo.png" alt="Logo"> {% system with name="TemplateUrl" %} 将自动替换为当前模板的静态资源根路径,确保资源能够正确加载。


三、 灵活运用 AnQiCMS 的模板标签与过滤器

AnQiCMS 提供了丰富的模板标签和过滤器,让您可以轻松获取和处理各种数据。

1. 数据获取与展示

  • 站点全局信息:使用 {% system with name="字段名称" %} 标签获取网站名称、Logo、备案号、基础 URL 等信息。
  • 联系方式:通过 {% contact with name="字段名称" %} 标签获取后台配置的联系人、电话、邮箱、社交媒体链接等。
  • 导航列表{% navList navs %} 用于获取网站导航菜单数据,支持多级菜单和自定义导航类别。
  • 分类与文档
    • {% categoryList categories %}:获取文章或产品分类列表。
    • {% archiveList archives %}:获取文章或产品文档列表,支持按分类、模型、推荐属性、排序方式等多种条件筛选,并能实现分页功能。
    • {% pageList pages %}:获取单页面列表。
    • {% archiveDetail with name="字段名称" %}:在详情页获取当前文档的详细信息(如标题、内容、图片、自定义字段等)。
    • {% pageDetail with name="字段名称" %}:获取单页面的详细信息。
  • 模型自定义字段:如果您的内容模型中定义了额外的字段,可以通过 archiveDetailcategoryDetail