基础用法(最常用)
这是最直接、最常用的方法,直接在需要显示链接的地方插入以下代码:

(图片来源网络,侵删)
{dede:prenext get='pre'/}
{dede:prenext get='next'/}
{dede:prenext get='pre'}:用于显示上一篇文章的链接。{dede:prenext get='next'}:用于显示下一篇文章的链接。
示例:
在文章详情页模板 article_article.htm 中,你通常会在文章内容的下方,评论区的上方添加这两个标签,一个常见的布局如下:
<div class="article-content">
{dede:field.body/}
</div>
<div class="prenext">
<div class="pre">
{dede:prenext get='pre'/}
</div>
<div class="next">
{dede:prenext get='next'/}
</div>
</div>
<div class="pl">
<!-- 评论区域代码 -->
</div>
默认效果:
默认情况下,{dede:prenext} 标签会输出类似这样的HTML结构:
上一篇:<a href="/article/123.html">上一篇文章的标题</a>
下一篇:<a href="/article/125.html">下一篇文章的标题</a>
自定义样式和文本
默认的样式可能不符合你的网站设计,你可以通过修改标签的属性来自定义链接的文本和样式。

(图片来源网络,侵删)
常用属性: len`:链接标题的长度(字符数)。
infolen:链接简介的长度(字符数)。text:自定义链接前显示的文本。
示例:
<!-- 自定义上一篇链接 -->
{dede:prenext get='pre' titlelen='30' text='上一篇:'/}
<!-- 自定义下一篇链接 -->
{dede:prenext get='next' titlelen='30' text='下一篇:'/}
更灵活的自定义(推荐):
如果你想要完全控制HTML结构和样式,不使用默认的输出,可以使用 field 标签结合 arcID 来获取上一篇和下一篇的标题和链接,然后自己编写HTML。
<div class="prenext">
<!-- 上一篇 -->
<div class="pre">
{dede:prenext get='pre' function='str_replace("上一篇:", "", @me)'/}
</div>
<!-- 下一篇 -->
<div class="next">
{dede:prenext get='next' function='str_replace("下一篇:", "", @me)'/}
</div>
</div>
上面的代码通过 function 属性使用 str_replace 函数去掉了默认的 "上一篇:" 和 "下一篇:" 文本,然后你可以在CSS中为 .pre 和 .next 类设计样式。
高级用法(获取更多信息)
有时候你可能不仅需要标题和链接,还需要获取上一篇/下一篇文章的发布时间、简介等信息,这时,你可以使用 {dede:pre next} 循环标签。
语法:
{dede:pre next='是,否,标题,时间'}
<a href='[field:arcurl/]'>[field:title/]</a>
<span class="time">[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
<p class="intro">[field:description function="cn_substr(@me, 100)"/]...</p>
{/dede:pre next}
是,否,标题,时间:这部分是参数,用来控制显示哪些信息。是:显示链接([field:arcurl/])。否:不显示链接(这里通常用占位符)。- 显示文章标题(
[field:title/])。 时间:显示发布时间([field:pubdate/])。
示例:
<div class="article-nav">
<div class="nav-prev">
<h4>上一篇</h4>
{dede:pre next='是,否,标题,时间'}
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"]</span>
{/dede:pre next}
</div>
<div class="nav-next">
<h4>下一篇</h4>
{dede:pre next='是,否,标题,时间'}
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"]</span>
{/dede:pre next}
</div>
</div>
常见问题与解决方案
问题:没有上一篇或下一篇时,显示特定文本(如“没有了”)
默认情况下,当没有上一篇或下一篇时,{dede:prenext} 标签会不显示任何内容,如果你想自定义这个提示,可以使用 if 条件判断。
方法:使用 {dede:field} 标签判断
<div class="prenext">
<!-- 上一篇 -->
<div class="pre">
{dede:field name='pretitle'/}
{dede:if '<a href=' is stripos(@me)}
{dede:field name='pre'/}
{else/}
没有了
{/dede:if}
</div>
<!-- 下一篇 -->
<div class="next">
{dede:field name='nexttitle'/}
{dede:if '<a href=' is stripos(@me)}
{dede:field name='next'/}
{else/}
没有了
{/dede:if}
</div>
</div>
{dede:field name='pretitle'}:获取上一篇标题(如果有,是带链接的;如果没有,是空字符串)。{dede:if '<a href=' is stripos(@me)}:判断@me(即上一篇标题的值)中是否包含<a href=,如果包含,说明存在链接,则显示{dede:field name='pre'};否则,显示“没有了”。
问题:上一篇/下一篇链接指向错误或无效
这通常由以下原因造成:
- 文章未审核或未生成HTML:确保文章状态为“审核通过”,并且已经通过“更新HTML”或“一键生成”生成了静态页面。
- 栏目设置了“仅动态浏览”:如果该栏目被设置为“仅动态浏览”,那么上一篇/下一篇链接可能会失效,请检查栏目的“高级选项”。
- 自定义了文章URL规则:如果你修改了文章的URL规则,请确保系统已经重新生成了所有相关页面的链接。
- 模板标签错误:检查模板中是否有拼写错误。
| 需求 | 推荐代码 | 说明 |
|---|---|---|
| 最简单用法 | {dede:prenext get='pre'}{dede:prenext get='next'} |
直接调用,输出带默认文本的链接。 |
| 自定义文本 | {dede:prenext get='pre' text='上一篇:'} |
修改链接前显示的文字。 |
| 获取更多信息 | {dede:pre next='是,否,标题,时间'}...{/dede:pre next} |
灵活获取标题、时间、链接等信息,自定义HTML结构。 |
| 处理“没有”的情况 | 结合 {dede:if} 和 {dede:field name='pretitle'} 判断。 |
在没有上一篇/下一篇时显示自定义提示。 |
对于绝大多数网站,使用第一种基础用法就足够了,如果需要更精细的控制,可以尝试第三种高级用法,希望这份详细的指南能帮到你!
