如何使用AnQiCMS的模板语法显示动态数据?

📅 👁️ 66

安企CMS(AnQiCMS)作为一个高效、灵活的内容管理系统,其核心优势之一在于能够将后台数据动态地呈现在网站前端。无论是展示文章列表、产品详情,还是站点配置信息,AnQiCMS 都提供了直观且强大的模板语法来帮助您实现这一目标。理解并熟练运用这些模板语法,是打造高度定制化网站的关键。

AnQiCMS 的模板引擎采用了类似 Django 和 Blade 的语法,这使得熟悉其他主流CMS模板系统的用户能够快速上手。它的核心思想是通过特定的标签和双花括号来获取和展示动态数据,并利用逻辑标签来控制内容的显示方式。

掌握核心语法:变量与逻辑

在AnQiCMS模板中,您会主要接触到两种基本语法结构:

  • 双花括号 {{ 变量 }}:用于直接输出变量的值。这些变量可以是系统预设的,也可以是您从后台获取的动态数据字段。
  • 百分号花括号 {% 标签 %}:用于实现逻辑控制,比如条件判断(if-else)、循环遍历(for)以及调用各种功能标签。这类标签通常需要一个对应的结束标签,例如 {% if 条件 %}...{% endif %}{% for item in 列表 %}...{% endfor %}

接下来,我们将通过具体的示例,探讨如何利用这些语法来显示动态数据。

获取基础站点信息

每个网站都离不开一些全局性的配置,比如网站名称、Logo、联系方式等。AnQiCMS 提供了 systemcontact 标签来轻松获取这些信息。

假设您想在网站页头显示网站名称和Logo:

<header>
    <a href="/">
        <img src="{% system with name='SiteLogo' %}" alt="{% system with name='SiteName' %}" />
    </a>
    <h1>{% system with name='SiteName' %}</h1>
</header>

这里,{% system with name='SiteLogo' %} 会直接输出后台配置的网站Logo地址,而 {% system with name='SiteName' %} 则会输出网站名称。这种简洁的写法让您无需关心数据是如何从数据库中提取出来的,只需关注所需字段的名称。

同样地,联系方式如电话、地址、微信二维码,甚至是您在后台自定义的联系信息,都可以通过 contact 标签获取。例如,显示联系电话和自定义的WhatsApp:

<footer>
    <p>联系电话:{% contact with name='Cellphone' %}</p>
    {# 如果您在后台自定义了WhatsApp联系方式 #}
    <p>WhatsApp:{% contact with name='WhatsApp' %}</p>
</footer>

展示内容列表:文章、产品与分类

网站的核心在于内容,无论是文章、产品还是新闻,它们通常以列表的形式展示。archiveList 标签是获取这些动态内容列表的利器。配合 for 循环,您可以遍历并显示每条内容的标题、链接、简介、缩略图等。

比如,在首页显示最新发布的10篇文章:

<section class="latest-articles">
    <h2>最新文章</h2>
    <ul>
        {% archiveList archives with moduleId="1" type="list" limit="10" order="id desc" %}
            {% for item in archives %}
                <li>
                    <a href="{{ item.Link }}">
                        <img src="{{ item.Thumb }}" alt="{{ item.Title }}" />
                        <h3>{{ item.Title }}</h3>
                        <p>{{ item.Description|truncatechars:100 }}</p> {# 截取简介前100个字符 #}
                        <span>发布时间:{{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
                    </a>
                </li>
            {% empty %}
                <li>暂无文章内容。</li>
            {% endfor %}
        {% endarchiveList %}
    </ul>
</section>

这段代码中:

  • {% archiveList archives ... %} 获取了一个名为 archives 的文章列表。
    • moduleId="1" 指明获取文章模型(通常文章模型的ID为1)。
    • type="list" 表示只获取指定数量的列表,而非分页。
    • limit="10" 限制只显示10条。
    • order="id desc" 按照ID倒序排列,即最新发布在前。
  • {% for item in archives %} 遍历这个列表,每次循环将当前文章数据赋值给 item 变量。
  • {{ item.Link }}, {{ item.Title }}, {{ item.Thumb }}, {{ item.Description }}, {{ item.CreatedTime }} 分别输出文章的链接、标题、缩略图、描述和创建时间。
  • |truncatechars:100 是一个过滤器,用于截取字符串的前100个字符,并添加省略号。
  • stampToDate(item.CreatedTime, "2006-01-02") 是一个时间格式化函数,将时间戳格式化为“年-月-日”的形式。
  • {% empty %} 块会在 archives 列表为空时显示,提供了友好的用户体验。

除了文章,您还可以使用 categoryId 参数来筛选特定分类下的内容,或者通过 categoryList 标签来获取分类本身的列表,并通过嵌套 archiveList 来展示每个分类下的文章。

显示单条内容详情:自定义字段的魔力

当用户点击列表中的某篇文章或产品时,他们会进入详情页面。在详情页,archiveDetail 标签是获取当前内容所有信息的关键。AnQiCMS 的“灵活内容模型”特性在这里发挥得淋漓尽致,您可以自定义各种字段(如文章作者、产品价格、颜色、尺寸等),并在模板中轻松调用。

例如,显示一篇文章的完整内容,包括其自定义的“文章来源”字段:

<article>
    <h1>{% archiveDetail with name="Title" %}</h1>
    <div>
        <span>作者:{% archiveDetail with name="author" %}</span> {# 假设您自定义了“author”字段 #}
        <span>来源:{% archiveDetail with name="source" %}</span> {# 假设您自定义了“source”字段 #}
        <span>发布日期:{{ stampToDate(archive.CreatedTime, "2006年01月02日 15:04") }}</span>
        <span>阅读量:{% archiveDetail with name="Views" %}</span>
    </div>
    <div class="article-content">
        {% archiveDetail articleContent with name="Content" %}
        {{ articleContent|safe }} {# 这里的 |safe 过滤器非常重要,因为它会阻止HTML内容被转义,从而正常显示文章中的图片、格式等 #}
    </div>
</article>

在这个例子中:

  • {% archiveDetail with name="Title" %} 直接输出当前文档的标题。
  • {% archiveDetail with name="author" %}{% archiveDetail with name="source" %} 是调用自定义字段的示例。只要您在后台的内容模型中添加了这些字段,就可以这样直接通过字段名来调用。
  • {{ archive.CreatedTime }} 是直接访问当前文档对象 archive 的属性(AnQiCMS在详情页会自动提供一个名为 archive 的全局对象)。
  • {% archiveDetail articleContent with name="Content" %}{{ articleContent|safe }} 分两步完成:先将内容赋值给一个临时变量 articleContent,然后使用 |safe 过滤器确保HTML内容正确渲染。

如果您想遍历所有的自定义参数,archiveParams 标签会非常有用:

<div class="custom-params">
    {% archiveParams params %}
        {% for item in params %}
            <p>{{ item.Name }}:{{ item.Value }}</p>
        {% endfor %}
    {% endarchiveParams %}
</div>

这将把所有后台设置的文档自定义参数(如“作者”、“来源”等)都以键值对的形式展示出来。

灵活的条件判断与分页显示

在内容运营中,经常需要根据某些条件来显示或隐藏内容,或者实现分页功能。

条件判断: 例如,判断当前文章是否有缩略图,并根据是否有图来决定显示方式:

{% if archive.Thumb %}
    <img src="{{ archive.Thumb }}" alt="{{ archive.Title }}" />
{% else %}
    <img src="/public/static/images/default-thumb.png" alt="默认缩略图" />
{% endif %}

分页显示: 对于内容量大的列表,分页是必不可少的功能。在使用 archiveList 标签时,将 type 设置为 "page",然后结合 pagination 标签,就可以轻松实现分页导航。

”`twig {# 先获取分页内容列表 #} {% archiveList archives with moduleId=“1” type=“page” limit=“10” order=“id desc” %}

{# 循环显示文章内容 #}
{# ... 循环代码与上文类似 ... #}

{% endarchiveList %}

{# 再显示分页导航 #} <div

相关文章

基于Go语言的高并发特性如何提升内容展示速度?

让您的网站内容疾如闪电:AnQiCMS如何凭借Go语言高并发特性提升展示速度? 如今,网站加载速度已成为衡量用户体验和搜索引擎友好度的黄金标准。在一个信息爆炸的时代,访客的耐心越来越有限,任何一丝延迟都可能导致用户流失。对于内容运营者而言,如何确保内容能够秒速呈现,成为了一个日益重要的课题。而AnQiCMS,正是凭借其独特的Go语言技术底座,在内容展示速度方面展现出卓越的优势。 那么

2025-11-08

如何利用定时发布功能自动化内容展示计划?

在当今快节奏的数字世界里,网站内容的持续更新和有效管理,是吸引并留住访客、提升品牌影响力的关键。对于运营者来说,如何高效地规划和执行内容发布计划,减少重复性的人工操作,同时又能保证内容的质量和时效性,是一个不小的挑战。这时,安企CMS的定时发布功能便成为我们手中的一把利器,帮助我们轻松实现内容展示的自动化。 ## 什么是定时发布,它能带来什么? 定时发布,顾名思义

2025-11-08

安企CMS如何通过流量统计数据优化内容展示策略?

## 从数据洞察到策略升级:安企CMS如何优化你的内容展示? 在数字营销日益激烈的今天,网站流量数据不再仅仅是冷冰冰的数字,它们是用户兴趣、行为模式和内容价值的真实反馈。对于运行着网站的朋友们来说,如何将这些数据转化为实用的内容运营策略,从而提升网站效果,是一个持续的挑战。 安企CMS在这方面提供了强大的支持,特别是其内置的流量统计功能,能帮助我们深入分析用户行为,进而优化内容展示策略

2025-11-08

如何设置特定用户组才能查看的付费内容?

在网站运营中,将高质量内容变现是常见的需求,而限制特定用户组才能查看付费内容是实现这一目标的核心策略。安企CMS(AnQiCMS)深知这一需求,因此内置了强大的用户组管理与VIP系统,让内容变现变得简单而高效。 下面,我们将一同探讨如何在安企CMS中设置特定用户组才能查看的付费内容,帮助您更好地利用这一功能。 ### 理解安企CMS的用户组与权限系统 安企CMS提供了完善的用户组管理机制

2025-11-08

如何确保网站内容在PC和移动端自适应显示?

在当今这个移动设备普及的时代,确保网站内容能在不同屏幕尺寸的设备上(无论是宽大的PC显示器还是小巧的手机屏幕)都能自适应、流畅地显示,已经成为网站成功的关键因素之一。安企CMS(AnQiCMS)为用户提供了强大的功能,帮助我们轻松实现这一目标。 ### 1. 理解AnQiCMS的自适应显示模式 AnQiCMS深知多终端访问的重要性,因此在系统设计之初就提供了多种网站显示模式以应对不同的需求

2025-11-08

如何避免模板文件编码问题导致的内容乱码?

在使用 AnQiCMS 搭建和运营网站的过程中,我们追求的无非是内容的顺畅展示和用户体验的极致。然而,偶尔遇到的“内容乱码”问题,往往会像一块绊脚石,让精心排版的内容变得面目全非,严重影响网站的专业性和用户的阅读感受。 这种内容乱码,尤其在模板文件中表现出来时,多数情况下是由于文件编码不一致所导致的。理解并解决这个问题,对于网站的稳定运行至关重要。 ### 乱码的根源

2025-11-08

如何为文章、产品或单页面设置独立的显示模板?

## 如何在安企CMS中为文章、产品或单页面设置独立的显示模板? 在网站运营中,我们经常会遇到这样的需求:某个特殊的文章需要一个独特的排版来突出其重要性,某个产品需要一个专属的展示页面来提升转化率,或者像“关于我们”这样的核心单页面需要一个与众不同的设计来强化品牌形象。安企CMS深知这种灵活性对内容运营的重要性,因此它提供了非常便捷的方式,让我们能够为文章、产品甚至单页面设置独立的显示模板

2025-11-08

如何在网站首页展示系统配置的名称和Logo?

网站的名称和Logo是品牌形象的基石,它们不仅能够快速传达网站的身份,还能增强用户的信任感和识别度。在AnQiCMS中,将这些重要的品牌元素呈现在网站首页是一项直接且灵活的任务。AnQiCMS提供了直观的后台设置和强大的模板标签功能,让这项工作变得非常简单。 ### 后台配置:统一管理品牌信息 首先,所有希望在网站前端展示的信息,都需要在AnQiCMS的后台进行统一管理

2025-11-08