在AnQiCMS中制作模板,掌握其变量命名和标签语法规则是核心。系统基于Go语言开发,模板引擎借鉴了Django和Blade的语法风格,这使得内容输出和逻辑控制都变得非常直观。您在进行模板开发时,主要会接触到两种基本的语法结构,它们各自承担着不同的职责。

核心语法结构:变量输出与逻辑控制

首先是双花括号{{ 变量 }},它的作用非常直接,就是将系统或后台传递给模板的变量值“打印”到页面上。您可以把它想象成一个占位符,最终会替换成实际的数据。比如,要显示网站的名称,可能就会写成{{ system.SiteName }}

其次是单花括号与百分号{% 标签 %},这组标签则用于处理模板中的各种逻辑,例如条件判断、循环遍历、引入其他模板文件等。它不直接输出内容,而是控制内容的显示方式或结构。所有逻辑控制标签都需要一个相应的结束标签,以{% end标签 %}的形式出现,形成一个闭合的代码块。例如,一个条件判断会是{% if 条件 %} ... {% endif %}

变量的命名与访问

AnQiCMS中的变量命名通常遵循驼峰命名法则(CamelCase),这意味着变量名中的每个单词首字母会大写,例如Archive.TitleCategory.Link

当您需要访问一个变量内部的属性时,会使用点号.来进行层级访问。例如,archive是一个代表文章的对象,它的标题就是archive.Title,它的链接就是archive.Link。这种简洁的访问方式,让您可以清晰地获取所需的数据。

输出变量:{{...}}的实际应用

了解了基础语法后,我们来看看{{...}}在实际模板中的具体使用:

  • 直接输出变量值:这是最常见的用法,例如:
    
    <h1>{{ archive.Title }}</h1> {# 输出文章标题 #}
    <p>联系电话:{{ contact.Cellphone }}</p> {# 输出联系电话 #}
    
  • 结合过滤器(Filters)处理数据:有时我们需要对输出的数据进行格式化或转换。AnQiCMS提供了丰富的过滤器,通过管道符|来应用。
    • HTML内容安全输出:当变量包含HTML内容(如文章正文)时,为了确保浏览器正确解析而不是显示原始HTML代码,并且防止潜在的XSS攻击,通常需要使用|safe过滤器。
      
      <div>{{ archive.Content|safe }}</div> {# 安全输出文章HTML内容 #}
      
    • 日期时间格式化:数据库中存储的时间戳需要转换为可读的日期格式,stampToDate函数结合Go语言的时间格式化字符串非常实用。
      
      <span>发布日期:{{ stampToDate(archive.CreatedTime, "2006-01-02") }}</span> {# 将时间戳格式化为“年-月-日” #}
      
    • 文本截断:对于过长的文本,您可以使用|truncatechars|truncatewords进行截断。
      
      <p>{{ archive.Description|truncatechars:100 }}</p> {# 截断描述,保留100个字符 #}
      

逻辑控制:{%...%}标签的强大功能

{%...%}标签赋予了模板动态展示内容的能力:

  • 条件判断(ifelifelse:根据不同的条件显示不同的内容块。
    
    {% if archive.IsFeatured %}
        <span class="badge">推荐</span>
    {% elif archive.Views > 1000 %}
        <span class="badge">热门</span>
    {% else %}
        <span>普通内容</span>
    {% endif %}
    
  • 循环遍历(forempty:迭代数组或列表中的数据,常用于展示文章列表、导航菜单等。
    
    {% for item in archives %}
        <li><a href="{{ item.Link }}">{{ forloop.Counter }}. {{ item.Title }}</a></li>
    {% empty %}
        <li>暂无文章</li> {# 当archives列表为空时显示 #}
    {% endfor %}
    
    在循环中,forloop.Counter会返回当前循环的次数(从1开始),forloop.Revcounter则返回从尾部开始的剩余次数。
  • 定义变量(withset:在模板中创建临时变量,便于代码复用和组织。with标签定义的变量在{% with %}{% endwith %}之间有效,而set定义的变量在当前模板文件中具有更广的范围。 “`twig {% with greeting=“你好” %} <p