dede channel分页怎么实现?

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

在 DedeCMS 中,栏目分页主要分为两种情况:

  1. 列表分页:这是最常见的情况,即一个栏目下的文章列表超过指定数量时,自动分成多页。
  2. 栏目自身分页:当栏目本身的内容(比如通过“栏目内容模型”编辑的描述)很长时,也需要分页显示。

下面我们分别详细说明这两种情况的实现方法。


列表分页

这是绝大多数用户需要的功能,当你在后台设置好栏目的“列表选项”后,DedeCMS 会自动为你生成分页链接,你只需要在模板文件中调用相应的标签即可。

后台设置

这是分页功能生效的前提,请确保你的栏目设置正确:

  1. 登录 DedeCMS 后台。
  2. 进入「核心」 -> 「频道管理」 -> 「栏目管理」。
  3. 找到你需要设置分页的栏目,点击后面的「修改」。
  4. 在栏目编辑页面,切换到「高级选项」或「列表选项」选项卡。
  5. 找到以下关键设置并填写:
    • 列表命名规则:这里可以定义生成列表页的文件名,list_{page}.html{page} 是分页的关键占位符,如果你希望静态化分页,这里一定要有它,如果设置为 list.html,则分页将是动态的(如 list.php?tid=1&PageNo=2)。
    • 列表每页显示数:这是最重要的设置,决定了每一页显示多少篇文章,设置为 10,那么每页就显示 10 篇文章。
    • 是否启用目录默认页:通常建议开启,这样列表页的首页会是 index.html,更美观。

模板文件调用

设置好后台后,你需要在你栏目的列表模板文件(通常是 list_article.htm 或你自定义的模板)中添加两个分页标签:

  • {pagelist}:用于显示分页的导航链接(如:首页 1 2 3 下一页 末页)。
  • {pagecount}:用于显示总页数。

示例模板代码 (list_article.htm):

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
</head>
<body>
    <h1>{dede:field.title/}</h1>
    <p>{dede:field.description/}</p>
    <hr>
    <!-- 文章列表开始 -->
    <ul>
        {dede:list pagesize='10'}
        <li>
            <a href="[field:arcurl/]">[field:title/]</a>
            <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
        </li>
        {/dede:list}
    </ul>
    <!-- 文章列表结束 -->
    <hr>
    <!-- 分页导航开始 -->
    <div class="dede_pages">
        <ul class="pagelist">
            <li><span class="pageinfo">共 <strong>{pagecount}</strong> 页 / <strong>{recordcount}</strong> 条记录</span></li>
            {dede:pagelist listsize='5' listitem='index,pre,pageno,next,end,option'}
            </ul>
    </div>
    <!-- 分页导航结束 -->
</body>
</html>

标签解析:

  • {dede:list}:这个标签本身就是循环输出文章列表的,它的 pagesize 属性可以覆盖后台的“列表每页显示数”设置,这里我们写 pagesize='10' 表示每页显示 10 篇。
  • {pagecount}:输出该栏目的总页数。
  • {dede:pagelist}:生成分页链接。
    • listsize='5':表示当前页码前后显示的页码数量,当前是第 3 页,listsize='2',就会显示 1 2 [3] 4 5
    • listitem='...':用于控制分页导航栏显示哪些元素。
      • index:首页
      • pre:上一页
      • pageno:页码
      • next:下一页
      • end:末页
      • option:跳转下拉框(选择页码直接跳转)
      • info:显示总页数/总记录数(与 {pagecount}{recordcount} 类似)

生成与访问

  1. 更新栏目:在后台「栏目管理」中,对你修改过的栏目点击「更新」。
  2. 更新HTML:在「生成」菜单中,选择「更新栏目HTML」或「更新所有HTML」,系统会根据你的列表命名规则生成所有的列表页(如 list_1.html, list_2.html...)。
  3. 访问:通过浏览器访问你的栏目链接,就能看到带有分页功能的文章列表了。

栏目自身分页

如果你的栏目“高级选项” -> “栏目内容”里填写了很长的描述文字,并且希望这些描述也能分页显示,就需要使用这个功能。

后台设置

  1. 在「栏目管理」中修改你的栏目。
  2. 切换到「高级选项」选项卡。
  3. 找到 分页” 选项,将其设置为 “是”
  4. 的文本框中,输入你的长篇描述,在需要分页的地方,手动输入分页符 <p><strong>nextpage</strong></p>,这个标签就是 DedeCMS 识别分页的标志。

模板文件调用

在你的列表模板文件(如 list_article.htm)中,使用 {dede:field.description/} 标签来调用栏目描述,DedeCMS 会自动将这个标签解析成分页后的内容。

示例模板代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
</head>
<body>
    <h1>{dede:field.title/}</h1>
    <!-- 栏目描述(带分页)开始 -->
    <div class="channel-description">
        {dede:field.description/}
    </div>
    <!-- 栏目描述(带分页)结束 -->
    <!-- 栏目描述的分页导航 -->
    {dede:pagelist listitem='index,pre,next,end' listsize='3'/}
    <hr>
    <!-- 文章列表部分... (同上) -->
</body>
</html>

注意: 这里调用栏目描述分页的 {dede:pagelist} 和文章列表的 {dede:pagelist} 是两个不同的分页系统,它们会根据各自的上下文生成正确的分页链接。


常见问题与解决方法 (FAQ)

为什么我的分页是动态的(list.php?tid=1&PageNo=2)而不是静态的(list_2.html)?

原因:在后台「栏目管理」-「高级选项」-「列表命名规则」中,你没有填写 {page} 这个占位符。 解决:将列表命名规则修改为类似 list_{page}.html 的格式,然后重新生成HTML。

为什么 {dede:list} 循环里的文章数量不对?

原因{dede:list}pagesize 属性可能会覆盖后台的设置,或者后台的“列表每页显示数”设置有误。 解决:检查后台设置,并在模板中明确指定 pagesize{dede:list pagesize='10'}

为什么分页样式很丑,或者不显示?

原因:DedeCMS 默认会加载一个名为 dedepage.css 的文件来美化分页,如果你的模板中没有加载这个CSS文件,或者自定义的CSS覆盖了默认样式,就会导致显示异常。 解决

  • 在模板的 <head> 部分确保引入了CSS:<link rel="stylesheet" href="{dede:global.cfg_cmspath/}/style/dedepage.css" type="text/css" />
  • 或者,你可以自己编写CSS来美化 .dede_pages.pagelist 下的元素。

修改了模板后,分页没有更新怎么办?

原因:DedeCMS 有缓存机制。 解决:在后台「系统」-「SQL命令行工具」-「一键更新缓存」,或者直接在「生成」菜单中重新生成相关的HTML页面。

希望这份详细的指南能帮助你解决 DedeCMS 栏目分页的问题!

-- 展开阅读全文 --
头像
深入体验C语言项目开发,如何实践与提升?
« 上一篇 01-09
dede arclist变量有哪些?如何使用?
下一篇 » 01-09

相关文章

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

目录[+]