在网站运营中,单页面内容扮演着不可或缺的角色,它们通常承载着“关于我们”、“联系我们”、“服务条款”、“隐私政策”等重要信息,既需要清晰展示,又要求管理便捷。AnQiCMS 提供了 pageList 和 pageDetail 这两个强大的模板标签,帮助我们高效地管理和显示这些单页面内容。
管理单页面内容:后台操作指引
AnQiCMS 在设计之初就充分考虑了各类网站的内容管理需求,其后台界面简洁直观,即使是初次接触的用户也能快速上手。要管理单页面内容,我们首先需要进入后台的“页面资源”模块,选择“页面管理”。
在这里,你可以清晰地看到所有已创建的单页面列表。点击“添加单页面”或编辑现有页面时,会发现一系列实用的配置项:
- 页面名称: 这是页面在前台显示的标题。
- SEO标题、关键词、描述: 这部分对于搜索引擎优化至关重要。我们可以为每个单页面单独设置这些元信息,提升页面在搜索结果中的可见度。
- 自定义URL: 这是一个非常灵活且强大的功能。AnQiCMS 默认会根据页面名称生成拼音URL,但你可以手动修改,例如将“关于我们”的URL设置为
/about-us.html。这不仅使URL更具可读性,也有利于SEO。当网站启用了伪静态规则时,自定义URL会发挥更大的作用。 - 单页面简介: 对页面内容的简要概括。
- 内容编辑器: AnQiCMS 内置了功能丰富的编辑器,支持图文混排,可以轻松编辑页面主体内容。如果后台启用了 Markdown 编辑器,我们甚至可以直接编写 Markdown 格式的内容,系统会自动将其渲染成 HTML。
- 单页面模板: 这是一个非常实用的功能。AnQiCMS 默认会使用
page/detail.html作为所有单页面的展示模板,但如果某个页面(比如“联系我们”)需要独特的设计布局,你可以为其指定一个自定义模板,例如page/contact.html。这大大提升了页面展示的灵活性。 - Banner图、缩略图: 为页面添加视觉元素,在列表或特定布局中展示。
通过后台的这些细致设置,我们可以确保每个单页面都具备良好的内容结构、SEO属性和个性化展示能力。
展示单页面内容:pageDetail 标签的妙用
当我们创建好一个单页面后,自然需要将其内容展示给访问者。pageDetail 标签正是为此而生,它主要用于获取并显示单个特定单页面的详细数据。
通常情况下,我们会在单页面的详情模板(例如 template/default/page/detail.html)中使用 pageDetail 标签。这个标签最常见的用法是直接获取当前正在访问的单页面数据。
例如,要在页面中显示单页面的标题和内容,我们可以这样编写模板代码:
<h1>{% pageDetail with name="Title" %}</h1>
<div class="page-content">
{% pageDetail pageContent with name="Content" render=true %}
{{ pageContent|safe }}
</div>
在上面的例子中,{% pageDetail with name="Title" %} 直接输出了当前单页的标题。对于内容 pageContent,我们将其赋值给一个变量 pageContent,并使用 render=true 参数让系统自动将 Markdown 格式的内容转换为 HTML(如果后台启用了 Markdown),再通过 |safe 过滤器确保 HTML 代码能被浏览器正常解析显示,而不是被转义。
如果我们需要获取某个特定 ID 或自定义 URL 别名(token)的单页面数据,例如在非单页面详情页的某个区域显示“关于我们”页面的部分信息,可以这样指定参数:
<section class="about-summary">
<h2>{% pageDetail with name="Title" token="about-us" %}</h2>
<p>{% pageDetail with name="Description" token="about-us" %}</p>
<a href="{% pageDetail with name="Link" token="about-us" %}">了解更多</a>
</section>
这里,token="about-us" 精确指定了要获取的页面,即使我们当前不在/about-us.html这个页面上,也能正确地获取到它的标题、描述和链接。pageDetail 标签提供了 Id、Title、Link、Description、Content、Logo、Thumb、Images 等丰富的字段,方便我们根据需要提取各类信息。
列出单页面内容:pageList 标签的灵活运用
有时我们不仅需要展示单个页面的完整内容,还需要在网站的某个区域列出多个单页面,比如在页脚导航、服务列表或网站地图中。pageList 标签正是为此场景而设计,它能够获取网站中所有或部分单页面的列表。
pageList 的使用相对直接,它不需要复杂的参数,主要通过循环来遍历获取到的单页面集合。例如,要在页脚列出所有单页面作为辅助导航:
<nav class="footer-nav">
<h3>快速链接</h3>
<ul>
{% pageList pages %}
{% for item in pages %}
<li><a href="{{item.Link}}">{{item.Title}}</a></li>
{% endfor %}
{% endpageList %}
</ul>
</nav>
在上面的代码中,{% pageList pages %} 获取了所有单页面的数据,并将其赋值给 pages 变量。随后,我们通过 {% for item in pages %} 循环遍历这个集合,每次迭代都会将一个单页面的数据赋给 item 变量。item 变量包含了 Id、Title、Link、Description、Content、Logo、Thumb 等字段,我们可以根据需要在循环中显示这些信息。
如果网站中有一些单页面(例如后台管理页面的帮助文档、版权声明等)不希望在前台公开展示,虽然 pageList 本身没有提供直接的过滤参数,但我们可以在循环内部通过 if 逻辑判断来过滤掉不需要显示的页面,例如:
<nav class="main-nav">
<ul>
{% pageList pages %}
{% for item in pages %}
{# 假设Id为5的页面是内部页面,不希望显示在前台 #}
{% if item.Id != 5 %}
<li><a href="{{item.Link}}">{{item.Title}}</a></li>
{% endif %}
{% endfor %}
{% endpageList %}
</ul>
</nav>
这种在循环内进行条件判断的方式,为我们提供了极大的灵活性,可以根据页面的 ID、标题或其他属性来决定是否展示。
融合运用与**实践
pageList 和 pageDetail 标签并非孤立存在,它们在实际运营中常常需要结合使用,以达到**效果。
- 导航与内容联动: 我们可以使用
pageList在网站的顶部菜单或页脚生成动态的单页面导航链接。当用户点击这些链接时,页面会跳转到对应的单页面详情页,此时pageDetail就能精确地渲染出该页面的完整内容。 - 自定义模板的活用: 如果“关于我们”页面需要