帝国CMS文章标签调用的多样化展示方式
2025-12-23
帝国CMS中,文章标签的调用不仅仅是用来展示文章相关关键词那么简单。合理利用标签,不仅能提升网站内容的关联性和可读性,还能优化SEO表现。关键在于如何多样化地展示这些标签。
下面我们就来看看几种实用的标签调用方式,适用于不同场景下的展示需求。
1. 常规文章页底部标签展示
这是最常见的做法,通常用于文章详情页的底部,帮助用户快速跳转到相关内容。
调用方式一般如下:
[e:loop={"select * from [!db.pre!]enewstags order by tagid desc limit 10",0,24,0}]
<li><a href="/e/tags/?tagname=<?=urlencode($bqr['tagname'])?>" target="_blank"><?=$bqr['tagname']?></a></li>
[/e:loop]
或者在具体文章中调用当前文章的标签:
<?php
$tags = '';
if ($navinfor['infotags']) {
$tag_list = explode(',', $navinfor['infotags']);
foreach ($tag_list as $tag) {
if ($tag) {
$tags .= '<a href="/e/tags/?tagname=' . urlencode($tag) . '" target="_blank">' . $tag . '</a>';
}
}
echo $tags;
}
?>
建议:
- 标签数量控制在3~8个之间,避免堆砌。
- 链接打开方式建议加
target="_blank",防止跳出当前页面。 - 可适当加上CSS样式,让标签看起来更像“标签”(比如圆角背景)。
2. 首页或栏目页的热门标签展示
除了单篇文章,你还可以在首页、频道页等位置展示全站或某栏目的热门标签,增强内容聚合能力。
实现方法通常是通过SQL查询标签表,并根据使用次数排序:
[e:loop={"select tagname,num from [!db.pre!]enewstags order by num desc limit 10",0,24,0}]
<li><a href="/e/tags/?tagname=<?=urlencode($bqr['tagname'])?>"><?=$bqr['tagname']?>(<?=$bqr['num']?>)</a></li>
[/e:loop]
注意点:
num字段表示该标签被使用的次数,可以作为热度参考。- 展示时建议带上数字,让用户知道哪些是热门标签。
- 不要一次性加载太多标签,容易影响性能和页面整洁度。
3. 相关文章推荐:基于标签的内容关联
如果你希望在文章页底部显示几篇与当前文章相关的文章,可以通过当前文章的标签来匹配其他带有相同标签的文章。
例如:
<?php
if ($navinfor['infotags']) {
$tag_list = explode(',', $navinfor['infotags']);
$tag = $tag_list[0]; // 取第一个标签做关联
$sql = $empire->query("select * from {$dbtbpre}ecms_news where tags like '%".$tag."%' and id<>".$navinfor['id']." order by newstime desc limit 5");
while ($r = $empire->fetch($sql)) {
?>
<li><a href="<?=$r['titleurl']?>" target="_blank"><?=$r['title']?></a></li>
<?php
}
}
?>
说明:
- 这里只取了第一个标签进行匹配,也可以扩展为多个标签交叉匹配。
- 加上
id".$navinfor['id']是为了避免当前文章出现在推荐列表中。 - 推荐数量建议控制在5条以内,视觉效果更好。
4. 自定义样式展示:打造个性化的标签云
有些网站希望把标签展示得更有设计感,比如做成“标签云”,字体大小或颜色代表热度。
虽然帝国本身没有内置标签云功能,但你可以手动实现类似效果:
- 查询出所有标签并按使用次数排序;
- 然后根据不同
num值分配不同的 class 或 style; - 最终输出带样式的
<a></a>标签。
示例思路:
<?php
$sql = $empire->query("select tagname, num from {$dbtbpre}enewstags order by num desc limit 30");
while ($r = $empire->fetch($sql)) {
$size = $r['num'] > 10 ? 'large' : ($r['num'] > 5 ? 'medium' : 'small');
echo "<a href='/e/tags/?tagname=".urlencode($r['tagname'])."' class='tag-$size'>".$r['tagname']."</a>";
}
?>
然后配合 CSS 控制字体大小或颜色即可。
声明:本文来自用户分享和网络收集,仅供学习与参考,测试请备份。






