织梦内容页调用上一篇下一篇
prenext
内链
用户体验
为什么要做上一篇下一篇
内容页底部提供「上一篇 / 下一篇」入口,能让用户顺藤摸瓜地浏览更多文章,延长停留时长,降低跳出率;同时为搜索引擎爬虫提供了清晰的内链通路,是 SEO 的基础优化项之一。
最简写法
织梦内容页 article_article.htm 中使用 {dede:prenext} 标签:
{dede:prenext get='pre'/}
{dede:prenext get='next'/}
渲染出来默认形如:上一篇:xxx、下一篇:xxx,自带超链接。
组合写法(推荐)
一次性调用上下篇,用 get='pre,next':
<div class="prenext">
{dede:prenext get='pre,next'/}
</div>
带样式的写法
<nav class="post-nav">
<div class="prev">
<span>上一篇</span>
{dede:prenext get='pre'/}
</div>
<div class="next">
<span>下一篇</span>
{dede:prenext get='next'/}
</div>
</nav>
样式可参考本文底部演示:
过滤同栏目内的上下篇
默认 prenext 是在「当前栏目」内取,已经够用。如果想跨栏目取下一篇,需要修改 include/arc.archives.class.php 中 GetPreNext 方法的 SQL:
// 把 AND ar.typeid='@me' 去掉即可跨栏目
$next="SELECT arc.* FROM `dede_archives` arc
WHERE arc.id > {$this->Fields['id']}
ORDER BY arc.id ASC LIMIT 1";
注意:修改核心文件升级时会被覆盖,建议封装到
extend.func.php 中作为独立函数,或用 git 管理方便合并。
第一篇/最后一篇的处理
当当前是第一篇文章时,get='pre' 返回「没有了」;同理最后一篇 get='next' 返回「没有了」。可用 CSS 把「没有了」置灰:
.post-nav a:only-child,
.post-nav a[href="javascript:;"]{
color:#aaa;pointer-events:none;
}
自定义上下篇文案
如果想把「上一篇 / 下一篇」改成英文或图标,需要修改 include/arc.archives.class.php 的 GetPreNext 末尾:
$this->PreNext['pre']="PREV: <a href='{$mlink}'>{$preRow['title']}</a>";
$this->PreNext['next']="NEXT: <a href='{$mlink}'>{$nextRow['title']}</a>";
把上下篇做成卡片
配合 CSS Grid 可以做成带缩略图的卡片,提升点击率:
.post-nav{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.post-nav .item{
display:flex;gap:10px;padding:12px;border:1px solid #eee;border-radius:8px;
}
.post-nav .item img{width:80px;height:60px;object-fit:cover;border-radius:6px}
但要注意 prenext 默认不返回缩略图字段,需要二次开发 SQL 增加 litpic。
行动建议
立刻打开你的内容页模板,确认底部是否有上下篇入口;如果没有,加上一行 {dede:prenext get='pre,next'/} 就能立刻见效。如果你已经在做移动端适配,记得把两个按钮在窄屏下改成竖排,避免出现半个字被截断的情况。把这种小细节做到位,读者的「顺手点一下」就会变成可观的 PV 增长。