织梦列表分页如何实现上一页下一页功能?

99ANYc3cd6
预计阅读时长 23 分钟
位置: 首页 织梦建站 正文
  1. 模板文件:在列表页模板中,调用织梦的分页标签。
  2. CSS样式:美化分页标签,让它看起来更符合网站的设计。

第一步:在列表页模板中调用分页标签

织梦的分页功能非常强大,只需要在列表页模板(通常是 list_article.htm)的循环内容结束后,添加一个固定的标签即可。

织梦列表上一页下一页
(图片来源网络,侵删)
  1. 打开你的列表页模板文件: 这个文件通常位于你的模板目录下,/templets/你的默认模板名称/list_article.htm

  2. 循环结束的位置: 在模板中,你会看到类似这样的代码,这是用来循环输出列表文章的:

    <ul class="list">
      {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>

    这里的 {dede:list} 标签就是用来获取列表数据的。

  3. {/dede:list} 之后添加分页标签: 在上面代码的 </ul> 之后,添加织梦的分页标签,最常用的是 #pagelist

    <ul class="list">
      {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>
    <!-- 在这里添加分页标签 -->
    <div class="dede_pages">
      <ul class="pagelist">
        {dede:pagelist listitem="index,pre,next,end,option" listsize="5" runphp='yes'}
        if(@me==' <a href="javascript:;" disabled="1">上一页</a> ')
        @me=' <span class="pagepre">上一页</span> ';
        if(@me==' <a href="javascript:;" disabled="1">下一页</a> ')
        @me=' <span class="pagenext">下一页</span> ';
        @me= str_replace("index","首页",@me);
        @me= str_replace("pre","上一页",@me);
        @me= str_replace("next","下一页",@me);
        @me= str_replace("end","末页",@me);
        @me= str_replace("option","跳转",@me);
        @me= str_replace("共页","共",@me);
        @me= str_replace("条","条",@me);
        @me= str_replace("页","页",@me);
        @me= str_replace("GO","GO",@me);
        @me= str_replace("select","<select name='select' onchange='window.location+=(\"&pageno=\"+this.value);'>",@me);
        @me= str_replace("</select>","</select>",@me);
        {/dede:pagelist}
      </ul>
    </div>

标签解释

织梦列表上一页下一页
(图片来源网络,侵删)
  • {dede:pagelist ...}: 这是织梦的分页标签。
  • listitem: 定义要显示的分页项目。
    • index: 首页
    • pre: 上一页
    • next: 下一页
    • end: 末页
    • option: 跳转选项(下拉框)
    • info: 页面信息(如“共X页,到第X页”)
  • listsize: 显示的页码按钮数量,5 表示 ... 2 3 4 5 6 ... 这样的效果。
  • runphp='yes': 允许在标签内使用PHP代码,我们用它来自定义“上一页”和“下一页”在无链接时的样式(比如变成灰色不可点击状态)。

第二步:添加CSS样式美化分页

默认情况下,分页标签的样式可能比较朴素,为了实现常见的“上一页/下一页”样式,我们需要添加一些CSS代码。

  1. 找到你的CSS文件: 通常是 /templets/你的默认模板名称/style/css.css/templets/你的默认模板名称/style/dedecms.css

  2. 在CSS文件中添加以下样式

    /* 分页容器 */
    .dede_pages {
      text-align: center;
      margin: 20px 0;
      font-size: 12px;
    }
    /* 分页列表 */
    .pagelist {
      display: inline-block;
      list-style: none;
      padding: 0;
      margin: 0;
    }
    /* 分页列表项(每个页码按钮) */
    .pagelist li {
      float: left;
      margin: 0 5px;
    }
    /* 分页链接样式 */
    .pagelist a {
      display: block;
      padding: 5px 12px;
      border: 1px solid #ddd;
      color: #333;
      text-decoration: none;
      border-radius: 3px; /* 圆角 */
    }
    /* 鼠标悬停效果 */
    .pagelist a:hover {
      background-color: #f8f8f8;
      border-color: #ccc;
    }
    /* 当前页样式(如果需要高亮当前页) */
    .pagelist .thisclass {
      background-color: #f8f8f8;
      color: #ff5500;
      font-weight: bold;
      border: 1px solid #ff5500;
      cursor: default;
    }
    /* 自定义的“上一页”和“下一页”样式 */
    .pagepre, .pagenext {
      display: inline-block;
      padding: 5px 12px;
      border: 1px solid #ddd;
      color: #333;
      text-decoration: none;
      border-radius: 3px;
      cursor: default; /* 当没有链接时,鼠标显示默认箭头 */
    }
    /* 当上一页/下一页没有链接时(即禁用状态)的样式 */
    .pagepre.disabled, .pagenext.disabled {
      color: #ccc;
      border-color: #eee;
      cursor: not-allowed;
    }
    /* 跳转下拉框样式 */
    .pagelist select {
      padding: 5px;
      border: 1px solid #ddd;
      border-radius: 3px;
    }

CSS样式说明

  • 我们通过 runphp='yes' 将没有链接的 <a> 标签替换为了 <span> 标签,并分别给了 class="pagepre"class="pagenext"
  • 我们还添加了 .disabled 类,用于当“上一页”已经是第一页,或“下一页”已经是最后一页时,将其置灰,表示不可点击。
  • 你可以根据自己网站的设计,自由修改颜色、边框、内边距等属性。

第三步:如何处理“上一页/下一页”禁用状态(可选但推荐)

在第一步的 runphp 代码中,我们只是简单地将 <a> 标签换成了 <span>,为了实现更好的禁用效果(比如置灰),可以稍微修改一下PHP逻辑。

修改后的 runphp 代码

{dede:pagelist listitem="index,pre,next,end,option" listsize="5" runphp='yes'}
if(@me==' <a href="javascript:;" disabled="1">上一页</a> ')
@me=' <span class="pagepre disabled">上一页</span> ';
else if(@me==' <a href="javascript:;" disabled="1">下一页</a> ')
@me=' <span class="pagenext disabled">下一页</span> ';
else
@me= str_replace("index","首页",@me);
@me= str_replace("pre","上一页",@me);
@me= str_replace("next","下一页",@me);
@me= str_replace("end","末页",@me);
@me= str_replace("option","跳转",@me);
@me= str_replace("共页","共",@me);
@me= str_replace("条","条",@me);
@me= str_replace("页","页",@me);
@me= str_replace("GO","GO",@me);
@me= str_replace("select","<select name='select' onchange='window.location+=(\"&pageno=\"+this.value);'>",@me);
@me= str_replace("</select>","</select>",@me);
{/dede:pagelist}

这个修改增加了 else ifelse 判断,当检测到“上一页”或“下一页”是禁用状态时,会直接输出带有 disabled 类的 <span> 标签,这样我们就可以在CSS中通过 .pagepre.disabled.pagenext.disabled 来精确控制它们的禁用样式。

  1. 模板:在 list_article.htm{/dede:list} 后添加 {dede:pagelist} 标签,并利用 runphp 自定义文本和禁用状态。
  2. CSS:在CSS文件中为 .dede_pages, .pagelist, .pagelist a 以及自定义的 .pagepre, .pagenext 等类编写样式。
  3. 刷新:保存模板和CSS文件后,在后台更新一下对应的列表页,就能看到效果了。

通过以上步骤,你就可以在织梦列表页完美地实现并自定义“上一页/下一页”分页功能了。

-- 展开阅读全文 --
头像
织梦CKeditor如何配置使用?
« 上一篇 今天
织梦验证码总错?登录失败怎么办?
下一篇 » 今天

相关文章

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