当前位置:网站首页 >  攻略

帝国CMS标签排除已调用内容设置 实操避坑完整攻略

时间:2026年06月01日 00:44:14 来源:易频IT社区

先唠明白:这功能到底是干啥用的?我为啥踩了大坑

家人们我真的哭死,上个月接了个企业站的优化单,首页做了精选推荐、热门排行、最新更新三个板块,结果上线第一天就被甲方爸爸追着骂:你这网站是只有3篇内容吗?三个板块撞了两篇就算了,翻来覆去给用户看同样的东西,留客率能高才怪!

我吭哧吭哧搞了三天才把帝国CMS标签排除已调用内容设置玩明白,说穿了这玩意儿就是你网站的“打饭监督员”——你想啊,你开个食堂,窗口1卖硬菜推荐,窗口2卖热门小炒,窗口3卖当日新菜,总不能把同一盘土豆炖牛肉同时往三个窗口摆吧?来吃饭的人看见直接就走了,网站用户也是同理,翻三屏都是看过的内容,直接秒退。帝国CMS标签排除已调用内容设置就是帮你记清楚哪些内容已经“端出去过”,后面的调用自动绕开,完美解决重复问题。

踩坑预警:这几个雷我已经替你们踩过了,别再跳

一开始我以为帝国CMS标签排除已调用内容设置就是加个notid参数那么简单,结果踩了N多坑,头发掉了十几根,先给你们把最常见的坑列出来:

  • 第一个坑:上来就加notid,根本没存已调用ID。就像你打饭不记已经卖了啥菜,光嘴上说“不要重复”,打菜阿姨哪知道啥不能打?帝国CMS默认不会自动存已经调用过的内容ID,你不自己建个“账本”,加一百遍notid也白搭。
  • 第二个坑:改完代码不生成静态页,以为自己写错了。我当时改完代码刷新了八遍首页还是有重复,差点把源码删了,后来才想起帝国CMS静态页要重新生成才会生效,白忙活了俩小时。
  • 第三个坑:跨模型调用不分ID池,排除规则直接失效。比如你同时调用新闻模型和图片模型的内容,两个模型的ID是独立的,你把新闻的ID往图片模型的排除规则里塞,就像你记了中餐的菜名跑去西餐窗口排除,肯定没用啊。

实操干货:帝国CMS标签排除已调用内容设置完整步骤,抄作业就行

第一步:先给已调用的内容ID整个专属“小黑本”

所有操作的前提就是先建个空数组当“账本”,把每次调用过的内容ID都记在里面,这个数组一定要写在所有调用标签的最前面,不然后面的标签读不到数据。我把我一直在用的代码直接放出来,复制就能用:

``` // 定义空数组存储已调用的内容ID,放在页面最顶部 $already_call = array(); // 第一个调用板块,比如首页精选推荐 [e:loop={'news',10,18,0,'isgood=1','id desc'}]
  • [/e:loop] ```

    这里要注意,数组名你随便改,只要后面调用的时候对应上就行,我习惯用$already_call,好记。

    第二步:给后续标签加排除规则,重复内容自动绕路

    有了“小黑本”之后,后面的调用只要把数组里的ID拼成字符串,加到notid的参数里就行,直接抄下面的代码:

    ``` // 把数组里的ID拼成逗号分隔的字符串,方便帝国CMS识别 $not_id = implode(',', $already_call); // 第二个调用板块,比如热门排行,排除已经调用过的ID [e:loop={'news',10,18,0,"id not in ($not_id) and isgood=0",'onclick desc'}]
  • [/e:loop] ```

    帝国CMS标签排除已调用内容设置 实操避坑完整攻略

    这里有个必考点:每次调用完一定要把当前板块的ID也加到数组里!我当初就是漏了这一步,第二个板块和第三个板块还是撞了两篇内容,搞了半天才发现问题,你们可千万别犯这个低级错误。

    如果有第三个、第四个板块,重复上面的步骤就行,每次调用前先把已经存的ID拼到notid里,调用完再把新的ID加进去,保证所有板块的内容100%不重复。

    进阶玩法:跨模型调用怎么搞排除?

    很多人做站会同时调用多个模型的内容,比如首页既有新闻又有图片还有视频,这时候帝国CMS标签排除已调用内容设置要稍微改一下,给每个模型单独建“小黑本”就行,举个例子:

    ``` // 分别建两个数组存不同模型的ID $news_call = array(); $photo_call = array(); // 先调用新闻模型 [e:loop={'news',5,18,0}]
  • 新闻内容:
  • [/e:loop] // 再调用图片模型,排除图片模型已经调用过的ID [e:loop={'photo',5,18,0,"id not in (".implode(',',$photo_call).")"}]
  • 图片内容:
  • [/e:loop] ```

    这样就算两个模型有相同的ID也不会冲突,完美解决跨模型重复的问题。

    验证兜底:改完这几步,保证设置100%生效

    改完代码先别急着生成静态页,先开动态预览页测一遍,就是后台预览的那个动态地址,要是动态页已经没有重复内容了,再生成全站静态页。要是还有重复,就对着这三点排查:

    • 1. 存ID的数组是不是写在所有调用标签的最前面?有没有拼写错误?
    • 2. 每次调用完有没有把当前ID加到数组里?
    • 3. notid的参数有没有加对?引号是不是闭合了?sql语句有没有写错?

    要是你做的是列表页分页的帝国CMS标签排除已调用内容设置,记得把数组存在session里,不然第二页还会重复调用第一页的内容,这个小细节90%的教程都没提,我当初做列表页的时候踩了老大的坑,给你们顺便提一嘴。

    说真的,帝国CMS标签排除已调用内容设置看起来是个小功能,但是做好了用户体验直接上一个台阶,我上次改完那个企业站,用户平均停留时长直接涨了23%,甲方爸爸现在有项目都优先找我,香得很。做网站就像种庄稼,你多抠点细节,收成肯定不会差,大家有啥设置上的问题可以评论区留个言,我看到了就给你解答,都是过来人,能帮一把是一把,大家一起搞钱才是硬道理!

    相关推荐

    最新

    热门

    推荐

    精选

    标签

    易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

    Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图