如何在AnQiCMS模板中正确引用和显示变量,并进行条件判断来控制内容呈现?

📅 👁️ 63

在 AnQiCMS 的模板中,灵活地引用变量并运用条件判断来控制内容的呈现,是构建动态且功能丰富的网站的关键。AnQiCMS 采用了类似 Django 的模板引擎语法,这使得模板开发既直观又强大。本文将深入探讨如何在 AnQiCMS 模板中有效地管理变量和逻辑,帮助你更好地驾驭内容呈现。


一、AnQiCMS 模板基础:变量的引用与显示

在 AnQiCMS 模板中,数据的流动通过变量来承载。理解如何正确地引用和显示这些变量是模板开发的第一步。

1. 模板引擎语法速览

AnQiCMS 模板遵循特定的语法规则:

  • 变量引用:使用双花括号 {{ 变量名 }} 来输出变量的值。
  • 逻辑控制:使用单花括号和百分号 {% 标签名 %} 来处理条件判断、循环、函数调用等逻辑操作。这些逻辑标签通常需要成对出现,例如 {% if 条件 %}...{% endif %}

2. 变量命名与访问

AnQiCMS 中的变量通常采用驼峰命名法(CamelCase),即每个单词的首字母大写。当你需要访问一个对象的属性时,使用点号 . 进行连接。

  • 引用简单变量: 如果你在后台“全局功能设置”中配置了网站名称,并将其命名为 SiteName,在模板中你可以这样引用它:

    <h1>欢迎来到 {{ SiteName }}!</h1>
    

    或者使用系统标签显式调用并赋值给一个自定义变量名:

    {% system siteNameVar with name="SiteName" %}
    <h1>欢迎来到 {{ siteNameVar }}!</h1>
    
  • 引用对象属性: 在遍历文档列表时,每个文档都是一个对象,你可以通过 item.Titleitem.Link 等方式访问其属性。例如,在一个文章列表中显示文章标题和链接:

    {% archiveList archives with type="list" limit="5" %}
        {% for item in archives %}
            <p><a href="{{ item.Link }}">{{ item.Title }}</a></p>
        {% endfor %}
    {% endarchiveList %}
    
  • 使用过滤器处理变量: AnQiCMS 提供了丰富的过滤器来对变量进行格式化或转换。过滤器通过竖线 | 连接在变量名之后,可以串联使用。 例如,如果你的文章内容 item.Content 包含 HTML 标签,为了安全地显示这些内容而不被浏览器直接解析为恶意脚本,可以使用 safe 过滤器:

    <div>{{ item.Content|safe }}</div>
    

    再比如,格式化时间戳 item.CreatedTime 为可读日期:

    <p>发布日期:{{ stampToDate(item.CreatedTime, "2006-01-02") }}</p>
    

    对于字符串截断,你可以使用 truncatechars

    <p>简介:{{ item.Description|truncatechars:50 }}</p>
    

3. 自定义变量

有时你需要在模板中临时创建或赋值一个变量,AnQiCMS 提供了 withset 标签来实现这一点。

  • {% with %} 标签:用于在某个作用域内定义一个或多个变量,通常与 include 标签配合使用,将变量传递给被包含的模板片段。
    
    {% with greeting="你好" name="世界" %}
        <p>{{ greeting }}, {{ name }}!</p>
    {% endwith %}
    
  • {% set %} 标签:用于在当前模板作用域内声明一个变量,它的作用范围直到模板结束或被新的 set 标签覆盖。
    
    {% set articleCount = 0 %}
    {% archiveList archives with type="list" limit="10" %}
        {% for item in archives %}
            {% set articleCount = forloop.Counter %}
            <p>{{ articleCount }}. {{ item.Title }}</p>
        {% endfor %}
    {% endarchiveList %}
    <p>共有 {{ articleCount }} 篇文章。</p>
    

二、灵活控制内容呈现:条件判断(If 语句)

条件判断是模板逻辑的核心,它允许你根据不同的条件显示或隐藏特定的内容块。AnQiCMS 的 if 语句语法直观且功能完善。

1. {% if %} / {% elif %} / {% else %} 结构

最常见的条件判断结构包括 if (如果), elif (否则如果), else (否则) 和 endif (结束如果)。

{% if 用户已登录 %}
    <p>欢迎回来,{{ 用户名 }}!</p>
{% elif 用户正在注册 %}
    <p>欢迎注册新账号!</p>
{% else %}
    <p>请登录或注册。</p>
{% endif %}

2. 常用条件判断

  • 相等与不相等:使用 == (等于) 和 != (不等于)。
    
    {% if category.Id == 1 %}
        <p>这是新闻分类的特别内容。</p>
    {% endif %}
    
  • 大小比较:使用 >, <, >=, <=
    
    {% if archive.Views > 1000 %}
        <span class="hot-badge">热门</span>
    {% endif %}
    
  • 逻辑运算:使用 and (且), or (或), not (非)。
    
    {% if user.IsVIP and user.ExpireTime > currentTime %}
        <p>您是尊贵的 VIP 会员。</p>
    {% elif not user.IsVIP %}
        <p>成为 VIP 享受更多特权。</p>
    {% endif %}
    
  • 判断变量存在或非空:直接使用变量名作为条件,当变量为 nil、空字符串、零值等时会被判断为 false
    
    {% if archive.Thumb %}
        <img src="{{ archive.Thumb }}" alt="{{ archive.Title }}">
    {% else %}
        <img src="/static/images/default_thumb.jpg" alt="默认缩略图">
    {% endif %}
    

3. 实际场景应用

条件判断广泛应用于各种场景,例如:

  • 根据用户角色显示不同导航菜单。
  • 根据文章是否有缩略图显示图片或占位符。
  • 在列表页根据文章的 Flag 属性(如“推荐”、“头条”)添加特殊样式或标签。
  • 在多站点管理中,根据 siteId 加载不同的内容或布局。

三、遍历数据集合:循环(For 语句)

循环是处理数据列表的强大工具,无论是文章列表、分类列表还是导航菜单,for 语句都能帮助你高效地渲染。

1. {% for %} / {% endfor %} 结构

for 循环用于遍历数组、切片(slice)或其他可迭代对象中的每个元素。

{% categoryList categories with moduleId="1" parentId="0" %}
    <ul>
        {% for category in categories %}
            <li><a href="{{ category.Link }}">{{ category.Title }}</a></li>
        {% endfor %}
    </ul>
{% endcategoryList %}

2. forloop 对象与辅助功能

for 循环内部,你可以访问一个特殊的 forloop 对象,它提供了当前循环状态的信息。

  • forloop.Counter:当前循环的迭代次数(从 1 开始)。
  • forloop.Revcounter:当前循环剩余的迭代次数(倒序计数)。
    
    {% archiveList archives with type="list" limit="3" %}
        {% for item in archives %}
            <p>{{ forloop.Counter }}. {{ item.Title }} (还剩 {{ forloop.Revcounter }} 篇)</p>
        {% endfor %}
    {% endarchiveList %}
    

3

相关文章

AnQiCMS支持哪些网站模式,以应对自适应、代码适配或PC+移动端独立站点的显示需求?

在当今多屏互联的数字时代,网站能否在各类设备上呈现出卓越的显示效果,直接关系到用户体验、品牌形象乃至业务转化。AnQiCMS作为一款高效、灵活的内容管理系统,充分洞察了这一核心需求,为用户提供了多样化的网站显示模式,确保您的内容无论在何种终端都能完美触达目标受众。 AnQiCMS精心设计了三种主流网站模式,以应对自适应、代码适配或PC与移动端独立站点的显示需求

2025-11-08

AnQiCMS如何通过静态缓存和SEO优化,显著提升网站加载速度和内容显示效率?

在当今快节奏的网络世界里,网站加载速度慢不仅会赶走访客,还可能让你的内容在搜索引擎中“隐身”。用户体验和搜索引擎优化(SEO)是网站成功的两大基石,而这两者都与网站的响应速度和内容显示效率息息相关。AnQiCMS作为一个基于Go语言开发的内容管理系统,深知这些痛点,因此在设计之初就将静态缓存和SEO优化作为核心优势,旨在显著提升网站的运行表现。 ### 静态缓存:速度的秘密武器 想象一下

2025-11-08

网站运营人员如何通过AnQiCMS后台了解网站流量和爬虫抓取情况的显示数据?

## 巧用AnQiCMS后台:洞悉网站流量与爬虫抓取动态 在当今的数字营销环境中,了解网站的流量表现和搜索引擎爬虫的抓取情况,对于网站运营者来说至关重要。这不仅能帮助我们评估内容策略的有效性,还能及时发现并解决潜在的SEO问题。AnQiCMS作为一款功能强大的内容管理系统,为用户提供了直观且详尽的后台数据,让我们可以轻松掌握这些关键信息。 那么,作为网站运营人员

2025-11-08

AnQiCMS如何通过防采集和水印功能,保护原创内容的显示版权?

在数字内容爆炸式增长的今天,原创内容的价值愈发凸显。然而,随之而来的内容采集与盗用问题,也让每一位内容创作者和运营者头疼不已。想象一下,您耗费心血撰写的高质量文章、精心设计的图片,转眼间就被他人“拿来主义”,不仅侵犯了版权,更可能对您的网站SEO和品牌形象造成负面影响。 面对这样的挑战,安企CMS(AnQiCMS)作为一款基于Go语言开发的企业级内容管理系统,将内容版权保护提升到了核心功能层面

2025-11-08

如何为特定文章、分类或单页面设置独立的模板,实现定制化的内容显示?

在网站运营中,我们总会遇到一些独特的内容,它们可能代表着一场特殊的推广活动、一份重要的企业报告,或者是一个需要特别呈现的关于页面。这些内容往往不满足于网站统一的默认样式,需要有自己的“面孔”来吸引用户、突出重点。安企CMS(AnQiCMS)深知这种需求,因此提供了非常灵活的模板定制功能,让我们可以轻松为特定文章、分类或单页面设置独立的模板,实现内容显示的定制化。 ### 为什么需要独立模板

2025-11-08

AnQiCMS文章的推荐属性(如头条、幻灯)如何在前端被调用并分类显示?

在网站运营中,如何让那些重要的、精彩的内容脱颖而出,被用户第一时间关注到,是提升用户体验和内容营销效果的关键。AnQiCMS 提供了一套非常实用的推荐属性机制,帮助我们轻松实现内容的分类与突出显示,比如将热门文章设置为“头条”,或是将精选产品呈现在“幻灯”区域。 这篇文章将带你了解 AnQiCMS 文章的推荐属性是如何在后台设置,又如何在前端模板中被灵活调用

2025-11-08

如何利用AnQiCMS的定时发布功能,控制内容的显示时间,实现自动化运营?

在内容运营的日常工作中,保持网站内容的持续更新和定时发布是吸引用户、提升品牌影响力的关键环节。然而,手动发布内容不仅耗时,还容易受限于运营人员的时间和精力,尤其是在需要面向全球用户、跨时区发布或者进行系列内容推广时,挑战更是巨大。AnQiCMS(安企CMS)正是洞察到这些痛点,巧妙地融入了强大的定时发布功能,帮助您实现内容的自动化运营,让您的网站始终保持活力。 ### 内容自动化运营的魅力

2025-11-08

如何在文章内容中添加关键词和Tag标签,并在详情页或列表页关联显示?

在安企CMS中,有效利用关键词(Keywords)和标签(Tags)是优化内容结构、提升搜索引擎可见度(SEO)以及改善用户体验的关键。它们不仅帮助网站更好地组织内容,还能引导用户发现更多相关信息。接下来,我们将深入探讨如何在文章内容中合理添加这些元素,并确保它们能在网站的详情页或列表页中正确显示。 ### 一、在文章内容中添加关键词 关键词是描述文章核心主题的词语

2025-11-08