如何在安企CMS中获取并显示指定Tag标签下的相关文档列表?

安企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.Linkitem.Titleitem.Descriptionitem.CreatedTimeitem.Viewsitem.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>