标签模板标签

iCMS 标签系统技术文档

标签标签 (TagFunc)

标签标签用于获取和显示标签数据,支持标签列表、标签信息等功能。

tag:list 标签

获取标签列表数据。

支持参数

参数名 类型 默认值 说明
row 整数 10 每页显示条数
cache 布尔值 0 是否缓存结果
time 整数 -1 缓存时间(秒)
page 布尔值 0 是否启用分页
status 整数 1 状态(1:正常)
rootid 整数 - 父标签ID
rootid! 整数 - 排除的父标签ID
field 字符串 - 字段名
tkey 字符串 - 标签键名
tcid 整数/字符串 - 标签分类ID
cid 整数/字符串 - 内容分类ID
keywords 字符串 - 搜索关键词
meta 布尔值 0 是否获取元数据
orderby 字符串 id 排序字段
by 字符串 DESC 排序方式(ASC/DESC)

特殊排序参数

参数值 对应字段 说明
hot count 按热度(使用次数)排序
new id 按最新添加排序
sort sortnum 按排序值排序

返回数据结构

[
    [
        'id' => 标签ID,
        'name' => 标签名称,
        'tkey' => 标签键名,
        'field' => 字段名,
        'url' => 标签链接,
        'count' => 使用次数,
        'seotitle' => SEO标题,
        'keywords' => SEO关键词,
        'description' => SEO描述,
        'status' => 状态,
        'sortnum' => 排序值,
        'rootid' => 父标签ID,
        'tcid' => 标签分类ID,
        'cid' => 内容分类ID,
        'pic' => [图片信息],
        'addtime' => 添加时间
    ],
    // 更多标签...
]

使用示例

<!--{iCMS:tag:list row='20' orderby='hot' by='DESC' cache='1'}-->
  <div class="tag-cloud">
    <h2>热门标签</h2>
    <div class="tags">
      <!--{foreach key="key" value="value" from="$tag_list"}-->
        <a href="<!--{$value.url}-->" class="tag-item" style="font-size: <!--{$value.count/10+12}-->px;">
          <!--{$value.name}--> (<!--{$value.count}-->)
        </a>
      <!--{/foreach}-->
    </div>
  </div>

最佳实践

标签云展示

<!--{iCMS:tag:list row='50' orderby='hot' by='DESC' cache='1'}-->
  <div class="tag-cloud">
    <h2>标签云</h2>
    <div class="tags">
      <!--{foreach key="key" value="value" from="$tag_list"}-->
        <!--{"$fontSize = min(max(12, $value.count/5+12), 24)"}-->
        <!--{"$opacity = min(max(0.5, $value.count/100+0.5), 1)"}-->
        <a href="<!--{$value.url}-->" class="tag-item" 
           style="font-size: <!--{$fontSize}-->px; opacity: <!--{$opacity}-->;">
          <!--{$value.name}-->
        </a>
      <!--{/foreach}-->
    </div>
  </div>

分类标签展示

<!--{iCMS:tag:list tcid='1' row='20' cache='1'}-->
  <div class="category-tags">
    <h3>分类标签</h3>
    <div class="tags">
      <!--{foreach key="key" value="value" from="$tag_list"}-->
        <a href="<!--{$value.url}-->" class="tag-item"><!--{$value.name}--></a>
      <!--{/foreach}-->
    </div>
  </div>

内容相关标签

<!--{iCMS:article:data id='$id'}-->
  <div class="article-detail">
    <h1><!--{$article_data.title}--></h1>
    <div class="content"><!--{$article_data.content}--></div>

    <!-- 文章标签 -->
    <!--{if $article_data.tags}-->
      <div class="article-tags">
        <span>标签:</span>
        <!--{foreach key="tkey" value="tag" from="$article_data.tags"}-->
          <a href="<!--{$tag.url}-->" class="tag"><!--{$tag.name}--></a>
        <!--{/foreach}-->
      </div>
    <!--{/if}-->

    <!-- 相关标签 -->
    <!--{iCMS:tag:list cid='$article_data.cid' row='10' orderby='hot' cache='1'}-->
      <div class="related-tags">
        <h3>相关标签</h3>
        <div class="tags">
          <!--{foreach key="key" value="value" from="$tag_list"}-->
            <a href="<!--{$value.url}-->" class="tag-item"><!--{$value.name}--></a>
          <!--{/foreach}-->
        </div>
      </div>

  </div>

性能优化建议

  1. 合理使用缓存

    <!--{iCMS:tag:list row='50' cache='1' time='3600'}-->

    ⚠️ 标签数据变动不频繁,可以设置较长的缓存时间。

  2. 限制数据获取

    只获取需要的标签数量,避免不必要的数据库查询:

    <!--{iCMS:tag:list row='20' orderby='hot'}-->
  3. 按需获取元数据

    只在需要时设置meta参数:

    <!--{iCMS:tag:list meta='1'}-->

调试技巧

  1. 开启调试模式

    <!--{iCMS:tag:list db_debug='1'}-->
  2. 查看SQL语句

    <!--{$tag_list_sql}-->
  3. 输出变量结构

    <!--{$tag_list|print_r}-->

高级用法

多条件组合查询

<!--{iCMS:tag:list 
  tcid='1,2,3' 
  field='article' 
  status='1' 
  orderby='hot' 
  by='DESC' 
  row='20' 
  page='1' 
  cache='1' 
  time='3600'
}-->

标签筛选

<!--{iCMS:tag:list keywords='设计,开发' row='20' cache='1'}-->
  <div class="filtered-tags">
    <h3>筛选标签</h3>
    <div class="tags">
      <!--{foreach key="key" value="value" from="$tag_list"}-->
        <a href="<!--{$value.url}-->" class="tag-item"><!--{$value.name}--></a>
      <!--{/foreach}-->
    </div>
  </div>

父子标签关系

<!--{iCMS:tag:list rootid='0' row='10' cache='1'}-->
  <div class="parent-tags">
    <h3>父标签</h3>
    <ul>
      <!--{foreach key="key" value="parent" from="$tag_list"}-->
        <li>
          <a href="<!--{$parent.url}-->"><!--{$parent.name}--></a>

          <!-- 子标签 -->
          <!--{iCMS:tag:list rootid='$parent.id' row='5' cache='1'}-->
            <ul class="child-tags">
              <!--{foreach key="ckey" value="child" from="$tag_list"}-->
                <li><a href="<!--{$child.url}-->"><!--{$child.name}--></a></li>
              <!--{/foreach}-->
            </ul>

        </li>
      <!--{/foreach}-->
    </ul>
  </div>