分页代码如何正确调用与修改?

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

DedeCMS 的内容分页功能是通过模板标签和系统函数协同工作的,核心在于两个部分:

dede内容分页代码
(图片来源网络,侵删)
  1. 模板标签页模板(article_article.htm)中,你需要使用 {dede:pagebreak/} 标签来生成分页链接。
  2. 后台设置:需要在后台开启并配置分页相关的选项。

下面是详细的步骤和代码示例。


第一步:后台设置(至关重要)

在修改模板之前,请务必确保后台的分页功能已经正确开启。

  1. 登录 DedeCMS 后台

  2. 进入 系统 -> 系统基本参数 -> 核心设置

    dede内容分页代码
    (图片来源网络,侵删)
  3. 找到以下几项并进行设置:

    • 是否启用内容分页
      • 选择 “是”,这是启用分页功能的前提。
    • 内容分页符号
      • 这是分页符,默认是 <hr style="page-break-interlude: always;" class="pagebreak">编辑器中点击“分页”按钮时,插入的就是这个符号。
      • 你也可以自定义,[page_break] 或其他,但需要确保与模板中的处理方式一致,通常保持默认即可。
    • 列表每页显示条数(分页)

      这个设置通常用于列表页,但对内容页的分页逻辑也有影响,保持默认值 20 或其他合理数值即可。

    • 自动提取分页标记
      • 选择 “是”,这样系统会自动识别内容中的分页符,并据此进行分页。
  4. 保存设置


第二步:修改内容页模板 (article_article.htm)

这是实现分页显示的核心步骤,你需要找到你的内容页模板文件,它通常位于 /templets/default/ 目录下,文件名为 article_article.htm

在模板中,找到文章正文内容的位置,也就是 {dede:field.body/}

最简单直接的分页(推荐)

这是最常用、最简单的方法,它会在文章正文的分页符处自动断开,并生成上一页/下一页的导航。

  1. 找到 {dede:field.body/}。
  2. {dede:pagebreak/} 标签将其包裹起来

修改前(大概样子):

<div class="article-content">
    {dede:field.body/}
</div>

修改后(代码):

<div class="article-content">
    {dede:pagebreak/}
</div>

工作原理: {dede:pagebreak/} 这个标签会做两件事:

  • :它会自动查找 field.body 中的分页符(<hr class="pagebreak">),并将内容按照分页符切割成多个部分。
  • 生成分页导航:它会根据切割后的内容份数,在文章末尾(或指定位置)生成上一页、页码、下一页的分页导航链接。

生成的分页导航 HTML 结构大概是这样的:

<ul class="dede_pages">
    <li><span class="pageinfo">共 <strong>3</strong>页/<strong>10</strong>条</span></li>
    <li><a href="/article/1.html">上一页</a></li>
    <li><a href="/article/1.html">1</a></li>
    <li class="thisclass"><a href="/article/2.html">2</a></li>
    <li><a href="/article/3.html">3</a></li>
    <li><a href="/article/3.html">下一页</a></li>
</ul>

你可以通过 CSS 来美化这个 .dede_pages 列表。


更灵活的自定义分页(高级)

如果你对分页的样式和位置有更高的要求,不想使用 {dede:pagebreak/} 自动生成的导航,可以采用更灵活的方式。

  1. 正文部分:同样使用 {dede:pagebreak/} 来处理正文内容的分页。

    <div class="article-content">
        {dede:pagebreak/}
    </div>
  2. 自定义分页导航:在模板的任意位置(比如文章内容下方),手动编写分页导航的 HTML 结构,并使用 DedeCMS 的变量来填充链接和文本。

    <!-- 自定义分页导航 -->
    <div class="my-custom-pagination">
        <!-- 上一页 -->
        {dede:prenext get='pre'/}
        <!-- 中间页码 -->
        <ul class="page-numbers">
            {dede:pagelist listsize='4' listitem='index,end,pre,next,pageno'}
            {/dede:pagelist}
        </ul>
        <!-- 下一页 -->
        {dede:prenext get='next'/}
    </div>

标签解释:

  • {dede:prenext get='pre'}:获取上一页的链接和标题。get='next' 是获取下一页。
  • {dede:pagelist/}:专门用于生成分页列表的标签。
    • listsize='4':显示当前页码前后的页码数量,例如当前是第3页,可能会显示 1, 2, [3], 4, 5
    • listitem='...':控制分页导航显示哪些元素。
      • index:首页
      • pre:上一页
      • next:下一页
      • pageno:页码
      • end:尾页
      • option:下拉跳转框
      • info:分页信息(如“共X页”)

示例:listitem='index,pre,next,end,pageno' 会生成类似这样的导航: 首页 上一页 1 2 3 4 5 ... 下一页 尾页


第三步:内容编辑器中插入分页符

完成模板修改后,你在后台发布或编辑文章时,需要手动插入分页符。

  1. 在 DedeCMS 的内容编辑器(通常是ckeditor或kindeditor)中,将光标定位到需要分页的位置。
  2. 点击编辑器工具栏上的 “分页” 按钮(图标通常像一张撕破的纸)。
  3. 编辑器会自动插入一个分页标记(<hr style="page-break-interlude: always;" class="pagebreak">)。
  4. 重复此操作,为文章创建多个分页。

重要提示:分页符是区分内容页的关键,没有分页符,{dede:pagebreak/} 就不会生效,整个文章只会显示在第一页。


常见问题与解决方案

  1. 问题:为什么我设置了 {dede:pagebreak/},文章还是只有一页?

    • 原因:最常见的原因是文章内容里没有插入分页符,请回到后台编辑文章,确保在内容中使用了编辑器的“分页”按钮。
    • 原因:后台的 “是否启用内容分页” 设置为了“否”。
  2. 问题:分页导航样式很难看,如何自定义?

    • 解决方案:方案一中的分页导航会生成一个带有 class="dede_pages"<ul> 列表,你可以在你的 CSS 文件中为这个类编写样式。

      /* 隐藏默认的列表样式 */
      .dede_pages {
          list-style: none;
          padding: 0;
          margin: 20px 0;
          display: flex;
          justify-content: center;
          gap: 5px;
      }
      .dede_pages a {
          display: inline-block;
          padding: 5px 10px;
          border: 1px solid #ddd;
          text-decoration: none;
          color: #333;
      }
      .dede_pages a:hover,
      .dede_pages .thisclass a {
          background-color: #007bff;
          color: #fff;
          border-color: #007bff;
      }
    • 对于方案二,你可以完全控制 HTML 结构,然后编写对应的 CSS,自由度更高。

  3. 问题:我想让首页、列表页的摘要只显示第一页内容,怎么办?

    • 解决方案:在首页和列表页模板中,调用文章摘要时,使用 mb_substr 等函数截取内容,并确保截取长度在第一页的范围内,或者,更规范的做法是,在发布文章时,手动将第一页的内容复制到“字段中。
步骤 操作 核心代码/标签
后台配置 分页功能 系统 -> 系统基本参数 -> 核心设置 -> 是否启用内容分页 = 是
模板修改 页模板中使用分页标签 {dede:pagebreak/} (包裹 {dede:field.body/})
内容编辑 在文章中插入分页符 使用编辑器工具栏的 “分页” 按钮

对于绝大多数用户来说,方案一已经足够满足需求,简单、高效,只有当你对分页的呈现方式有特殊要求时,才需要考虑方案二

-- 展开阅读全文 --
头像
织梦后台收录效果如何?
« 上一篇 04-23
织梦文章编辑框模板如何自定义样式?
下一篇 » 04-23

相关文章

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