`archiveDetail`标签如何用于获取和展示单个文档的详细内容信息?

在安企CMS中,archiveDetail 标签是模板制作时一个非常核心且实用的工具,它主要用于获取和展示单个文档的详细内容信息。无论是博客文章、产品详情、新闻报道,还是其他任何需要独立展示的页面内容,archiveDetail 都能帮助您灵活地提取并呈现在网站的前端页面上。

archiveDetail 标签的核心功能概览

这个标签的设计宗旨是为单个文档提供丰富的数据支持,让您在构建详情页时能够轻松调用文档的各种属性。它不仅仅局限于标题和正文,还包括了SEO信息、图片、时间、所属分类以及您自定义的各种字段,从而实现高度定制化的页面展示。

archiveDetail 标签的基本用法

archiveDetail 标签的使用方式非常直观。当您处于一个文档的详情页面时,系统默认会识别当前文档,并允许您直接调用其属性。如果您需要获取特定文档的数据,可以通过 idtoken 参数进行指定。

基本语法结构通常是这样的: {% archiveDetail 变量名称 with name="字段名称" id="文档ID" %}

其中:

  • 变量名称 是可选的,如果您不设置,标签会直接输出字段内容。如果设置了,您可以将获取到的内容赋值给一个变量,以便在模板中进一步处理或多次使用。
  • name="字段名称" 用于指定您想要获取的文档具体属性,比如标题、内容等。
  • id="文档ID"token="文档URL别名" 则用于指定获取哪个文档的数据。当您在文档详情页时,这两个参数通常可以省略,标签会自动获取当前页面的文档信息。如果您需要在其他页面调用指定文档,它们就显得尤为重要。

例如,在文档详情页,您会经常看到这样的用法:{{archive.Title}} 来直接输出文档标题。这里的 archive 是一个全局变量,代表了当前页面的文档对象。

深入理解常用字段与应用

archiveDetail 标签通过 name 参数可以获取文档的众多字段,这些字段涵盖了文档的方方面面,能够满足绝大多数的展示需求。

  1. 基本信息与SEO

    • 文档ID (Id)、标题 (Title)、链接 (Link)、描述 (Description):这些是文档最基础的信息,用于页面主体的展示和SEO优化。您可以轻松地将文档标题放在 <h1> 标签中,将描述用于页面的 meta description
    • SEO标题 (SeoTitle)、关键词 (Keywords):这些字段专为搜索引擎优化设计,允许您为每个文档设置更具针对性的TDK(Title, Description, Keywords),以提升文档在搜索结果中的表现。
    • 规范链接 (CanonicalUrl):在有多个URL指向同一内容时,可以指定规范链接,避免搜索引擎重复抓取,提升SEO效率。
  2. 内容主体 (Content) 与目录 (ContentTitles)

    • Content:这是文档的主体内容。值得一提的是,Content 字段支持图片懒加载 (lazy="data-src") 和 Markdown 渲染 (render=true)。这意味着如果您的内容包含大量图片,可以开启懒加载优化页面加载速度;如果您的内容使用 Markdown 编写,系统也能自动将其转换为HTML进行展示,大大提升内容编辑的灵活性。
    • ContentTitles:如果您的文档内容结构清晰,包含多个标题层级,这个字段可以返回一个标题数组,您可以利用它自动生成文章目录,提升用户阅读体验。
  3. 图片展示 (Logo, Thumb, Images)

    • LogoThumb:分别用于获取文档的封面大图和缩略图,适用于列表页或详情页的视觉呈现。
    • Images:如果文档包含一组图片(例如产品组图),这个字段会返回一个图片URL数组。您需要配合 for 循环标签来遍历并展示所有图片。
  4. 时间信息 (CreatedTime, UpdatedTime)

    • 这两个字段返回的是文档的创建时间和更新时间的时间戳。通常,您需要结合 stampToDate 标签将其格式化成易读的日期时间格式,例如 {{stampToDate(archive.CreatedTime, "2006-01-02 15:04")}}
  5. 所属分类 (Category)

    • archiveDetail 标签可以直接获取文档所属的分类信息。Category 字段本身是一个对象,您可以进一步访问其 TitleLink 等属性,例如 {{archive.Category.Title}} 来显示分类名称。
  6. 自定义字段参数 (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 标签遍历并显示了所有自定义的产品规格参数,最后呈现