页分页标签如何正确使用?

99ANYc3cd6
预计阅读时长 18 分钟
位置: 首页 DEDE建站 正文

在 DedeCMS 中,内容页(article_article.htm)的分页功能是通过一个核心的底层模板标签 {dede:pagebreak/} 来实现的,这个标签会根据后台设置,自动将长文章分割成多个页面,并生成上一页、下一页、页码等链接。


核心标签:{dede:pagebreak/}

页分页功能的基石,你只需要在你希望分页符出现的位置放置这个标签即可。

工作原理:

  1. 在后台编辑文章时,使用编辑器中的“分页符”按钮(通常是一个“#”图标或“分页”按钮)。
  2. 点击分页符,就相当于在文章内容中插入了 {dede:pagebreak/} 这个标签。
  3. 当文章被保存并生成 HTML 时,DedeCMS 会识别这个标签,将其后的内容分割到新的页面中。
  4. {dede:pagebreak/} 标签本身会被替换为分页导航栏的 HTML 代码。

示例: 假设你的文章很长,编辑时内容如下:

<p>这是文章的第一部分内容...</p>..</p>
<!-- 在这里点击编辑器的“分页符”按钮 -->
<p>这是文章的第二部分内容,和第一部分不在同一个页面上。</p>

保存后,模板文件 article_article.htm 中对应的位置会生成:

<p>这是文章的第一部分内容...</p>..</p>
{dede:pagebreak/}
<p>这是文章的第二部分内容,和第一部分不在同一个页面上。</p>

最终在前端显示时,{dede:pagebreak/} 会变成类似这样的分页导航: [1] [2] 下一页 >>


分页导航的样式控制

默认情况下,{dede:pagebreak/} 生成的分页导航样式比较简单,通常我们需要通过 CSS 来美化它,使其更符合网站的设计风格。

默认 HTML 结构

{dede:pagebreak/} 生成的 HTML 结构通常如下:

<ul class="dede_pages">
    <li><span class="pageinfo">共 <strong>4</strong> 页/<strong>12</strong> 条</span></li>
    <li><a href="article_1.html">上一页</a></li>
    <li><a href="article_1.html">1</a></li>
    <li><span class="thisclass">2</span></li>
    <li><a href="article_3.html">3</a></li>
    <li><a href="article_4.html">4</a></li>
    <li><a href="article_3.html">下一页</a></li>
    <li><a href="article_4.html">末页</a></li>
</ul>

CSS 样式示例

你可以在你的 CSS 文件(如 style.css)中添加以下样式来美化分页导航:

/* 分页导航容器 */
.dede_pages {
    list-style: none;
    padding: 0;
    margin: 20px 0;
    text-align: center;
    font-family: Arial, sans-serif;
}
.dede_pages li {
    display: inline-block;
    margin: 0 5px;
}
/* 链接样式 */
.dede_pages a {
    display: block;
    padding: 6px 12px;
    border: 1px solid #ddd;
    border-radius: 3px;
    color: #333;
    text-decoration: none;
    transition: all 0.3s ease;
}
/* 鼠标悬停效果 */
.dede_pages a:hover {
    background-color: #f8f8f8;
    border-color: #aaa;
}
/* 当前页样式 */
.dede_pages .thisclass {
    display: block;
    padding: 6px 12px;
    border: 1px solid #007bff;
    border-radius: 3px;
    background-color: #007bff;
    color: #fff;
    font-weight: bold;
    cursor: default; /* 当前页不可点击 */
}
/* 禁用链接样式(如第一页时的“上一页”) */
.dede_pages a.disableurl {
    color: #999;
    cursor: not-allowed;
    border-color: #eee;
}

高级应用与自定义

默认的 {dede:pagebreak/} 无法满足更复杂的分页需求,比如自定义“上一页/下一页”的文字、或者需要获取当前页码等信息,这时,我们可以结合 {dede:field} 标签来实现。

获取当前页码

你可以使用 {dede:field.page/} 来获取当前是第几页。

示例: 在文章标题旁显示当前页码

<h1>{dede:field.title/} - 第 {dede:field.page/} 页</h1>

自定义“上一页/下一页”链接

默认的“上一页/下一页”文字是固定的,如果你想自定义它们,可以这样写:

<ul class="dede_pages">
    <!-- 上一页 -->
    <li>
        {dede:prepage runphp='yes'}
            @me = (empty(@me) ? '<a href="javascript:;" class="disableurl">上一页</a>' : '<a href="' . @me . '">上一页</a>');
        {/dede:prepage}
    </li>
    <!-- 页码列表 (这里简化处理,实际中可用循环) -->
    <li><a href="{dede:field name='phpurl'/}/view.php?aid={dede:field.id/}&page=1">1</a></li>
    {dede:page listsize='2' /}
    <li><a href="{dede:field name='phpurl'/}/view.php?aid={dede:field.id/}&page={dede:field.totalpage/}">{dede:field.totalpage/}</a></li>
    <!-- 下一页 -->
    <li>
        {dede:nextpage runphp='yes'}
            @me = (empty(@me) ? '<a href="javascript:;" class="disableurl">下一页</a>' : '<a href="' . @me . '">下一页</a>');
        {/dede:nextpage}
    </li>
</ul>

代码解释:

  • {dede:prepage}:获取上一页的 URL。
  • {dede:nextpage}:获取下一页的 URL。
  • runphp='yes':允许在标签内使用 PHP 代码。
  • @me:这是一个变量,代表标签的原始值(在这里就是 URL)。
  • empty(@me):判断上一页/下一页的 URL 是否为空,如果为空(比如在第一页时没有上一页),则显示一个禁用状态的链接;否则,显示一个正常的链接。

后台设置

在后台进行一些相关设置,可以更好地控制分页功能。

  1. 进入后台系统 -> 系统基本参数 -> 核心设置
  2. 列表每页条数:这个设置通常用于列表页,但也会影响内容页分页逻辑的计算基础。
  3. 分页选项
    • 在后台编辑文章时,编辑器工具栏上通常有“分页”按钮。
    • 有些版本或插件可能提供更详细的分页设置,比如是否启用、默认分割方式等。

功能/需求 核心标签/方法 说明
基本分页 {dede:pagebreak/} 编辑器中使用分页符插入,或在模板文件中直接放置。
样式美化 CSS 选择器 通过 .dede_pages, .thisclass, a 等类名编写 CSS 进行样式控制。
获取当前页码 {dede:field.page/} 在模板中调用,用于显示或判断当前是第几页。
自定义导航 {dede:prepage}{dede:nextpage} 结合 runphp='yes' 实现对“上一页/下一页”链接的完全自定义。
页码列表 {dede:page listsize='2' /} 生成中间的页码列表,listsize 控制显示的页码数量。

对于绝大多数 DedeCMS 网站,直接使用 {dede:pagebreak/} 并配合 CSS 样式调整就足够了,只有在需要非常特殊和定制化的分页效果时,才需要用到 {dede:prepage}{dede:nextpage} 等高级方法。

-- 展开阅读全文 --
头像
dede 后台登陆不了
« 上一篇 03-28
c语言swap是什么意思
下一篇 » 03-28

相关文章

取消
微信二维码
支付宝二维码

目录[+]