在内容管理中,标签(Tags)是一个强大而灵活的工具,它能帮助我们更精细地组织网站内容,提升用户体验,并优化搜索引擎排名。AnQiCMS 深知这一点,提供了直观且功能丰富的模板标签,让您可以轻松地获取并展示特定标签的详细描述及其关联的文档。
本文将深入探讨如何在 AnQiCMS 模板中利用这些标签,让您的网站内容更具关联性和可发现性。
理解 AnQiCMS 中的标签
在 AnQiCMS 的设计理念中,标签是对内容的一种横向关联和补充分类。与传统的分类(Category)通常采用层级结构不同,标签更侧重于关键词聚合,能够将不同分类甚至不同内容模型下的相关内容连接起来。例如,一篇文章可以属于“新闻”分类,同时被打上“AnQiCMS”、“更新”、“教程”等标签。
在 AnQiCMS 的后台管理界面,您可以在“内容管理”下的“文档标签”中,对这些标签进行统一的添加、编辑和管理。每个标签都可以拥有独立的名称、索引字母、详细描述,甚至自定义的 URL 别名和 SEO 信息,这些都为前端内容的灵活展示奠定了基础。
获取特定标签的详细描述
当我们希望在网站页面上展示某个标签自身的详细信息时,例如在标签详情页(通常对应 tag/detail.html 或 tag_detail.html 模板)中,AnQiCMS 提供了 tagDetail 标签。这个标签可以帮助我们精确地获取一个标签的各种属性。
使用 tagDetail 标签时,您可以通过 id(标签ID)或 token(标签URL别名)来指定要获取哪个标签的信息。如果您当前正处于一个标签的详情页面,并且没有指定 id 或 token,tagDetail 会智能地获取当前页面的标签信息。
您可以获取的标签字段包括:
- Id:标签的唯一标识ID。
- Title:标签的显示名称,如“AnQiCMS 教程”。
- Link:标签的访问链接。
- Description:标签的详细描述,常用于 SEO 或在页面上提供更多背景信息。
- Content:如果后台为标签填写了富文本内容,可以通过此字段获取。
- FirstLetter:标签名称的首字母(用于索引)。
- Logo:标签的缩略图或图标。
以下是一个获取标签标题和描述的示例代码片段:
{# 假设我们正在一个标签详情页,或者我们知道标签ID是1 #}
{# 获取标签标题 #}
<h1>{% tagDetail with name="Title" %}</h1>
{# 获取标签描述,如果描述包含HTML,需要使用 |safe 过滤器 #}
<div>
{% tagDetail tagDescription with name="Description" %}
{{ tagDescription|safe }}
</div>
{# 如果标签有Logo图片,可以这样显示 #}
{% tagDetail tagLogo with name="Logo" %}
{% if tagLogo %}
<img src="{{ tagLogo }}" alt="{% tagDetail with name='Title' %}" />
{% endif %}
{# 如果标签有富文本内容,同样需要 |safe 过滤器 #}
{% tagDetail tagContent with name="Content" %}
{% if tagContent %}
<section>{{ tagContent|safe }}</section>
{% endif %}
请注意,当获取的字段内容可能包含 HTML 标签时(如 Description 或 Content),务必使用 |safe 过滤器,以确保这些 HTML 内容能够被浏览器正确解析并显示,而不是作为纯文本输出。
获取与标签关联的文档列表
在展示了标签自身的详细信息之后,用户通常会期望看到该标签下所有相关的文档(文章、产品等)。AnQiCMS 为此提供了 tagDataList 标签,它可以根据指定的标签,检索出所有关联的内容。
tagDataList 标签的使用方式与 archiveList 类似,它会返回一个文档(或产品)的列表。其主要参数包括:
- tagId:指定要获取哪个标签下的文档。如果当前页面是某个标签的详情页,通常可以省略此参数,系统会默认获取当前标签ID。
- moduleId:如果您的网站有多种内容模型(如文章、产品),可以通过此参数指定只获取特定模型下的文档,例如
moduleId="1"获取文章,moduleId="2"获取产品。 - limit:控制返回文档的数量,例如
limit="10"将返回最多10条文档。 - type:指定列表的类型,
"list"用于不带分页的列表,"page"用于支持分页的列表(需要与pagination标签配合使用)。
tagDataList 会返回一个包含文档对象的数组,您可以使用 for 循环遍历这些文档,并从中提取诸如标题、链接、描述、缩略图、发布时间等信息。
以下是一个获取与当前标签关联的文档列表的示例:
”`twig {# 获取与当前标签关联的文档列表,每页显示10条,并支持分页 #} {% tagDataList archives with type=“page” limit=“10” %}
{% if archives %}
<ul class="related-docs">
{% for item in archives %}
<li>
<a href="{{ item.Link }}">
<h3>{{ item.Title }}</h3>
{% if item.Thumb %}
<img src="{{ item.Thumb }}" alt="{{ item.Title }}" class="doc-thumb" />
{% endif %}
<p>{{ item.Description|truncatechars:100 }}</p>
<span class="doc-info">
发布时间:{{ stampToDate(item.CreatedTime, "2006-01-02") }} |
浏览量:{{ item.Views }}
</span>
</a>
</li>
{% endfor %}
</ul>
{# 关联分页标签,用于生成分页导航 #}
{% pagination pages with show="5" %}
<nav class="pagination-nav">
<a href="{{ pages.FirstPage.Link }}" class="page-link {% if pages.FirstPage.IsCurrent %}active{% endif %}">首页</a>
{% if pages.PrevPage %}<a href="{{ pages.PrevPage.Link }}" class="page-link">上一页</a>{% endif %}
{% for p in pages.Pages %}
<a