一、适用场景与前置准备
1. 适用场景
适用于帝国CMS v7.5、v7.2、v7.0全栏目、专题内容页的上下篇相邻文章跳转,不依赖特殊分类/专题模型即可直接调用。
2. 前置准备
- 已登录帝国CMS后台管理界面
- 确认使用的是非自定义模型以外的系统默认模型(自定义模型需额外关联同模型字段)
二、内容页上下篇默认基础调用
进入帝国CMS后台→点击左侧「模板」→「公共模板变量」→「管理模板变量」,找到或新建「[!--temp.上下篇--]」变量(推荐新建避免覆盖),按以下步骤操作:
1. 插入默认上下篇代码(纯文字版)
复制以下完整代码,粘贴到新建/编辑后的变量内容框,无需修改字段名即可使用:
```html
```
2. 替换缺失状态文本(可选但必做优化!
新手容易遇到“没有文章显示标题的情况”,这时候需要加上上下篇缺失的默认文本,比如:
```html
[!--empirenews.pre--]
- 上一篇:[!--pre.title--]
[!--empirenews.next--]
- 上一篇:没有了
[!--empirenews.end--]
[!--empirenews.pre--]
- 下一篇:[!--next.title--]
[!--empirenews.next--]
- 下一篇:没有了
[!--empirenews.end--]
```
注意:以上是分开处理上下篇缺失文本的写法,如果要合并(比如放在同一个ul里更合理),看下方优化写法:
```html
[!--empirenews.pre--]
- 上一篇:
[!--if--]
[!--pre.title--]
[!--else--]
没有了
[!--endif--]
[!--empirenews.next--]
- 下一篇:
[!--if--]
[!--next.title--]
[!--else--]
没有了
[!--endif--]
[!--empirenews.end--]
```
3. 基础代码核心标签说明
- [!--empirenews.pre--]~[!--empirenews.next--]:标识上一篇的判断标签段
- [!--empirenews.next--]~[!--empirenews.end--]:标识下一篇的判断标签段
- [!--pre.url--]/[!--next.url--]:上下篇文章链接地址标签
- [!--pre.title--]/[!--next.title--]:上下篇文章标题标签
- [!--if--]~[!--else--]~[!--endif--]:帝国CMS内置的三元判断简化标签
三、内容页同栏目/同专题上下篇调用(精准场景适配)
默认调用是同模型同栏目调用吗?不!帝国CMS v7.5默认模型下,默认是全站同模型相邻发布时间排序调用,很多新手需要的是同当前栏目/同当前专题调用,这里分别给出代码:
1. 同当前栏目(含子栏目可选)上下篇调用

需要使用灵动标签[e:loop]结合内置SQL查询,覆盖之前的默认基础标签代码,替换整个next_prev div里的内容:
```html
-
上一篇:
[e:loop={'selfinfo',1,0,0,'id<'.$navinfor[id].'','id desc'}]
=esub($bqr[title],30)?>
[/e:loop]
[e:loop={'selfinfo',1,0,0,'id<'.$navinfor[id].'','id desc'}]
fetch1("select id,classid,title,titleurl from {$dbtbpre}ecms_".$navinfor[tbname] where classid='".$navinfor[classid]."' and id<".$navinfor[id]." order by id desc limit 1");
if(empty($pr_sql[titleurl])){
echo "没有了";
}
?>
-
下一篇:
[e:loop={'selfinfo',1,0,0,'id>'.$navinfor[id].'','id asc'}]
=esub($bqr[title],30)?>
[/e:loop]
fetch1("select id,classid,title,titleurl from {$dbtbpre}ecms_".$navinfor[tbname] where classid='".$navinfor[classid]."' and id>".$navinfor[id]." order by id asc limit 1");
if(empty($ne_sql[titleurl])){
echo "没有了";
}
?>
```
必改项说明:
- id<'.$navinfor[id].' / id>'.$navinfor[id].':当前文章ID对比,实现相邻
- classid='".$navinfor[classid]."':强制当前栏目限制,如果要含子栏目,把classid改成bclassid
- order by id desc/asc:排序方式,默认用发布时间的话,改成newstime desc/asc
- esub($bqr[title],30):截取标题30个字符(汉字15个左右),防止溢出,不需要截取去掉esub
2. 同当前专题上下篇调用
专题页面的内容页模板单独设置在专题内容页模板里,这里给出完整同专题SQL版:
```html
-
上一篇:
fetch1("select ztid,id,classid,title,titleurl from {$dbtbpre}ecms_zt_data where ztid='".$ztid."' and id<".$navinfor[id]." order by id desc limit 1");
if($pr_zt_sql[titleurl]){
echo ''.esub($pr_zt_sql[title],30).'';
}else{
echo "没有了";
}
?>
-
下一篇:
fetch1("select ztid,id,classid,title,titleurl from {$dbtbpre}ecms_zt_data where ztid='".$ztid."' and id>".$navinfor[id]." order by id asc limit 1");
if($ne_zt_sql[titleurl]){
echo ''.esub($ne_zt_sql[title],30).'';
}else{
echo "没有了";
}
?>
```
四、模板替换与生效检测
1. 模板替换
找到你的所有需要加进去内容页模板:
- 后台→模板→管理模板→内容页模板→找到对应内容页模板(比如新闻内容页)→点击「修改」
- 在需要显示上下篇的位置(比如正文下方、评论上方)插入公共模板变量标签[!--temp.上下篇--]
- 点击「提交」
2. 数据生效检测
必须做这两步,新手90%的“没生效是这里没做:
- 后台→数据更新→刷新所有信息页
- 后台→数据更新→刷新所有缓存
刷新后前台随便找一篇文章打开,检查上下篇是否显示、跳转是否正常,缺失状态文本是否显示。