在网站运营过程中,我们常常需要展示各种列表数据,比如文章列表、产品列表、图片画廊或者导航菜单。安企CMS(AnQiCMS)提供了一套基于 Go 语言模板引擎的强大机制,其中 for 循环标签是实现这一需求的核心工具。通过灵活运用 for 标签及其辅助功能,我们可以轻松遍历数组或列表数据,并根据实际需求精准控制每个元素的显示样式。
安企CMS 模板中的循环标签 for:基础用法
在安企CMS模板中,for 循环标签的语法与多数流行的模板引擎类似,它允许我们迭代一个集合中的每个元素。最基本的用法是:
{% for item in collection %}
{# 在这里显示每个item的内容 #}
{% endfor %}
这里 collection 是你想要遍历的数组或列表数据,而 item 是在每次循环中代表当前元素的临时变量。例如,如果你想显示最新的文章列表,可以这样使用 archiveList 标签获取数据,然后通过 for 循环来展现:
<ul class="article-list">
{% archiveList articles with type="list" limit="5" %}
{% for article in articles %}
<li class="article-item">
<a href="{{ article.Link }}" title="{{ article.Title }}">
<h3>{{ article.Title }}</h3>
<p>{{ article.Description }}</p>
</a>
</li>
{% endfor %}
{% endarchiveList %}
</ul>
在这个例子中,articles 是通过 archiveList 标签获取到的文章集合,article 则是循环中代表每一篇文章的变量。你可以通过 article.Title 获取文章标题,article.Link 获取文章链接等,这些属性通常直接对应后台数据模型的字段。
当 collection 可能为空时,for 标签还提供了一个 {% empty %} 分支,用于在集合中没有元素时显示备用内容,这有助于提升用户体验:
<ul class="article-list">
{% archiveList articles with type="list" limit="5" %}
{% for article in articles %}
{# 文章内容展示 #}
{% empty %}
<li class="no-content">暂无最新文章。</li>
{% endfor %}
{% endarchiveList %}
</ul>
控制显示样式:遍历过程中的辅助变量
在 for 循环内部,安企CMS模板引擎提供了一些特殊的辅助变量,可以帮助我们更精细地控制显示样式,或者为列表项添加序号。
forloop.Counter: 表示当前循环的序号,从 1 开始计数。forloop.Revcounter: 表示当前循环的倒序序号,例如,如果列表有 5 项,第一项的Revcounter是 5,第二项是 4,以此类推。
利用这些变量,我们可以轻松实现交替行颜色、为第一项添加特殊样式等需求。例如,给列表中的偶数项和奇数项设置不同的背景色:
<ul class="article-list">
{% archiveList articles with type="list" limit="5" %}
{% for article in articles %}
<li class="article-item {% if forloop.Counter is divisibleby 2 %}even-row{% else %}odd-row{% endif %}">
<span>{{ forloop.Counter }}.</span>
<a href="{{ article.Link }}" title="{{ article.Title }}">
<h3>{{ article.Title }}</h3>
<p>{{ article.Description }}</p>
</a>
</li>
{% empty %}
<li class="no-content">暂无最新文章。</li>
{% endfor %}
{% endarchiveList %}
</ul>
这里,is divisibleby 2 是一个过滤器,用于判断 forloop.Counter 是否能被 2 整除,从而实现奇偶行判断。
条件判断与数据筛选:if 标签的妙用
if 标签在 for 循环中同样扮演着重要的角色,它允许我们根据条件决定是否显示某个元素或应用特定样式。结合 item 对象的属性,可以实现非常灵活的展示逻辑。
比如,你可能只希望显示带有缩略图的文章,或者为没有缩略图的文章显示一个占位符:
”`twig
-
{% archiveList articles with type=“list” limit=“5” %}
{% for article in articles %}
<li class="article-item">
<a href="{{ article.Link }}" title="{{ article.Title }}">
{% if article.Thumb %} {# 检查是否存在缩略图 #}
<img src="{{ article.Thumb }}" alt="{{ article.Title }}" class="article-thumb">
{% else %}
<img src="/static/images/placeholder.webp" alt="无图" class="article-thumb-placeholder">
{% endif %}
<h3>{{ article.Title }}</h3>
<p>{{ article.Description }}</p>
</a>
</li>
{% empty %}
<li class