如何在前台页面精确显示AnqiCMS特定文档的详细内容,包括标题、描述和图片?

安企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" %}

如果当前页面本身就是一个文档详情页,并且您想获取的就是当前文档的内容,那么idtoken参数甚至可以省略,系统会自动识别并加载当前文档的数据。

精准调用各项内容

一旦您通过archiveDetail标签锁定了目标文档,就可以通过name参数指定要显示的具体字段了。

  1. 显示文档标题 文档标题是内容的核心,您可以使用name="Title"来获取它。例如:

    <h1>{% archiveDetail with name="Title" id="1" %}</h1>
    

    如果您想显示SEO优化的标题,可以使用name="SeoTitle"

  2. 显示文档描述 文档的简要描述对用户和搜索引擎都非常重要。使用name="Description"即可:

    <p class="description">{% archiveDetail with name="Description" id="1" %}</p>
    
  3. 显示文档图片 安企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>
      
  4. 显示文档正文内容 文档的正文内容通常包含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>
    
  5. 显示发布时间与更新时间 时间信息对于用户了解内容时效性很重要。CreatedTimeUpdatedTime字段返回的是时间戳,您需要使用stampToDate过滤器将其格式化为可读的日期时间:

    <span>发布于:{{ stampToDate(archive.CreatedTime, "2006年01月02日 15:04") }}</span>
    <span>更新于:{{ stampToDate(archive.UpdatedTime, "2006-01-02") }}</span>
    

    这里的archive变量通常指当前页面的文档对象,或者您通过{% archiveDetail archive with ... %}定义的文档变量。

  6. 显示自定义字段 安企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">{{