您当前的位置:首页 > 科技

帝国cms相关文章用灵动标签调用问题

作者:WHY80   发布时间:2026-03-18 来源:JIEDUBLOG

帝国CMS本来是有[!--other.link--]这个相关文章标签,简单直接可调取相关文章数据。但是这个模板不灵活,至少没灵动标签好使。到目前为止的版本,应该是不支持简介字段[--smalltext--]的,系统自带的模板是:[!--empirenews.listtemp--]<li><a href="[!--titleurl--]" title="[!--oldtitle--]">[!--title--]</a></li>[!--empirenews.listtemp--]
 BBS里面有人介绍了这个
[e:loop={"select *  from [!db.pre!]ecms_news where id in ($navinfor[keyid]) order by newstime desc limit 5",0,24,0}]    模板内容 [/e:loop]   
它是能用,但是会在数据调取不到显示 代码错误——【类似的错误提示: SQL Error: select * from ***_ecms_news where id in () and !='' order by newstime desc limit 5】。对搜索引擎和读者都不友好。

 有解决办法:
目前测试可行的是:
 先通过帝国 CMS 模板的原生变量判断,为空时直接不执行[e:loop]标签,从根源避免空 ID 导致的 SQL 报错,且无任何冗余代码输出。
完整最终代码(无 SQL 报错 + SEO 友好)
 <?php // 先判断$navinfor[keyid]是否非空且为有效ID列表 if(!empty($navinfor[keyid]) && preg_match('/^\d+(,\d+)*$/', $navinfor[keyid])){ ?> [e:loop={"select * from [!db.pre!]ecms_news where id in ($navinfor[keyid]) order by newstime desc limit 5",0,24,0}] <li class="related-item"> <a href="<?=$bqr['titleurl']?>"> <div class="related-item-content"> <div class="related-item-number"> <?=$bqr['no.num']?></div> <div class="related-item-text"> <h4 class="related-item-title"><?=$bqr['title']?></h4> <div class="related-item-meta"> <span><i class="far fa-calendar"></i> <?=date('Y-m-d',$bqr['newstime'])?></span> <span><i class="far fa-eye"></i> <?=$bqr['onclick']?>阅读</span> </div> </div> <div class="related-item-arrow"> <i class="fas fa-chevron-right"></i> </div> </div> </a> </li> [/e:loop] <?php } ?>
 【如果受排版影响,上面的代码不可直接用,下面下载文件后再复制。】
otherlink.txt
e03c996173927e063535164818c6bcc2.txt (1.30 KB)

关键修改(2 层防护)
第一层:PHP 前置判断(核心):
if(!empty($navinfor[keyid]) && preg_match('/^\d+(,\d+)*$/', $navinfor[keyid])){ ... }
(1) !empty($navinfor[keyid]):判断 ID 列表非空;
(2) preg_match('/^\d+(,\d+)*$/', $navinfor[keyid]):验证 ID 列表是 “数字 + 逗号” 的合法格式(如1909,1847),避免非法字符;
 只有满足以上两个条件,才会执行[e:loop]标签,彻底杜绝id in ()的情况。
第二层:SQL 纯净无冗余
移除 SQL 内的所有多余条件,仅保留核心查询:select * from [!db.pre!]ecms_news where id in ($navinfor[keyid]) order by newstime desc limit 5,语法绝对合法。

关键优势(兼顾所有需求)
彻底解决 SQL 报错:前置拦截空 ID / 非法 ID,避免id in ()的语法错误;
SEO 绝对友好:无数据时无任何代码输出,无 CSS 隐藏、无空标签、无 JS 依赖;
兼容所有场景:
合法 ID 列表:正常输出内容;
空 ID / 非法 ID:无任何输出,无报错;
无浏览器兼容问题:无需 CSS/JS,纯服务端逻辑,适配所有浏览器。
验证方法(确保生效)看演示:https://www.wsyj.com/gouwu/youhui/1086.html 以及里面其它页内容。
上一篇:利用AI自己研究可用的帝国cms列表调用缩略图  下一篇:返回列表
您可能感兴趣:

利用AI自己研究可用的帝国cms列表调用缩略

首先要在帝国cms后台开启 后台模板支持程序代码, 然后在 管理列表模板中 列表内容模板(list.var) (*) if($r[titlepic]){ <!-- 更严谨的写法(推荐),CMS中同样能正常运行

底层互害中层攀比上层互助相关话题

近年来有一句话传开了:上层社会人捧人,中层社会人比人,下层社会人踩人,似乎有点道理。 上层人捧人是为了发展,下层人踩人是为了生存;上层充满着虚伪,下层满满的负能量

热门图文

鼠标移到左侧不影响阅读

同栏阅读

官方推荐

Copyright © 官方备用网址.80后生活玩乐平台(80后官网登录入口2026-2027) All rights reserved.