安企CMS(AnQiCMS)作为一个高效灵活的内容管理系统,其强大的模板功能是搭建个性化网站的关键。在模板中灵活地定义和使用变量,能让我们轻松地处理和展示各类数据,无论是文章标题、分类信息,还是自定义字段内容,都能通过变量实现动态调用,让网站充满活力。
接下来,我们将深入探讨在AnQiCMS模板中如何定义、获取和运用变量,帮助大家更高效地构建和维护网站。
一、变量的基础:认识与声明
在AnQiCMS的模板语法中,变量是用于存储和显示数据的占位符。它们让我们的模板能够接收来自后端的数据,并根据需要将其渲染到页面上。
1. 变量的输出形式
AnQiCMS的模板使用双花括号 {{ 变量名 }} 来输出变量的值。当你需要在页面上展示一个特定数据时,只需将该数据的变量名放置于双花括号中即可。例如,{{ siteName }} 可能会显示网站的名称。
在命名变量时,通常遵循驼峰命名法(CamelCase),即每个单词的首字母大写,例如 archive.Id、archive.Title。
2. 声明变量:{% with %} 与 {% set %}
在某些场景下,我们需要在模板内部定义自己的变量,或者将复杂标签的输出结果存储起来以便重复使用。AnQiCMS提供了两种主要的声明变量的方式:
{% with ... %}标签:with标签允许你在一个特定的代码块内定义一个或多个变量。这些变量只在该{% with %}和{% endwith %}之间有效。这非常适合为include标签传递参数,或者在局部范围内使用临时变量。{% with pageTitle="最新文章列表" %} <h1>{{ pageTitle }}</h1> {# pageTitle变量在此处有效 #} {% endwith %} {# pageTitle变量在此处已失效 #}你也可以同时定义多个变量,用空格隔开:
{% with title="产品介绍" keywords="产品,详情" %} <title>{{ title }}</title> <meta name="keywords" content="{{ keywords }}"> {% endwith %}{% set ... %}标签:set标签用于在当前模板文件中声明一个变量,它的作用域从声明之处开始,直到模板文件结束。这对于在模板的不同部分共享数据非常有用。{% set welcomeMessage = "欢迎来到我们的网站!" %} <header> {{ welcomeMessage }} </header> <main> <p>{{ welcomeMessage }}</p> </main>小贴士:
{% with %}更适合定义局部、临时的变量,而{% set %}更适合定义在整个模板中都需要使用的变量。合理选择可以避免变量名冲突,并提高代码的可读性。
二、变量的来源:数据从何而来
AnQiCMS中的变量并非凭空而来,它们主要通过内置的模板标签获取后端数据,或者直接从URL参数中读取。
1. 标签赋能:从内置标签获取数据
AnQiCMS内置了丰富的标签,用于获取网站的各种数据。这些标签通常会在内部处理数据查询和逻辑,并将结果赋给一个你指定的变量名,供你在模板中使用。
获取单条数据: 许多标签用于获取单一实体的数据,例如
system(系统设置)、contact(联系方式)、tdk(页面TDK)、archiveDetail(文章详情)、categoryDetail(分类详情)等。这些标签通过
变量名称 with name="字段名称"的形式,将特定字段的值直接赋值给变量名称。{# 获取网站名称,并赋值给siteName变量 #} {% system siteName with name="SiteName" %} <p>网站名称:{{ siteName }}</p> {# 直接获取当前文章的标题 #} <h1>{% archiveDetail with name="Title" %}</h1>获取列表数据: 另一些标签用于获取数据集合(如文章列表、分类列表、导航列表),它们会将一个数组或切片赋值给指定的变量名。这时,你就需要使用
{% for %}循环标签来遍历这个变量,逐一显示其中的每一项数据。{# 获取文章列表,并赋值给archives变量 #} {% archiveList archives with type="list" limit="5" %} <ul> {% for item in archives %} <li><a href="{{ item.Link }}">{{ item.Title }}</a></li> {% endfor %} </ul> {% endarchiveList %}在这个例子中,
archives是一个包含了多篇文章数据的列表变量,item则是for循环中每一篇文章的临时变量。获取自定义参数:
archiveParams对于后台为文章或产品模型自定义的额外字段,可以通过archiveParams标签获取。这个标签会将自定义字段的数据作为一个列表或映射(map)赋给变量,你可以根据需要遍历显示。{# 获取当前文章的所有自定义参数 #} {% archiveParams params %} <div class="custom-fields"> {% for field in params %} <p>{{ field.Name }}:{{ field.Value }}</p> {% endfor %} </div> {% endarchiveParams %}
2. URL参数与全局数据
AnQiCMS的模板引擎也能访问一些全局数据或从URL中获取参数。例如,在搜索页面,你可能需要获取URL中的搜索关键词 q。文档中提到 archiveList 标签在 q 参数未指定时会自动读取URL中的 q 查询参数,暗示了可以通过 urlParams.q 这样的形式访问URL参数。
{# 假设URL是 /search?q=安企CMS,这里可以获取搜索关键词 #}
<input type="text" name="q" value="{{ urlParams.q }}" placeholder="请输入搜索关键词">
三、变量的深度:数据处理与展示
获取到变量后,我们可以通过多种方式进一步处理和展示它们,让页面内容更具表现力。
1. 访问变量属性:点号操作符 .
当一个变量存储的是一个对象或结构体时(比如 item 变量代表一篇文章对象),你可以使用点号 . 来访问它的属性。
”`twig {# item 是一个文章对象,通过点号访问其