在安企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>&copy; {% 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后台的缓存,有时缓存会影响内容的即时更新。