在网站运营中,文章详情页是用户获取信息的核心触点,它的信息呈现方式直接影响用户体验和内容价值的传递。AnQiCMS作为一个灵活的内容管理系统,提供了强大且精细的控制能力,让您可以在文章详情页上精准地展示所需的文档ID、标题、链接以及其他各类信息。

要实现对文章详情页内容的精确控制,我们主要依赖AnQiCMS的模板标签体系。其核心在于archiveDetail标签,它专门用于获取当前或指定文章的详细数据。通过为这个标签传递不同的参数,您可以按需提取文章的各项属性。

核心工具:archiveDetail 标签的使用

archiveDetail标签是您在文章详情页获取文章数据的基础。它的基本用法是{% archiveDetail with name="字段名称" %}。其中,name参数是关键,您需要指定想要获取的具体文章属性的字段名称。

除了获取当前文章的信息,您也可以通过idtoken参数来指定获取其他文章的详情,例如{% archiveDetail with name="Title" id="10" %}将获取ID为10的文章标题。但通常在文章详情页,系统会自动识别当前文章,因此您无需显式提供idtoken

接下来,我们将详细探讨如何利用archiveDetail标签及其相关辅助标签,精准地调用和展示文章详情页的各类信息。

细致入微:各项信息字段的调用

AnQiCMS为文章提供了丰富的内置字段,您可以根据需求灵活调用。

1. 基本文本信息:标题、描述与链接 文章最基本的信息包括标题、链接和描述。

  • 要显示文章标题,您可以使用{% archiveDetail with name="Title" %}
  • 文章的唯一ID则通过{% archiveDetail with name="Id" %}获取。
  • 文章的对外访问链接可以通过{% archiveDetail with name="Link" %}来展示,方便用户分享或导航。
  • 文章的简要描述通常由{% archiveDetail with name="Description" %}提供,这在SEO和内容预览中都非常重要。

2. 文章内容及其结构:文本与目录 文章的核心是其内容。

  • 要显示文章正文,请使用{% archiveDetail with name="Content" %}。由于文章内容可能包含HTML或Markdown格式,为了确保浏览器正确解析,通常需要配合|safe过滤器使用,即{{archiveContent|safe}}。如果内容是Markdown格式,您还可以通过render=true参数让系统在输出前自动将其转换为HTML。此外,AnQiCMS还支持图片懒加载(lazy="data-src")等优化功能。
  • 如果文章内容有清晰的标题层级(H1, H2等),ContentTitles标签可以提取这些标题,并以数组形式返回,方便您生成文章目录(TOC),提升长文阅读体验。

3. 图片与视觉元素:封面与组图 视觉内容对于文章详情页同样重要。

  • 文章的封面首图可以通过{% archiveDetail with name="Logo" %}获取。
  • 经过系统处理的缩略图则由{% archiveDetail with name="Thumb" %}提供。
  • 如果文章包含一组图片(例如产品详情页的轮播图),Images字段会返回一个图片URL数组。您需要使用for循环遍历{% archiveDetail archiveImages with name="Images" %}来逐一显示这些图片。

4. 时间维度的数据:发布与更新 文章的发布和更新时间是衡量内容时效性的重要指标。

  • 文章的创建时间通过{% archiveDetail with name="CreatedTime" %}获取。
  • 文章的更新时间通过{% archiveDetail with name="UpdatedTime" %}获取。 由于这两个字段返回的是时间戳,您需要结合stampToDate过滤器来将其格式化为可读的日期时间格式,例如{{stampToDate(item.CreatedTime, "2006-01-02 15:04")}}

5. 分类、标签与关联:组织内容

  • 文章所属的分类ID可以通过{% archiveDetail with name="CategoryId" %}获得。得到分类ID后,您可以进一步使用categoryDetail标签来获取该分类的名称、链接等详细信息,例如:{% categoryDetail with name="Title" id=archive.CategoryId %}
  • 文章相关的标签(Tag)可以通过tagList标签获取,通常会结合当前文章ID来调用,例如{% tagList tags with itemId=archive.Id %},然后通过循环展示每个标签的名称和链接。
  • 对于文章的浏览量和评论数量,ViewsCommentCount字段可以直接调用,例如{% archiveDetail with name="Views" %}

6. 自定义字段的扩展力:模型参数 AnQiCMS的内容模型功能允许您为不同类型的文章定义额外的自定义字段。这些自定义字段极大地增强了文章详情页的灵活性,例如为产品添加“价格”、“库存”等。

  • 要获取这些自定义字段的值,您可以直接使用{% archiveDetail with name="你的自定义字段名" %}
  • 如果想展示所有自定义字段,或者需要遍历它们的名称和值,archiveParams标签是更强大的选择。它会返回一个包含所有自定义参数的数组,您可以通过for循环来动态展示,例如:
    
    {% archiveParams params %}
    {% for item in params %}
        <div>{{item.Name}}:{{item.Value}}</div>
    {% endfor %}
    {% endarchiveParams %}
    

提升用户体验:导航与相关内容

文章详情页的用户体验不仅仅在于展示当前文章,还在于引导用户发现更多相关内容。

  • 上一篇/下一篇文章: prevArchivenextArchive标签可以方便地获取当前文章的上一篇和下一篇文章的标题与链接,例如:
    
    {% prevArchive prev %}
        {% if prev %}<a href="{{prev.Link}}">{{prev.Title}}</a>{% endif %}
    {% endprevArchive %}
    
  • 相关文章推荐: 通过archiveList标签,并将type参数设置为related,您可以轻松地展示与当前文章相关的推荐文章列表。系统会根据文章关键词或同分类文章智能推荐。

实战应用场景:灵活组合展示

在实际操作中,您会根据网站设计将上述标签进行组合。例如,一个典型的文章详情页,通常会包含以下元素及其调用方式:

  • 页面顶部: 网站Logo ({% system with name="SiteLogo" %}), 导航菜单 ({% navList navs %}...{% endnavList %}), 面包屑导航 ({% breadcrumb crumbs %})。
  • 文章主体区域:
    • 主标题:<h1>{% archiveDetail with name="Title" %}</h1>
    • 元信息:发布时间 <span>{{stampToDate(archive.CreatedTime, "2006-01-02")}}</span>,阅读量 <span>{% archiveDetail with name="Views" %} 阅读</span>,所属分类 <span><a href="{% categoryDetail with name='Link' id=archive.CategoryId %}">{% categoryDetail with name='Title' id=archive.CategoryId %}</a></span>
    • 内容:{% archiveDetail articleContent with name="Content" %}{{articleContent|safe}}{% endarchiveDetail %}
    • 文章标签:{% tagList tags with itemId=archive.Id %}{% for tag in tags %}<a href="{{tag.Link}}">{{tag.Title}}</a>{% endfor %}{% endtagList %}
  • 页面底部: 版权信息 ({% system with name="SiteCopyright" %}), 友情链接 ({% linkList friendLinks %})。

如果是产品详情页,除了基础信息,还会重点展示产品图片、自定义参数和产品描述。例如,您可以利用{% archiveDetail archiveImages with name="Images" %}来展示一组产品图片,并通过{% archiveParams params %}循环展示产品规格、型号等自定义参数。

AnQiCMS提供了一套功能完备且易于理解的模板标签,让您能够灵活、精确地控制文章详情页的每一个信息元素。熟悉这些标签的用法,将极大地提升您对网站内容的运营效率和表现力。


常见问题 (FAQ)

1. 如何在文章内容中正确渲染HTML或Markdown? 当您使用{% archiveDetail with name="Content" %}调用文章内容时,如果内容包含HTML标签,需要配合|safe过滤器,例如{{archiveContent|safe}},以防止HTML代码被转义而无法正常显示。如果内容是Markdown格式,可以通过在archiveDetail标签中添加`render=