
在使用帝国CMS时,调用指定TAGS下的文章列表是一个常见的需求,尤其适用于做内容聚合、相关推荐或专题页面。虽然帝国CMS默认没有直接提供按TAG调用文章的功能,但可以通过SQL语句结合灵动标签来实现精准调用。
1. 获取指定TAG ID 或 TAG名称对应的文章
要调用某个TAG下的文章,首先需要知道该TAG的ID或名称。可以通过后台“数据更新”→“管理标签”中查看具体TAG的ID。
假设我们要调用TAG ID为5的文章列表,可以使用以下灵动标签代码:
[e:loop={"SELECT * FROM [!db.pre!]ecms_news WHERE id IN (SELECT id FROM [!db.pre!]enewstagsdata WHERE tagid=5) AND checked=1 ORDER BY newstime DESC LIMIT 10",10,24,0}]<li><a href="https://www.php.cn/link/5596a1c3cefe922da3cfd3244c02133a’titleurl’]?>" target="_blank"><?=$bqr[‘title’]?></a></li>[/e:loop]
说明:
[!db.pre!]ecms_news:根据你的数据表名调整,如是其他模型(如文章、下载),需替换为对应表名。tagid=5:指定TAG的ID。checked=1:确保只调用已审核的文章。newstime DESC:按发布时间倒序排列。LIMIT 10:限制显示10条。
2. 通过TAG名称调用文章列表
如果只知道TAG名称(如“SEO优化”),可以先通过SQL查询出对应的tagid,再进行调用。也可以合并为一条SQL语句:
[e:loop={"SELECT * FROM [!db.pre!]ecms_news WHERE id IN (SELECT td.id FROM [!db.pre!]enewstags t LEFT JOIN [!db.pre!]enewstagsdata td ON t.tagid = td.tagid WHERE t.tagname=’SEO优化’) AND checked=1 ORDER BY newstime DESC LIMIT 10",10,24,0}]<li><a href="https://www.php.cn/link/5596a1c3cefe922da3cfd3244c02133a’titleurl’]?>" target="_blank"><?=$bqr[‘title’]?></a></li>[/e:loop]
说明:
t.tagname=’SEO优化’:按标签名称匹配,注意编码问题,中文建议在程序中处理或确保数据库编码一致。使用LEFT JOIN关联标签表和数据表,确保能正确获取对应文章ID。
3. 前端动态调用(支持参数传入)
如果你希望在不同页面复用,比如通过URL参数传递tagid,可以在PHP代码中动态生成SQL。
示例:在自定义页面或模板中加入PHP代码:
<?php$tagid = (int)$_GET[‘tagid’]; // 获取URL中的tagidif($tagid){ $sql = "SELECT * FROM {$dbtbpre}ecms_news WHERE id IN (SELECT id FROM {$dbtbpre}enewstagsdata WHERE tagid=$tagid) AND checked=1 ORDER BY newstime DESC LIMIT 10"; $news = $empire->query($sql); while($r = $empire->fetch($news)){ $titleurl = sys_ReturnBqTitleLink($r); // 获取标题链接 echo "<li><a href=’$titleurl’ target=’_blank’>{$r[‘title’]}</a></li>"; }}?>
访问时使用:yourpage.php?tagid=5 即可动态显示对应TAG的文章。
基本上就这些方法。关键在于理解帝国CMS的TAG存储结构:标签信息存于enewstags表,文章与标签关系存于enewstagsdata表。只要通过SQL正确关联,就能灵活调用所需内容。不复杂但容易忽略细节,比如表前缀、审核状态和模型类型。

评论(0)