在网站运营中,像“关于我们”、“联系方式”或“服务介绍”这类内容,通常以独立页面的形式存在,我们称之为“单页面”。它们不像博客文章那样频繁更新,但却是网站不可或缺的核心信息。安企CMS提供了pageList和pageDetail这两个标签,让您能够非常灵活且高效地管理和展示这些单页面内容。
后台管理中的“单页面”内容
在深入了解标签用法之前,我们先来看看如何在安企CMS的后台创建和管理单页面。进入后台后,在“页面资源”模块下找到“页面管理”。在这里,您可以创建新的单页面,并填写其核心信息:
- 页面名称: 这是用户在网站前台看到的标题。
- 页面内容: 这里是单页面的主体内容,可以使用富文本编辑器,甚至支持Markdown语法来编写。如果您的内容是Markdown格式,系统在渲染时也能将其转换为HTML。
- 自定义URL: 为了SEO和用户友好性,您可以为每个单页面设置一个简洁有意义的URL别名,比如“about-us”或“contact”。
- SEO标题、关键词、简介: 这些是为搜索引擎优化的重要字段,能够帮助您的单页面在搜索结果中获得更好的展示。
- 单页面模板: 这是一个非常实用的功能。除了使用默认的单页面模板(如
page/detail.html)外,您还可以为特定单页面指定一个独立的模板文件,从而实现完全定制化的设计和布局。例如,您可以为“关于我们”页面设计一个专属的视觉风格,而其他单页面则保持通用样式。 - 缩略图和Banner图: 如果您的单页面需要有特色图片或轮播图,也可以在这里上传和配置。
这些后台设置是前端标签能够调用数据的基础。
展示单个单页面内容:pageDetail 标签
当您希望在网站的某个位置,比如一个专门的“关于我们”页面或者首页的一个特定区块,展示某个具体单页面的详细内容时,pageDetail标签就派上了用场。
通常情况下,当您访问一个单页面(例如通过yourdomain.com/about-us.html),安企CMS系统会自动识别当前页面,并为您提供该页面的所有详细数据。这意味着在page/detail.html或您自定义的单页面模板中,您可以直接使用{{page.Title}}、{{page.Content}}等来获取当前页面的信息,而无需额外指定ID。
例如,在一个标准的“关于我们”页面模板 (page/about-us.html) 中,您可以这样来展示内容:
<article>
<h1>{% pageDetail with name="Title" %}</h1>
<div class="page-content">
{%- pageDetail pageContent with name="Content" render=true %}
{{pageContent|safe}}
</div>
{%- tdk canonical with name="CanonicalUrl" %}
{%- if canonical %}
<link rel="canonical" href="{{canonical}}" />
{%- endif %}
</article>
这段代码首先获取了当前单页面的标题,然后是核心内容。需要注意的是,Content字段通常会包含HTML或Markdown,为了让浏览器正确解析并显示样式,我们会使用render=true参数(如果内容是Markdown)和|safe过滤器,这告诉系统此内容是安全的HTML,不需要进行额外转义。最后,如果后台设置了规范链接,也会通过tdk标签将其输出,有利于SEO。
如果您需要在其他位置,比如在首页的某个模块中,调用特定ID或URL别名的单页面内容,您可以这样使用pageDetail标签:
{# 假设您想在首页展示 ID 为 10 的“公司简介”单页面内容 #}
<section class="company-intro">
<h2>{% pageDetail with name="Title" id="10" %}</h2>
<p>{% pageDetail with name="Description" id="10" %}</p>
<a href="{% pageDetail with name="Link" id="10" %}" class="read-more">了解更多</a>
</section>
{# 或者通过自定义URL别名来获取 #}
<section class="contact-info">
<h3>联系我们</h3>
{% pageDetail contactPage with token="contact-us" %}
<p>{{contactPage.Content|safe}}</p>
<p>电话:{% contact with name="Cellphone" %}</p>
</section>
通过id="10"或token="contact-us"参数,pageDetail标签可以精确地获取到指定单页面的数据,让您能够在网站的任何位置灵活地引用。
列出多个单页面内容:pageList 标签
有时,您可能需要在一个地方列出多个单页面,比如在网站的页脚导航中展示“关于我们”、“服务条款”和“隐私政策”等链接。这时,pageList标签就非常适合。它会返回所有已创建的单页面列表,您可以对这些页面进行循环遍历并展示。
pageList标签使用起来非常直观,它不需要额外的参数,只需一个变量名来承载返回的单页面集合:
<nav class="footer-nav">
<h3>友情链接</h3>
<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>
在这个例子中,我们用pages变量来接收pageList返回的单页面数组,然后通过for循环遍历每一个item。在循环内部,item.Link会输出页面的链接,item.Title则输出页面标题。我们还加入了一个条件判断{% if item.Id != 5 %},来演示如何根据需求灵活地排除某些特定页面不被列出,确保只展示您想要的内容。
灵活运用与小技巧
- 模板定制化: 如前所述,为关键的单页面(如“关于我们”)创建自定义模板,可以极大地提升页面的独特性和用户体验。在后台页面管理中,直接填写您的自定义模板文件路径(例如
page/about.html),pageDetail标签便会自动应用它。 - SEO友好URL: 充分利用单页面的“自定义URL”功能,为您的单页面设置有意义的、符合SEO规范的短链接,例如将“关于我们”设置为
/about/而非/page/1.html。 - 内容安全处理: 在展示单页面内容时,务必注意使用
|safe过滤器。同时,如果您的内容包含Markdown,别忘了在pageDetail标签中添加render=true参数,让系统为您完成转换。 - 页脚导航与侧边栏:
pageList非常适合用来构建网站的页脚导航、侧边栏链接或者“网站地图”等功能,可以快速生成这些链接集合。
安企CMS的pageList和pageDetail标签,旨在提供既强大又简洁的单页面内容管理和展示能力。无论是精确地展示一个页面的详细信息,还是灵活地构建页面列表导航,它们都能帮助您轻松实现网站的内容布局。
常见问题 (FAQ)
1. 我想让“关于我们”页面拥有独特的样式,而不是使用所有单页面的通用样式,应该怎么做?
您可以在安企CMS后台的“页面管理”中编辑“关于我们”这个单页面。在编辑页面底部,有一个“单页面模板”的选项,您可以在这里输入一个自定义的模板文件名,例如page/about.html。然后,在您的主题目录下创建这个文件,并按照您的设计需求编写HTML和CSS,这样系统就会为“关于我们”页面单独加载这个定制模板了。
2. 我已经创建了多个单页面,但只想在页脚导航中显示其中几个,并排除“免责声明”页面,如何实现?
您可以使用pageList标签来遍历所有单页面,并在循环中使用{% if %}条件判断来排除不需要显示的页面。例如,如果“免责声明”页面的ID是7,您可以在模板中这样写:
{% pageList pages %}
{% for item in pages %}
{% if item.Id != 7 %} {# 排除ID为7的页面 #}
<li><a href="{{ item.Link }}">{{ item.Title }}</a></li>
{% endif %}
{% endfor %}
{% endpageList %}
通过这种方式,您可以灵活控制哪些页面在列表中显示。
3. 如果我的单页面内容是用Markdown编写的,pageDetail标签能正确显示吗?
是的,安企CMS的pageDetail标签支持渲染Markdown内容。当您调用`Content