织梦内容页调用上一篇下一篇

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.phpGetPreNext 方法的 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.phpGetPreNext 末尾:

$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 增长。