dede列表分页如何正确调用?

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

使用 {dede:pagelist}

这是 DedeCMS 官方提供的、用于生成分页链接的专用标签,应该始终是你的首选。

dede列表调用分页
(图片来源网络,侵删)

标准用法(在列表页模板 list_*.htm 中)

在 DedeCMS 的列表页模板文件(list_article.htm)中,你需要将分页代码放置在 {dede: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}
<!-- 分页代码开始 -->
<div class="dede_pages">
    <ul class="pagelist">
        <li><span class="pageinfo">共 <strong>{dede:field.totalpage/}</strong> 页 / <strong>{dede:field.totalnum/}</strong> 条记录</span></li>
        <!-- 上一页 -->
        <li><a href="{dede:pagelist listitem='pre' runphp='yes'}">if(@me=='') @me=''; else @me='上一页';{/dede:pagelist}</a></li>
        <!-- 页码 -->
        {dede:pagelist listsize='5' listitem='index pre pageno next end'/}
        <!-- 下一页 -->
        <li><a href="{dede:pagelist listitem='next' runphp='yes'}">if(@me=='') @me=''; else @me='下一页';{/dede:pagelist}</a></li>
        <!-- 首页 -->
        <li><a href="{dede:global.cfg_cmsurl/}/">首页</a></li>
        <!-- 末页 -->
        <li><a href="{dede:pagelist listitem='end'/}">末页</a></li>
    </ul>
</div>
<!-- 分页代码结束 -->

{dede:pagelist} 标签属性详解

{dede:pagelist} 标签非常灵活,通过不同的属性可以控制分页的样式和内容。

listitem - 定义要显示的分页项

这个属性最重要,它决定了分页条里显示哪些内容,你可以用空格或逗号隔开多个项。

  • index: 首页
  • pre: 上一页
  • pageno: 页码
  • next: 下一页
  • end: 末页
  • option: 下拉跳转选择框
  • info: 显示分页信息(如“共X页,X条记录”)

示例: {dede:pagelist listitem='index pre pageno next end'} 只会显示首页、上一页、页码、下一页、末页。 {dede:pagelist listitem='info option'} 只会显示分页信息和下拉跳转框。

dede列表调用分页
(图片来源网络,侵删)

listsize - 显示的页码数量

这个属性控制“页码”部分前后显示的页码总数。listsize='5' 表示当前页码的前后各显示5个页码,如果总页数足够的话。

示例: {dede:pagelist listsize='3'}

runphp - PHP 逻辑判断

这个属性非常有用,特别是用来处理“上一页”和“下一页”在首页或末页时不应显示的问题。

  • 上一页优化:

    dede列表调用分页
    (图片来源网络,侵删)
    {dede:pagelist listitem='pre' runphp='yes'}
        // 如果上一页的链接为空(即在首页),则不显示“上一页”文字
        if(@me=='') @me=''; else @me='上一页';
    {/dede:pagelist}

    这段代码会检查 @me(即上一页的URL)是否为空,如果为空,说明已经在第一页,就不显示“上一页”这个链接。

  • 下一页优化:

    {dede:pagelist listitem='next' runphp='yes'}
        // 如果下一页的链接为空(即在末页),则不显示“下一页”文字
        if(@me=='') @me=''; else @me='下一页';
    {/dede:pagelist}

获取分页信息(使用 {dede:field}

分页的一些宏观信息,如总页数、总记录数,需要通过 {dede:field} 标签来获取。

  • {dede:field.totalpage/}: 当前栏目文章总页数。
  • {dede:field.totalnum/}: 当前栏目文章总数量。
  • {dede:field.pagecount/}: 当前页码。
  • {dede:field.keyword/}: 搜索关键词(如果列表是搜索结果页)。

常见问题与解决方案

问题1:分页样式不生效,显示的是原始HTML代码?

原因: 这通常是因为你的模板文件里没有引入 DedeCMS 的核心样式文件 style/dedecms.css

解决方法: 在你的列表页模板(list_*.htm)的 <head> 部分加入以下代码:

<link rel="stylesheet" href="{dede:global.cfg_templets_skin/}/style/dedecms.css" type="text/css" media="screen" />

确保 style/dedecms.css 文件存在于你当前模板目录下,如果你不使用默认样式,可以自定义 CSS 类名,然后在你的 CSS 文件中编写样式。

问题2:如何自定义分页的样式?

默认的 dedecms.css 中定义了 .pagelist 相关的样式,你可以通过以下两种方式自定义:

直接修改 dedecms.css 找到 .pagelist, .pagelist li, .pagelist a 等选择器,修改它们的 display, float, margin, padding 等属性来调整布局和外观。

在模板中使用自定义类名(推荐) 给分页 div 添加一个自定义的 classmy-pagination

<div class="my-pagination">
    <ul class="pagelist">
        {dede:pagelist listitem='index pre pageno next end'/}
    </ul>
</div>

然后在你模板的 CSS 文件中(css/style.css)覆盖或新增样式:

.my-pagination .pagelist {
    display: flex; /* 使用 Flexbox 布局 */
    justify-content: center;
    list-style: none;
    padding: 0;
}
.my-pagination .pagelist li {
    margin: 0 5px;
}
.my-pagination .pagelist a,
.my-pagination .pagelist span {
    display: block;
    padding: 5px 10px;
    border: 1px solid #ddd;
    border-radius: 3px;
    text-decoration: none;
    color: #333;
}
.my-pagination .pagelist a:hover {
    background-color: #f0f0f0;
}
.my-pagination .pagelist .thisclass { /* 当前页的样式 */
    background-color: #007bff;
    color: #fff;
    border-color: #007bff;
}

问题3:如何实现“首页”和“末页”的文本自定义?

{dede:pagelist listitem='index'} 默认会生成 <a href="首页URL">首页</a>,如果你想修改“首页”这个文字,可以使用 runphp 属性:

<li><a href="{dede:pagelist listitem='index'/}">返回首页</a></li>

或者更灵活的 runphp 方式(虽然这里没必要,但原理一致):

<li><a href="{dede:pagelist listitem='index' runphp='yes'}">@me='返回首页';{/dede:pagelist}</a></li>

  1. 核心标签:使用 {dede:pagelist}{dede:list} 之后调用分页。
  2. 关键属性
    • listitem: 控制显示哪些分页元素(首页、上页、页码、下页、末页等)。
    • listsize: 控制页码显示的数量。
    • runphp: 用于处理“上一页/下一页”在边界情况下的显示逻辑。
  3. 信息获取:使用 {dede:field.totalpage/} 等获取总页数等信息。
  4. 样式美化:通过引入 dedecms.css 或自定义 CSS 类来美化分页条。

掌握了以上方法,你就可以在 DedeCMS 中自如地实现各种样式的列表分页了。

-- 展开阅读全文 --
头像
同级推荐文章,如何实现精准关联?
« 上一篇 04-20
dede密码怎么改?忘记密码怎么办?
下一篇 » 04-20

相关文章

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