安企CMS(AnQiCMS)凭借其灵活的内容管理和强大的模板引擎,为网站运营者提供了极大的便利。在日常内容运营中,我们经常需要根据特定的标签(Tag)来聚合和展示相关联的文档列表,比如“热门话题”、“技术干货”或“产品评测”等。这不仅有助于用户快速找到感兴趣的内容,也能有效提升网站的内部链接结构,对SEO大有裨益。
本文将深入探讨如何在AnQiCMS中获取并显示指定标签下的文档列表,帮助您更好地利用标签功能,优化内容呈现。
了解AnQiCMS中的标签功能
在AnQiCMS中,标签是一种非常实用的内容分类方式,它不同于传统的层级分类,更侧重于内容的关键词关联。您可以为文章、产品等内容模型添加一个或多个标签,从而实现多维度的内容归类。例如,一篇关于“网站建设”的文章,可以同时打上“SEO”、“用户体验”、“前端开发”等标签。
在AnQiCMS的后台,您可以在“内容管理”下的“文档标签”模块进行标签的创建、编辑和管理。每个标签都有其唯一的ID和别名,这些信息在前端模板调用时会派上用场。
核心标签:tagDataList 的运用
要获取并显示指定标签下的文档列表,AnQiCMS提供了专门的模板标签:tagDataList。这个标签是我们的核心工具,它能够根据标签ID灵活地检索相关文档。
1. 在标签详情页显示当前标签下的文档列表
当用户访问一个特定的标签详情页面(例如你的域名/tag/SEO),我们通常希望在这个页面上直接展示所有被打上“SEO”标签的文档。此时,tagDataList标签无需指定tagId,它会智能地识别当前页面的标签ID,并获取其关联文档。
以下是一个基本的模板代码示例,用于在标签详情页显示文档列表并实现分页:
{# 获取当前标签的详细信息,例如标签标题和描述 #}
{% tagDetail currentTag with name="Title" %}
{% tagDetail tagDescription with name="Description" %}
<h2>标签: {{ currentTag }}</h2>
{% if tagDescription %}
<p>{{ tagDescription }}</p>
{% endif %}
<div class="tag-documents">
{# 使用 tagDataList 获取当前标签下的文档列表,并开启分页功能 #}
{% tagDataList archives with type="page" limit="10" %}
{% for item in archives %}
<article class="document-item">
<h3><a href="{{ item.Link }}">{{ item.Title }}</a></h3>
<p>{{ item.Description|truncatechars:150 }}</p> {# 截取前150个字符作为简介 #}
<div class="meta-info">
<span>发布日期: {{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
<span>浏览量: {{ item.Views }}</span>
{# 如果需要显示文档所属分类,可以这样获取 #}
{% categoryDetail docCategory with name="Title" id=item.CategoryId %}
{% if docCategory %}
<span>分类: <a href="{% categoryDetail with name='Link' id=item.CategoryId %}">{{ docCategory }}</a></span>
{% endif %}
</div>
{% if item.Thumb %}
<div class="document-thumb">
<img src="{{ item.Thumb }}" alt="{{ item.Title }}">
</div>
{% endif %}
</article>
{% empty %}
<p>抱歉,当前标签下暂无文档。</p>
{% endfor %}
{% endtagDataList %}
{# 添加分页导航 #}
<div class="pagination-controls">
{% pagination pages with show="5" %}
<a class="first-page {% if pages.FirstPage.IsCurrent %}active{% endif %}" href="{{ pages.FirstPage.Link }}">首页</a>
{% if pages.PrevPage %}
<a class="prev-page" href="{{ pages.PrevPage.Link }}">上一页</a>
{% endif %}
{% for pageItem in pages.Pages %}
<a class="page-number {% if pageItem.IsCurrent %}active{% endif %}" href="{{ pageItem.Link }}">{{ pageItem.Name }}</a>
{% endfor %}
{% if pages.NextPage %}
<a class="next-page" href="{{ pages.NextPage.Link }}">下一页</a>
{% endif %}
<a class="last-page {% if pages.LastPage.IsCurrent %}active{% endif %}" href="{{ pages.LastPage.Link }}">尾页</a>
{% endpagination %}
</div>
</div>
在这个示例中:
- 我们首先使用
tagDetail获取当前标签的标题和描述,以便在页面上展示。 tagDataList archives with type="page" limit="10"会获取当前标签下的文档,每页显示10条,并将文档列表赋值给archives变量。type="page"是开启分页的关键。for item in archives循环遍历每篇文档,item.Link、item.Title、item.Description、item.CreatedTime、item.Views、item.Thumb等是文档的常用字段。stampToDate标签用于格式化文档的发布时间。categoryDetail标签用于获取文档所属分类的名称和链接。- 最后,
pagination pages with show="5"用于渲染分页导航,show="5"表示最多显示5个页码按钮。
2. 在其他页面按指定标签ID调用文档列表
如果您希望在网站的首页、侧边栏、文章详情页或其他任何页面上,展示某个特定标签下的精选文档,您需要明确指定该标签的ID和希望显示的文档数量。
假设您有一个标签“热门推荐”,其ID为5,您想在首页显示该标签下的3篇文档。
<div class="featured-tags-section">
<h3>热门推荐</h3>
<ul>
{# 使用 tagDataList 获取标签ID为5的文档,限制显示3篇 #}
{% tagDataList hotPicks with tagId="5" limit="3" %}
{% for doc in hotPicks %}
<li>
<a href="{{ doc.Link }}">{{ doc.Title }}</a>
<p class="summary">{{ doc.Description|truncatechars:80 }}</p>
</li>
{% empty %}
<li>暂无热门推荐文档。</li>
{% endfor %}
{% endtagDataList %}
</ul>
</div>
这里:
tagId="5"精确指定了要获取哪个标签的文档。limit="3"控制了显示文档的数量。hotPicks是您为这个文档列表自定义的变量名。
灵活多变:结合tagList展示标签云与内容
有时候,您可能想先展示网站上的热门标签或所有标签,然后让用户点击标签后,再跳转到对应的标签详情页,查看其下的文档。这可以通过 tagList 标签实现。
”`twig
<h3>探索更多话题</h3>