在安企CMS中,利用模板功能来展示网站中所有的Tag标签,是一项有助于提升内容可发现性和网站SEO的重要操作。AnQiCMS作为一个高效的内容管理系统,提供了直观且灵活的标签(Tag)管理机制,让用户能够轻松地在网站模板中列出这些内容。

了解 AnQiCMS 的标签功能

在AnQiCMS中,标签(Tag)可以看作是连接不同内容的话题或关键词。它们不像分类那样严格遵循层级结构,而是为内容提供了一种更灵活的归类方式,方便用户根据兴趣快速找到相关主题的文章或产品。后台的内容管理中,无论是文章、产品,都支持添加多个标签,这些标签不仅可以帮助用户进行站内搜索,也是搜索引擎理解网站内容关联性的重要依据。AnQiCMS提供了专门的标签管理界面,允许用户查看、新增、编辑或删除标签,并且这些标签不区分具体的模型或分类,同一个标签可以被用于标记多种类型的内容。

核心:使用 tagList 标签展示所有 Tag 标签

要在AnQiCMS的模板中列出网站里所有的Tag标签,我们主要会用到一个功能强大的模板标签,那就是 tagList。这个标签专门用于获取和展示标签列表。

通常情况下,tagList 标签可以根据当前页面的文档ID来显示与该文档相关的标签。但如果我们的目标是展示网站中所有的标签,而不仅仅是某个特定文档的标签,就需要对 tagList 标签的一个关键参数进行设置:itemId="0"

  • itemId 参数的作用:当你设置 itemId="0" 时,tagList 标签会忽略当前页面的特定文档关联,转而查询整个网站数据库中所有存在的Tag标签。这是获取全站标签列表的核心设置。

除了 itemId="0" 之外,tagList 还提供了其他一些实用的参数,帮助我们更好地控制标签的展示方式:

  • limit (显示数量):这个参数可以限制你希望显示多少个标签。例如,如果你想在侧边栏显示最热门的10个标签,可以设置 limit="10"。它甚至支持偏移模式,比如 limit="2,10" 会从第二个标签开始显示10个。
  • letter (索引字母):如果你想按字母顺序筛选标签,例如只显示以“A”开头的标签,可以设置 letter="A"
  • categoryId (分类ID):虽然标签通常不绑定到分类,但如果你希望只显示与某个或某几个特定分类相关的标签(例如,只显示“新闻”分类下的文章所使用的标签),可以使用 categoryId="1"(如果分类ID是1)或 categoryId="1,2,3"(多个分类)。
  • siteId (站点ID):对于运行多站点的用户,这个参数允许你指定从哪个站点获取标签数据。一般情况下,如果你只运营一个站点,则无需设置。

tagList 标签获取到的标签数据会以一个列表(或者说数组)的形式返回。因此,我们需要使用模板中的 for 循环来遍历并展示每一个标签。每个标签项会包含一些可用的字段,例如:Id (标签ID), Title (标签名称), Link (标签详情页链接), Description (标签描述), FirstLetter (标签首字母)等。

代码示例与详细解析

下面是一个简单的模板代码示例,展示了如何在AnQiCMS模板中列出网站中的所有Tag标签:

<div class="tag-cloud">
    <h3>热门标签</h3>
    <ul>
        {# 使用 tagList 标签获取所有标签,通过 itemId="0" 确保获取的是全站标签 #}
        {# limit="30" 可以限制显示的标签数量,这里设置为显示30个 #}
        {% tagList tags with itemId="0" limit="30" %}
            {% for item in tags %}
            <li>
                {# item.Link 是标签详情页的URL,item.Title 是标签的名称 #}
                <a href="{{item.Link}}" title="{{item.Title}}">
                    {{item.Title}}
                </a>
            </li>
            {% empty %}
            {# 如果没有任何标签,则显示此内容 #}
            <li>目前没有任何标签</li>
            {% endfor %}
        {% endtagList %}
    </ul>
</div>

代码解析:

  1. <h3>热门标签</h3>:这是一个普通的HTML标题,用于标记这个标签列表区域。
  2. {% tagList tags with itemId="0" limit="30" %}:这是核心部分。
    • tags:我们将获取到的标签列表存储到名为 tags 的变量中。
    • itemId="0":指示系统获取所有标签,而不是针对特定文档的标签。
    • limit="30":我们选择只显示前30个标签。你可以根据页面布局和需求调整这个数字。
  3. {% for item in tags %}:遍历 tags 变量中的每一个标签,item 代表当前循环到的单个标签对象。
  4. <li><a href="{{item.Link}}" title="{{item.Title}}">{{item.Title}}</a></li>:对于每个标签,我们创建一个列表项 <li>
    • {{item.Link}}:输出当前标签的详情页链接。点击后用户将跳转到包含该标签所有内容的页面。
    • {{item.Title}}:输出当前标签的名称,也就是我们希望用户看到的标签文字。title="{{item.Title}}" 是为了鼠标悬停时显示标签名称,提升用户体验。
  5. {% empty %}:这是 for 循环的一个可选部分,当 tags 列表中没有任何数据(即网站没有设置任何标签)时,会显示 <li>目前没有任何标签</li>
  6. {% endfor %}{% endtagList %}:分别标志着 for 循环和 tagList 标签的结束。

你可以将这段代码放置在网站的侧边栏、页脚或其他你希望展示所有标签的位置。

在专用页面展示 Tag 标签列表并支持分页

AnQiCMS通常会将专门用于展示所有标签的页面模板命名为 tag/index.html。如果你想在这个页面上以分页的形式展示所有的Tag标签,可以结合 tagListtype="page" 参数和 pagination 标签来实现。

<div class="all-tags-page">
    <h1>所有网站标签</h1>
    <ul class="tag-list-paginated">
        {# 使用 tagList 标签获取所有标签并启用分页,这里每页显示20个标签 #}
        {% tagList tags with itemId="0" type="page" limit="20" %}
            {% for item in tags %}
            <li>
                <a href="{{item.Link}}">
                    <h5>{{item.Title}}</h5>
                    {% if item.Description %}
                        <p>{{item.Description}}</p>
                    {% endif %}
                </a>
            </li>
            {% empty %}
            <li>目前没有任何标签。</li>
            {% endfor %}
        {% endtagList %}
    </ul>

    {# 分页代码 #}
    <div class="pagination-controls">
        {% pagination pages with show="5" %}
            {# 显示首页链接 #}
            <a class="{% if pages.FirstPage.IsCurrent %}active{% endif %}" href="{{pages.FirstPage.Link}}">{{pages.FirstPage.Name}}</a>
            {# 显示上一页链接 #}
            {% if pages.PrevPage %}
            <a href="{{pages.PrevPage.Link}}">{{pages.PrevPage.Name}}</a>
            {% endif %}
            {# 显示中间页码 #}
            {% for item in pages.Pages %}
            <a class="{% if item.IsCurrent %}active{% endif %}" href="{{item.Link}}">{{item.Name}}</a>
            {% endfor %}
            {# 显示下一页链接 #}
            {% if pages.NextPage %}
            <a href="{{pages.NextPage.Link}}">{{pages.NextPage.Name}}</a>
            {% endif %}
            {# 显示尾页链接 #}
            <a class="{% if pages.LastPage.IsCurrent %}active{% endif %}" href="{{pages.LastPage.Link}}">{{pages.LastPage.Name}}</a>
        {% endpagination %}
    </div>
</div>

这段代码会先用 tagList 获取所有标签并准备好分页数据,然后用 pagination 标签生成分页链接,方便用户浏览所有标签页。

总结

通过 tagList 标签,AnQiCMS提供了灵活的方式来展示网站中的所有Tag标签。无论是创建热门标签云,还是构建一个包含所有标签的独立页面,都可以通过简单的模板代码实现。合理地利用标签,不仅能让网站内容结构更加清晰,也有助于用户更便捷地探索网站信息,同时提升网站在搜索引擎中的表现。

常见问题 (FAQ)

  1. 问:如何在标签列表中只显示特定分类下的Tag标签? 答:如果你希望列出的标签只来源于网站中某个或某几个特定分类下的内容,可以在 tagList 标签中加入 categoryId 参数。例如,要显示ID为1和2的分类下的所有标签,可以这样设置:{% tagList tags with itemId="0" categoryId="1,2" %}

  2. 问:如何控制Tag标签的显示数量或者对标签列表进行分页? 答:tagList 标签提供了 limit 参数来控制显示数量,比如 limit="10" 会显示10个标签。如果需要分页显示,特别是在像 tag/index.html 这样的专用标签页面上,你可以将 tagList 标签的 type 参数设置为 type="page",并结合 pagination 标签来实现分页导航。例如:{% tagList tags with itemId="0" type="page" limit="20" %},然后搭配 {% pagination pages with show="5" %}...{% endpagination %} 来生成分页链接。

  3. 问:AnQiCMS中Tag标签的详情页URL是如何生成的?我能自定义吗? 答:AnQiCMS会根据后台设置的伪静态规则来生成Tag标签的详情页URL。例如,默认可能的形式是 /tag/标签ID/tag/标签别名。你可以在AnQiCMS后台的功能管理中找到“伪静态规则”设置,根据需要调整Tag