在安企CMS中,archiveDetail 标签是模板制作时一个非常核心且实用的工具,它主要用于获取和展示单个文档的详细内容信息。无论是博客文章、产品详情、新闻报道,还是其他任何需要独立展示的页面内容,archiveDetail 都能帮助您灵活地提取并呈现在网站的前端页面上。
archiveDetail 标签的核心功能概览
这个标签的设计宗旨是为单个文档提供丰富的数据支持,让您在构建详情页时能够轻松调用文档的各种属性。它不仅仅局限于标题和正文,还包括了SEO信息、图片、时间、所属分类以及您自定义的各种字段,从而实现高度定制化的页面展示。
archiveDetail 标签的基本用法
archiveDetail 标签的使用方式非常直观。当您处于一个文档的详情页面时,系统默认会识别当前文档,并允许您直接调用其属性。如果您需要获取特定文档的数据,可以通过 id 或 token 参数进行指定。
基本语法结构通常是这样的:
{% archiveDetail 变量名称 with name="字段名称" id="文档ID" %}
其中:
变量名称是可选的,如果您不设置,标签会直接输出字段内容。如果设置了,您可以将获取到的内容赋值给一个变量,以便在模板中进一步处理或多次使用。name="字段名称"用于指定您想要获取的文档具体属性,比如标题、内容等。id="文档ID"或token="文档URL别名"则用于指定获取哪个文档的数据。当您在文档详情页时,这两个参数通常可以省略,标签会自动获取当前页面的文档信息。如果您需要在其他页面调用指定文档,它们就显得尤为重要。
例如,在文档详情页,您会经常看到这样的用法:{{archive.Title}} 来直接输出文档标题。这里的 archive 是一个全局变量,代表了当前页面的文档对象。
深入理解常用字段与应用
archiveDetail 标签通过 name 参数可以获取文档的众多字段,这些字段涵盖了文档的方方面面,能够满足绝大多数的展示需求。
基本信息与SEO
- 文档ID (
Id)、标题 (Title)、链接 (Link)、描述 (Description):这些是文档最基础的信息,用于页面主体的展示和SEO优化。您可以轻松地将文档标题放在<h1>标签中,将描述用于页面的meta description。 - SEO标题 (
SeoTitle)、关键词 (Keywords):这些字段专为搜索引擎优化设计,允许您为每个文档设置更具针对性的TDK(Title, Description, Keywords),以提升文档在搜索结果中的表现。 - 规范链接 (
CanonicalUrl):在有多个URL指向同一内容时,可以指定规范链接,避免搜索引擎重复抓取,提升SEO效率。
- 文档ID (
内容主体 (
Content) 与目录 (ContentTitles)Content:这是文档的主体内容。值得一提的是,Content字段支持图片懒加载 (lazy="data-src") 和 Markdown 渲染 (render=true)。这意味着如果您的内容包含大量图片,可以开启懒加载优化页面加载速度;如果您的内容使用 Markdown 编写,系统也能自动将其转换为HTML进行展示,大大提升内容编辑的灵活性。ContentTitles:如果您的文档内容结构清晰,包含多个标题层级,这个字段可以返回一个标题数组,您可以利用它自动生成文章目录,提升用户阅读体验。
图片展示 (
Logo,Thumb,Images)Logo和Thumb:分别用于获取文档的封面大图和缩略图,适用于列表页或详情页的视觉呈现。Images:如果文档包含一组图片(例如产品组图),这个字段会返回一个图片URL数组。您需要配合for循环标签来遍历并展示所有图片。
时间信息 (
CreatedTime,UpdatedTime)- 这两个字段返回的是文档的创建时间和更新时间的时间戳。通常,您需要结合
stampToDate标签将其格式化成易读的日期时间格式,例如{{stampToDate(archive.CreatedTime, "2006-01-02 15:04")}}。
- 这两个字段返回的是文档的创建时间和更新时间的时间戳。通常,您需要结合
所属分类 (
Category)archiveDetail标签可以直接获取文档所属的分类信息。Category字段本身是一个对象,您可以进一步访问其Title、Link等属性,例如{{archive.Category.Title}}来显示分类名称。
自定义字段参数 (
archiveParams)- 除了上述内置字段,您在后台为文档模型自定义的额外字段也能通过
archiveDetail或专门的archiveParams标签获取。这为您提供了极大的内容扩展能力。您可以直接通过{{archive.您的自定义字段名}}访问,或者使用archiveParams标签遍历所有自定义参数。
- 除了上述内置字段,您在后台为文档模型自定义的额外字段也能通过
实用场景示例
为了更好地理解 archiveDetail 的应用,我们来看几个常见的场景:
场景一:构建博客文章详情页
在一个典型的博客文章详情页,您可能需要展示文章标题、发布时间、所属分类、标签、正文内容和浏览量。
<article>
<h1 class="article-title">{% archiveDetail with name="Title" %}</h1>
<div class="article-meta">
发布于:<span>{% archiveDetail with name="CreatedTime" format="2006年01月02日" %}</span>
分类:<a href="{% categoryDetail with name='Link' id=archive.CategoryId %}">{% categoryDetail with name='Title' id=archive.CategoryId %}</a>
浏览:<span>{% archiveDetail with name="Views" %}次</span>
</div>
<div class="article-content">
{%- archiveDetail articleContent with name="Content" lazy="data-src" render=true %}
{{articleContent|safe}}
</div>
</article>
这里,我们获取了文章标题、格式化后的发布时间、通过 CategoryId 关联获取了分类的链接和名称、以及文章浏览量。内容部分则启用了图片懒加载和Markdown渲染,确保内容的丰富性和加载效率。
场景二:展示产品详情页
对于一个产品详情页,除了产品名称和详细介绍外,可能还需要展示产品主图、多张产品细节图以及产品规格等自定义参数。
<div class="product-detail-wrapper">
<div class="product-image-gallery">
<img src="{% archiveDetail with name='Logo' %}" alt="{% archiveDetail with name='Title' %}" class="product-main-image" />
<ul class="product-thumb-list">
{% archiveDetail productImages with name="Images" %}
{% for img in productImages %}
<li><img src="{{img}}" alt="{% archiveDetail with name='Title' %}" /></li>
{% endfor %}
</ul>
</div>
<div class="product-info">
<h1 class="product-name">{% archiveDetail with name="Title" %}</h1>
<p class="product-description">{% archiveDetail with name="Description" %}</p>
<div class="product-specs">
<h3>产品规格</h3>
{% archiveParams params %}
{% for item in params %}
<p><span>{{item.Name}}:</span>{{item.Value}}</p>
{% endfor %}
{% endarchiveParams %}
</div>
</div>
<div class="product-full-content">
<h2>详细介绍</h2>
{%- archiveDetail productContent with name="Content" %}
{{productContent|safe}}
</div>
</div>
在这个例子中,我们展示了产品主图 Logo,并利用 Images 字段循环展示了产品组图。同时,通过 archiveParams 标签遍历并显示了所有自定义的产品规格参数,最后呈现