如何在AnQiCMS模板中获取并显示单页(例如“关于我们”或“联系我们”)的内容和信息?

在安企CMS中管理和展示单页内容,如“关于我们”、“联系我们”或“服务条款”等,是网站运营中非常常见的需求。安企CMS为开发者提供了直观且功能强大的模板标签,让您可以轻松地在网站前端获取并呈现这些页面上的信息。

理解安企CMS中的单页内容管理

首先,我们需要了解安企CMS是如何管理这些“单页”的。在后台的“页面资源”模块下,您可以找到“页面管理”功能。在这里,您可以创建、编辑和管理网站上的所有单页。每个单页都包含了一系列信息,例如:

  • 页面名称/标题: 用户看到的主要标题。
  • 内容: 页面的主体文本,通常包含HTML格式的丰富内容。
  • 自定义URL: 您可以为每个单页设置一个友好的URL别名,例如“about-us”对应“关于我们”。
  • SEO标题、关键词和描述: 用于搜索引擎优化,提升页面可见性。
  • 缩略图和Banner图: 可用于页面概览或作为页面头部的视觉元素。
  • 单页面模板: 您甚至可以为特定的单页指定一个完全不同的模板文件,以实现独特的布局和设计。

这些信息在后台录入后,就可以通过模板标签在网站前端调用和展示。

核心功能标签:pageDetail

在安企CMS的模板系统中,获取单个单页内容的核心工具便是pageDetail标签。这个标签允许您根据单页的ID或其自定义URL别名,精确地获取该页面的所有详细信息。

pageDetail标签的基本用法是:{% pageDetail 变量名称 with name="字段名称" id="单页ID" %}{% pageDetail 变量名称 with name="字段名称" token="单页URL别名" %}

  • id 参数: 这是单页在后台数据库中的唯一数字标识符。通常,当您在后台创建单页后,系统会自动分配一个ID。
  • token 参数: 这是您在后台为单页设置的自定义URL别名(例如“about-us”)。使用token通常比id更具可读性和易用性,因为URL别名通常更具语义化。
  • name 参数: 这个参数用于指定您希望从单页数据中获取的具体字段,比如标题(Title)、内容(Content)、链接(Link)等。
  • 变量名称 您可以为获取到的数据指定一个变量名(如aboutPage),这样就可以在后续代码中通过{{ aboutPage.Title }}等方式引用页面的其他属性。如果不指定变量名称,则pageDetail标签会直接输出指定字段的值。

获取单页内容的关键字段:

  • Title 单页的标题。
  • Content 单页的主体内容。请注意,由于单页内容通常包含HTML格式,您在模板中显示时,需要使用|safe过滤器来确保HTML代码能够被正确渲染,而不是被转义成纯文本。例如:{{ pageContent|safe }}
  • Link 单页的访问URL。
  • Description 单页的描述(通常用于SEO)。
  • LogoThumb 单页设置的缩略图和大图地址。
  • Images 单页设置的多张幻灯片组图,这是一个数组,需要通过for循环遍历显示。

示例:获取“关于我们”页面的标题和内容

假设您在后台创建了一个“关于我们”页面,其ID为1,并且设置了URL别名为“about-us”。

{# 假设我们正在一个基础模板中,需要获取“关于我们”这个单页的信息 #}

<div class="about-us-section">
    {# 方法一:通过ID获取,并指定变量名aboutPage #}
    {% pageDetail aboutPage with name="Title" id="1" %}
    <h2>{{ aboutPage }}</h2>

    {% pageDetail aboutContent with name="Content" id="1" %}
    <div class="page-content">
        {# 注意:单页内容通常包含HTML,需要使用 |safe 过滤器防止HTML被转义 #}
        {{ aboutContent|safe }}
    </div>

    {# 方法二:通过URL别名获取,直接输出字段值 #}
    <h3>{% pageDetail with name="Title" token="about-us" %}</h3>
    <div class="page-description">
        {# 获取描述信息,用于SEO或页面摘要 #}
        <p>{% pageDetail with name="Description" token="about-us" %}</p>
    </div>

    {# 如果单页设置了Logo或Thumb,可以这样显示 #}
    {% pageDetail pageLogo with name="Logo" token="about-us" %}
    {% if pageLogo %}
        <img src="{{ pageLogo }}" alt="{% pageDetail with name="Title" token="about-us" %}" class="page-logo">
    {% endif %}

    {# 如果单页设置了多张图片,可以这样遍历显示 #}
    {% pageDetail pageImages with name="Images" token="about-us" %}
    {% if pageImages %}
        <div class="page-gallery">
        {% for image in pageImages %}
            <img src="{{ image }}" alt="{% pageDetail with name="Title" token="about-us" %} 图片" class="gallery-item">
        {% endfor %}
        </div>
    {% endif %}
</div>

结合pageList实现单页列表展示(辅助用途)

虽然您主要关注的是获取单个页面的内容,但在某些场景下,您可能需要列出网站上的所有单页,例如在网站底部的版权信息区添加“隐私政策”、“服务条款”等链接,或者在站点地图中展示所有可访问的单页。此时,pageList标签就派上用场了。

pageList标签会获取所有已发布的单页。您可以配合for循环来遍历这些单页,并显示它们的标题和链接。

{# 列出所有单页,例如用于网站地图或页脚导航 #}
<nav class="footer-pages-nav">
    <ul>
    {% pageList allPages %}
        {% for item in allPages %}
        <li><a href="{{ item.Link }}">{{ item.Title }}</a></li>
        {% endfor %}
    {% endpageList %}
    </ul>
</nav>

在实际应用中,您可以在for循环内部添加条件判断,例如排除ID为特定值的页面,或只显示特定类型的页面(如果您的页面管理有更细致的分类)。

进阶应用与技巧

  • 自定义模板: 安企CMS允许您为特定的单页指定一个独立的模板文件。例如,如果您为“联系我们”页面创建了一个名为page/contact-us.html的模板,并在后台单页设置中指定了它,那么当用户访问该页面时,系统就会自动加载这个定制的模板,并在其中使用pageDetail标签来获取当前页面的信息。
  • SEO优化: 获取到的单页标题和描述等信息,可以被灵活地放置在页面的<title>标签和<meta name="description">标签中,以确保每个单页都有独立的、优化的SEO元信息。
  • 多站点支持: 如果您在使用安企CMS的多站点管理功能,并且需要调用其他站点下的单页内容,pageDetailpageList标签都支持siteId参数,让您能够跨站点获取数据。

通过pageDetailpageList标签的灵活运用,您可以在安企CMS中高效且精准地控制网站单页内容的展示,为用户提供流畅的浏览体验,同时也能满足网站运营和SEO的各项需求。

常见问题 (FAQ)

  1. 问:如何在模板中通过单页的中文名称(如“关于我们”)来获取其内容,而不是使用ID或URL别名? 答: 安企CMS的pageDetail标签目前不支持直接通过中文名称来获取单页内容。您