在安QiCMS中管理和展示内容,标签(Tag)是一个非常实用的功能。它不仅能帮助您更好地组织文章内容,还能为用户提供更灵活的导航方式,并对搜索引擎优化(SEO)大有裨益。当读者浏览一篇文章时,如果能看到与其相关的标签列表,并能点击这些标签发现更多相似主题的内容,无疑会大大提升用户体验和网站的PV(页面浏览量)。

今天,我们就来深入了解如何在AnQiCMS中利用tagList标签,轻松地在文章页面显示与当前文章相关的标签列表及其链接。

标签的价值与AnQiCMS的标签管理

在AnQiCMS中,您可以在后台的“内容管理”模块下找到“文档标签”功能。发布或编辑文章时,系统提供了一个直观的界面让您为文章添加多个标签。这些标签可以是关键词、主题或任何您认为能概括文章内容的词语。

AnQiCMS的标签管理设计得很灵活,同一个标签可以关联不同内容模型下的文章。每个标签都可以有独立的名称、索引字母、自定义URL和SEO描述,这使得标签本身也成为网站内容体系中的重要组成部分,能够被搜索引擎更好地抓取和理解。

引入tagList标签:文章标签展示的核心

要在文章页面显示与当前文章相关联的标签列表,我们主要会用到AnQiCMS的内置标签tagList。这个标签专门用于获取和展示文档的标签信息。

tagList标签通常成对出现,格式如下:

{% tagList 变量名 with 参数 %}
    {# 循环处理标签数据的代码 #}
{% endtagList %}

其中,变量名 是您为获取到的标签列表定义的一个临时变量名称,例如articleTags。在标签内部,您可以使用for循环来遍历这个变量,从而逐一展示每个标签的详细信息。

实战演示:在文章详情页显示标签列表

假设您希望在每篇文章的底部,显示该文章所有已关联的标签,并让这些标签可以点击,跳转到该标签的专题页面。在AnQiCMS的文章详情模板(通常是{模型table}/detail.html)中,您可以这样编写代码:

{# 在文章详情页(例如:archive/detail.html)的合适位置 #}
<div class="article-tags-section">
    <strong>相关标签:</strong>
    {% tagList currentArticleTags %} {# 默认会自动获取当前文档的ID来显示相关标签 #}
        {% for item in currentArticleTags %}
            <a href="{{ item.Link }}" 
               class="tag-link" 
               title="查看更多关于 {{ item.Title }} 的内容">{{ item.Title }}</a>{% if not forloop.Last %}, {% endif %}
        {% empty %}
            <span>暂无相关标签。</span>
        {% endfor %}
    {% endtagList %}
</div>

在这段代码中:

  • {% tagList currentArticleTags %}:我们定义了一个名为 currentArticleTags 的变量来存储获取到的标签列表。当不指定 itemId 参数时,tagList 会智能地获取当前页面文章的ID,并显示其关联的所有标签。
  • {% for item in currentArticleTags %}:遍历 currentArticleTags 数组,item 变量在每次循环中代表一个具体的标签对象。
  • {{ item.Link }}:这是标签的链接地址。点击后,用户将被引导到该标签的聚合页面,显示所有带有此标签的文章。
  • {{ item.Title }}:这是标签的显示名称。
  • {% if not forloop.Last %}, {% endif %}:这是一个小技巧,用于在每个标签名称后添加逗号,但最后一个标签除外,使显示更自然。
  • {% empty %} ... {% endfor %}:如果当前文章没有关联任何标签,这部分内容就会显示,提示用户“暂无相关标签。”,避免页面出现空白。

灵活运用:探索tagList的更多参数

tagList标签还提供了一些参数,让您能够更精细地控制标签的显示方式。

  1. itemId:指定或获取全站标签

    • 默认行为(不带itemId:如上例所示,在文章详情页,它会自动获取当前文章的标签。
    • 指定文章ID:如果您想显示特定ID文章的标签,而不是当前页面的,可以这样使用:
      
      {# 显示ID为123的文章的所有标签 #}
      {% tagList specificArticleTags with itemId="123" %}
          {% for item in specificArticleTags %}
              <a href="{{ item.Link }}">{{ item.Title }}</a>
          {% endfor %}
      {% endtagList %}
      
    • 获取全站所有标签:如果您想在侧边栏、页脚或独立的标签页(例如tag/index.html)显示全站所有标签,可以设置itemId="0"
      
      {# 在侧边栏或页脚显示全站热门标签 #}
      <div class="site-tag-cloud">
          <h3>热门标签</h3>
          {% tagList allSiteTags with itemId="0" limit="30" %} {# itemId="0" 表示获取所有标签,不与当前文章关联 #}
              {% for item in allSiteTags %}
                  <a href="{{ item.Link }}">{{ item.Title }}</a>
              {% endfor %}
          {% endtagList %}
      </div>
      
  2. limit:控制显示数量 这个参数可以限制显示的标签数量。例如,如果您只想显示最热门的10个标签,可以这样:

    {# 显示当前文章的前5个标签 #}
    {% tagList limitedTags with limit="5" %}
        {% for item in limitedTags %}
            <a href="{{ item.Link }}">{{ item.Title }}</a>
        {% endfor %}
    {% endtagList %}
    

    limit还支持offset模式,例如limit="2,10"表示从第2个