在安企CMS中,有时我们需要在网站的导航栏、页脚或其他特定区域列出一些独立页面,例如“关于我们”、“联系我们”、“隐私政策”等。这些页面通常内容相对固定,不属于某个特定分类或文章模型,AnQiCMS 将它们称为“单页面”。幸运的是,AnQiCMS 提供了一个非常直观且强大的模板标签,可以轻松获取并循环输出这些单页面的信息。
核心标签:pageList
要实现在模板中获取所有单页面并进行循环输出,我们需要用到 pageList 模板标签。这个标签专门设计用于检索您在后台“页面资源”->“页面管理”中创建的所有独立页面数据。
pageList 标签的使用非常简洁,它会返回一个包含所有单页面数据的数组(或者说是一个列表对象),您可以为这个列表指定一个变量名,然后在模板中通过循环遍历这个变量来显示每个单页面的详细信息。
基础用法:获取并显示所有单页面标题和链接
最基本的用法是获取每个单页面的标题和链接,并将它们展示出来。例如,您可能想在网站底部列出所有公司信息相关的独立页面:
{# 使用 pageList 标签获取所有独立页面,并将其存储在名为 'pages' 的变量中 #}
{% pageList pages %}
<nav class="footer-pages-nav">
<ul>
{# 遍历 'pages' 变量中的每一个页面,每次循环将当前页面数据赋值给 'item' #}
{% for item in pages %}
<li>
{# 输出页面的链接和标题 #}
<a href="{{ item.Link }}">{{ item.Title }}</a>
</li>
{% endfor %}
</ul>
</nav>
{% endpageList %}
在这段代码中:
{% pageList pages %}:告诉 AnQiCMS 模板引擎去获取所有的单页面数据,并将结果赋值给名为pages的变量。{% for item in pages %}:这是一个标准的循环结构,它会逐一取出pages列表中的每个单页面数据,每次循环时将当前页面数据赋值给item变量。{{ item.Link }}:访问当前页面(item)的链接地址。{{ item.Title }}:访问当前页面(item)的标题。
深入理解:可用的页面数据字段
pageList 标签循环出的每个 item 对象,都包含了一系列实用的字段,您可以根据自己的需求灵活调用它们。这些字段包括:
Id:单页面的唯一标识 ID。Title:单页面的标题,通常用于导航或列表显示。Link:单页面的访问链接。Description:单页面的描述信息,可在后台设置。Content:单页面的详细内容,通常包含 HTML 格式的文本。Logo:单页面的封面大图地址,可在后台上传。Thumb:单页面的缩略图地址,可在后台上传。
实用场景:个性化展示与筛选
除了简单的标题和链接,我们还可以结合其他字段,实现更丰富的展示效果。
展示更多页面信息
假设您想在某个区域显示独立页面的缩略图、标题和简要描述:
{% pageList pages %}
<div class="all-pages-overview">
{% for item in pages %}
<div class="page-card">
<a href="{{ item.Link }}">
{# 如果页面有上传 Logo 图片,则显示它 #}
{% if item.Logo %}
<img src="{{ item.Logo }}" alt="{{ item.Title }}" class="page-card-image">
{% endif %}
<h3>{{ item.Title }}</h3>
</a>
{# 如果页面有描述,则显示它 #}
{% if item.Description %}
<p class="page-card-description">{{ item.Description }}</p>
{% endif %}
{# 如果需要显示部分内容,确保对 HTML 内容使用 |safe 过滤器 #}
{# <div class="page-card-content">{{ item.Content|truncatechars:100|safe }}</div> #}
</div>
{% endfor %}
</div>
{% endpageList %}
这里我们使用了 {% if item.Logo %} 和 {% if item.Description %} 来判断这些字段是否存在,只有存在时才进行渲染,避免页面出现空白或错误。特别要注意的是,当您要输出 item.Content(页面内容)时,由于它可能包含 HTML 标签,为了确保浏览器正确解析而不是显示原始代码,您需要使用 |safe 过滤器,例如 {{ item.Content|safe }}。
排除特定页面
pageList 标签会获取所有的单页面。但如果您只想显示一部分,或者想排除某些特定的单页面(例如,一个不打算在导航中显示的内部页面),可以在循环内部使用 if 条件语句进行过滤。
{# 假设我们不想在导航中显示 ID 为 5 和 10 的页面,以及标题为“旧版文档”的页面 #}
{% pageList pages %}
<nav class="main-pages-nav">
<ul>
{% for item in pages %}
{# 使用 if 语句排除指定 ID 或标题的页面 #}
{% if item.Id != 5 and item.Id != 10 and item.Title != '旧版文档' %}
<li>
<a href="{{ item.Link }}">{{ item.Title }}</a>
</li>
{% endif %}
{% endfor %}
</ul>
</nav>
{% endpageList %}
通过这种方式,您可以灵活控制哪些页面应该在前端显示,哪些应该被隐藏。
小结与进阶提示
pageList 标签是 AnQiCMS 模板系统中一个非常实用的功能,它让独立页面的管理和展示变得异常简单。通过掌握其基础用法和可用的数据字段,您可以轻松构建出满足各种需求的页面列表。
- 模板路径: 请记住,独立页面的默认模板通常是
page/detail.html。如果您为某个独立页面指定了自定义模板,例如“关于我们”页面使用了page/about.html,那么确保该模板文件存在于您的模板目录中。 - 独立页面与文章/分类的区别: 独立页面更适用于内容结构简单、更新频率较低且不需要进行复杂分类归档的页面。对于新闻、博客、产品列表等需要频繁更新和分类管理的内容,建议使用 AnQiCMS 的“内容模型”和“文档分类”功能。
在AnQiCMS中,充分利用 pageList 标签,能够有效提升您网站的结构清晰度和用户体验。
常见问题 (FAQ)
Q: 我只想显示一部分独立页面,而不是全部,可以吗? A: 当然可以。
pageList标签会获取所有的独立页面,您可以在其内部的for循环中,使用{% if ... %}条件语句,根据页面 ID、标题或其他可用字段进行筛选。例如,{% if item.Id != 1 %}可以排除 ID 为 1 的页面。**Q: 独立页面的内容
Content字段包含了 HTML 标签,直接输出会显示源代码,怎么办?