在安企CMS中管理和展示单页面是网站内容构建的基础功能之一。单页面通常用于创建那些结构相对固定、内容独立的页面,例如“关于我们”、“联系方式”或“服务介绍”等。如果您希望在网站的某个区域,比如底部导航或侧边栏,集中显示这些单页面的列表,安企CMS提供了非常直观和灵活的方式来实现。
后台管理:轻松创建与配置单页面
在开始在前端展示单页面列表之前,首先需要在安企CMS的后台创建和管理这些单页面。您可以在后台的页面资源菜单下找到页面管理。在这里,您可以进行一系列操作:
- 添加新页面:为您的网站创建全新的单页面。
- 编辑页面内容:自定义页面的标题、SEO信息(如关键词和描述)、主要内容(支持富文本编辑器),甚至可以指定该页面使用独特的模板。
- 设置自定义URL:为页面分配一个更友好的、利于SEO的网址别名。
- 排序与状态管理:调整单页面的显示顺序,或者将其设置为隐藏/显示状态。
每个单页面都拥有自己的独立ID、标题、内容和链接,这些信息在前端显示列表时都能够被方便地调用。
利用 pageList 标签获取单页面列表
安企CMS为前端模板提供了强大的标签系统,要获取并显示所有单页面的列表,我们需要使用到其中一个核心标签——pageList。这个标签专门用于检索您在后台创建的所有单页面数据。
pageList 标签的使用方式非常简洁明了。您只需要在模板中声明一个变量来接收单页面列表,然后通过 for 循环遍历这个变量即可。基本的结构如下:
{% pageList pages %}
<ul>
{% for item in pages %}
<li><a href="{{ item.Link }}">{{ item.Title }}</a></li>
{% endfor %}
</ul>
{% endpageList %}
在上面的代码中:
{% pageList pages %}声明了一个名为pages的变量,它将包含所有可用的单页面数据。{% for item in pages %}遍历pages变量中的每一个单页面,并将当前页面数据赋值给item变量。{{ item.Link }}会输出当前单页面的访问链接。{{ item.Title }}则会显示当前单页面的标题。
通过这种方式,您可以轻松构建出一个包含所有单页面链接和标题的列表。
控制与定制单页面列表内容
除了基本的标题和链接,pageList 标签在循环中的 item 变量还提供了丰富的单页面信息,您可以根据需求选择性地展示:
item.Id:单页面的唯一标识ID。item.Description:单页面的简要描述。item.Content:单页面的详细内容(通常在列表页不直接显示,但如果需要可以调用,记得使用|safe过滤器解析HTML)。item.Logo:单页面设置的缩略图大图链接。item.Thumb:单页面设置的缩略图小图链接。
高级定制:排除特定页面
在某些情况下,您可能希望显示所有单页面,但排除其中一两个不适合在列表(例如导航)中出现的页面。您可以在 for 循环内部添加一个条件判断来实现:
{% pageList pages %}
<nav class="site-footer-nav">
<h3>网站地图</h3>
<ul>
{% for item in pages %}
{% if item.Id != 5 %} {# 假设ID为5的“隐私政策”页面不显示在主导航中 #}
<li><a href="{{ item.Link }}">{{ item.Title }}</a></li>
{% endif %}
{% endfor %}
</ul>
</nav>
{% endpageList %}
通过 {% if item.Id != 5 %} 这样的判断,可以灵活地控制哪些单页面出现在列表中。这里的 5 替换成您希望排除的单页面实际ID即可。
多站点环境下的考虑
如果您的安企CMS部署了多站点,并且希望获取特定站点的单页面列表,pageList 标签也支持 siteId 参数,例如 {% pageList pages with siteId="2" %}。但对于大多数单站点用户而言,通常无需指定此参数,系统会默认获取当前站点的单页面。
综合示例:构建底部导航列表
结合上述信息,我们可以创建一个功能完整的底部单页面导航示例:
<footer class="site-footer">
<div class="container">
<nav class="footer-nav">
<h4>关于我们</h4>
<ul>
{% pageList pages %}
{% for item in pages %}
{# 排除特定ID的页面,并确保页面有内容或描述才显示 #}
{% if item.Id != 10 and (item.Content or item.Description) %}
<li>
<a href="{{ item.Link }}" title="{{ item.Description }}">
{{ item.Title }}
</a>
</li>
{% endif %}
{% endfor %}
{% endpageList %}
</ul>
</nav>
<div class="footer-info">
{# 这里可以添加其他页脚信息,例如版权信息、联系方式等,使用系统标签获取 #}
<p>© {% now "2006" %} {% system with name="SiteName" %} - All rights reserved.</p>
</div>
</div>
</footer>
这个示例展示了如何获取单页面列表,并通过简单的 if 语句排除特定页面,同时利用 item.Description 为链接添加标题提示,从而提升用户体验。结合系统其他标签(如 {% now %} 和 {% system %}),可以构建出更丰富多样的页面结构。
安企CMS的 pageList 标签使得单页面内容的调用和展示变得轻而易举,无论是用于构建导航菜单、网站地图,还是其他任何需要列出独立页面的场景,都能提供高效且灵活的解决方案。
常见问题 (FAQ)
Q1: 如果我只想获取并显示某个特定的单页面内容,而不是所有单页面列表,应该使用哪个标签?
A1: 如果您只想显示某个特定的单页面的详细内容,例如“关于我们”页面的所有信息,您应该使用 pageDetail 标签。这个标签允许您通过页面的ID或URL别名来精确指定要获取的单页面,并直接显示其标题、内容、描述等详细信息。
Q2: 单页面可以有分类吗?我能否像文章一样给单页面设置所属分类? A2: 安企CMS中的单页面设计理念是用于独立、无分类的内容。如果您需要对内容进行分类管理,例如博客文章、产品展示等,建议使用内容管理下的文档管理功能,并创建相应的“文章模型”或“产品模型”及其分类。单页面本身不具备分类属性。
Q3: 我在后台创建了单页面,但在前台使用 pageList 标签后没有显示出来,可能是什么原因?
A3: 这可能有几个原因:
1. **页面状态**:请检查该单页面在后台是否被设置为“隐藏”或处于“草稿”状态。只有发布并显示状态的页面才能被 `pageList` 标签获取。
2. **模板逻辑**:检查您的 `pageList` 循环内部是否有条件判断(如 `{% if item.Id != X %}`)意外地排除了该页面。
3. **缓存问题**:尝试清除安企CMS后台的缓存,有时缓存会影响内容的即时更新。