安企CMS(AnQiCMS)凭借其灵活的内容模型和直观的模板标签系统,让您能够轻松驾驭网站前台内容的展示。当我们需要在前台页面精确地呈现某个特定文档的详细内容,例如标题、描述、完整的正文以及相关的图片,了解其核心机制和常用标签就显得尤为重要。
理解安企CMS的内容结构
在安企CMS中,所有的内容都基于“内容模型”进行组织,例如常见的文章模型、产品模型等。每个模型都包含一系列标准字段(如标题、内容、描述、缩略图)和您根据业务需求自定义的额外字段。这些字段是您在前台页面调取和展示内容的基础。
精确获取特定文档详情的核心标签:archiveDetail
要在前台页面精确显示某个特定文档的详细内容,archiveDetail 标签无疑是您的“万能钥匙”。这个标签专门用于获取单一文档的所有数据,无论是标准字段还是自定义字段。
如何指定要显示的文档
使用archiveDetail标签时,您可以根据文档的ID或URL别名(token)来指定要获取哪个文档的数据。
- 通过文档ID指定:如果您知道文档的数字ID,可以使用
id="[文档ID]"参数。例如,{% archiveDetail with name="Title" id="10" %}将获取ID为10的文档标题。 - 通过URL别名指定:如果您的文档URL使用了别名(通常是拼音或英文),可以使用
token="[文档别名]"参数。例如,{% archiveDetail with name="Description" token="anqicms-features" %}。
如果当前页面本身就是一个文档详情页,并且您想获取的就是当前文档的内容,那么id或token参数甚至可以省略,系统会自动识别并加载当前文档的数据。
精准调用各项内容
一旦您通过archiveDetail标签锁定了目标文档,就可以通过name参数指定要显示的具体字段了。
显示文档标题 文档标题是内容的核心,您可以使用
name="Title"来获取它。例如:<h1>{% archiveDetail with name="Title" id="1" %}</h1>如果您想显示SEO优化的标题,可以使用
name="SeoTitle"。显示文档描述 文档的简要描述对用户和搜索引擎都非常重要。使用
name="Description"即可:<p class="description">{% archiveDetail with name="Description" id="1" %}</p>显示文档图片 安企CMS提供了多种图片类型供您选择:
- 封面首图(Logo)或缩略图(Thumb):通常用于列表页或文档顶部的单张主图。
<img src="{% archiveDetail with name="Logo" id="1" %}" alt="{% archiveDetail with name="Title" id="1" %}" /> - 文档组图(Images):如果文档包含多张图片(例如产品展示图集),
Images字段会返回一个图片URL数组。您需要使用for循环来遍历并显示它们。<div class="gallery"> {% archiveDetail docImages with name="Images" id="1" %} {% for img in docImages %} <img src="{{ img }}" alt="文档图片" /> {% endfor %} </div>
- 封面首图(Logo)或缩略图(Thumb):通常用于列表页或文档顶部的单张主图。
显示文档正文内容 文档的正文内容通常包含HTML格式,可能还有Markdown语法需要转换。在使用
name="Content"获取正文时,请务必配合|safe过滤器,以确保HTML内容能够正确渲染而不是被转义。如果您的文档内容启用了Markdown编辑器,您还可以添加render=true参数让系统自动将其转换为HTML:<div class="article-content"> {% archiveDetail docContent with name="Content" id="1" render=true %} {{ docContent|safe }} </div>显示发布时间与更新时间 时间信息对于用户了解内容时效性很重要。
CreatedTime和UpdatedTime字段返回的是时间戳,您需要使用stampToDate过滤器将其格式化为可读的日期时间:<span>发布于:{{ stampToDate(archive.CreatedTime, "2006年01月02日 15:04") }}</span> <span>更新于:{{ stampToDate(archive.UpdatedTime, "2006-01-02") }}</span>这里的
archive变量通常指当前页面的文档对象,或者您通过{% archiveDetail archive with ... %}定义的文档变量。显示自定义字段 安企CMS的强大之处在于其灵活的内容模型,您可以为不同模型添加各种自定义字段(如作者、来源、产品参数等)。要显示这些字段,可以直接使用其调用字段名:
<p>作者:{% archiveDetail with name="Author" id="1" %}</p>如果您想遍历显示文档的所有自定义参数,可以使用
archiveParams标签:<ul class="custom-params"> {% archiveParams params with id="1" %} {% for item in params %} <li>{{ item.Name }}:{{ item.Value }}</li> {% endfor %} </ul>
将它们组合起来:一个完整的示例
假设我们要显示ID为1的“关于安企CMS”文档,包括标题、描述、正文、主图和自定义的“版本号”字段:
”`twig <!DOCTYPE html>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{# 调用页面SEO标题和描述 #}
<title>{% tdk with name="Title" siteName=true %}</title>
<meta name="description" content="{% tdk with name="Description" %}">
<link rel="stylesheet" href="{% system with name="TemplateUrl" %}/css/style.css">
<header>{# 网站头部导航等内容 #}</header>
<main class="container">
<article class="document-detail">
{# 获取ID为1的文档所有数据,并赋值给archive变量,以便后续直接调用 #}
{% archiveDetail archive with id="1" %}
<h1 class="document-title">{{ archive.Title }}</h1>
<div class="document-meta">
<span>发布时间:{{ stampToDate(archive.CreatedTime, "2006年01月02日") }}</span>
<span>浏览量:{{ archive.Views }}</span>
{# 假设您的内容模型中有一个“Author”自定义字段 #}
{% archiveDetail authorName with name="Author" id="1" %}
{% if authorName %}
<span>作者:{{ authorName }}</span>
{% endif %}
</div>
{# 显示文档主图 #}
{% if archive.Logo %}
<div class="document-featured-image">
<img src="{{ archive.Logo }}" alt="{{ archive.Title }}" />
</div>
{% endif %}
<p class="document-description">{{