织梦默认分页样式在哪个文件里?

99ANYc3cd6
预计阅读时长 27 分钟
位置: 首页 织梦建站 正文
  1. PHP后端代码:用于生成分页的HTML结构。
  2. CSS前端样式:用于美化这个HTML结构,让它看起来更美观。

下面我将详细解释这两部分的位置以及如何修改它们。

织梦默认分页样式在哪里
(图片来源网络,侵删)

PHP后端代码:分页逻辑在哪里?

织梦的分页功能是由一个核心的PHP函数 GetPageList() 生成的,这个函数位于核心文件中。

核心文件位置: /include/arc.archives.class.php (用于文章列表/内容页) /include/arc.listview.class.php (用于自定义列表页)

这个函数在生成列表页(如首页、列表页、搜索页等)时被调用,用来输出分页的HTML代码。

如何找到并修改分页的HTML结构?

织梦默认分页样式在哪里
(图片来源网络,侵删)

直接修改核心文件不是一个好习惯,因为升级时会被覆盖,推荐的方法是通过修改模板文件来覆盖或自定义分页的HTML结构

在模板文件中直接调用(最简单)

在需要显示分页的模板文件中(通常是 list_article.htmindex.htm),织梦提供了一个专门的标签 {dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5" /}

这个标签会直接调用 GetPageList() 函数并输出其默认的HTML结构。

示例: 在你的列表模板文件 list_article.htm 的底部,找到类似这样的代码:

织梦默认分页样式在哪里
(图片来源网络,侵删)
<div class="dede_pages">
    <ul class="pagelist">
        {dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5" /}
    </ul>
</div>

这里的 {dede:pagelist} 就是生成分页的地方,你可以通过修改它的 listitem 属性来控制显示哪些分页元素(如首页、上一页、页码、下一页、末页等)。

自定义分页HTML结构(推荐,最灵活)

如果你想要完全自定义分页的HTML结构(想用 Bootstrap 的分页组件),最好的方法是覆盖 GetPageList() 函数的输出。

操作步骤:

  1. 找到当前使用的模板目录:通常是 /templets/default/ 或你自定义的模板目录。
  2. 创建一个PHP函数文件:在模板目录下创建一个名为 php/ 的文件夹(如果不存在的话),然后在里面新建一个文件,myfunctions.php
  3. 编写自定义分页函数:在 myfunctions.php 文件中,编写一个与核心函数同名的新函数 GetPageList(),你的新函数会优先被调用。

示例 myfunctions.php 文件内容:

<?php
/**
 * 自定义分页函数,覆盖系统默认的
 * @param int $list_len 列表宽度
 * @param string $listitem 列表样式
 * @param string $listtype 列表类型
 * @param string $addinfo 附加信息
 * @return string
 */
function GetPageList($list_len, $listitem = "info,index,end,pre,next,pageno", $listtype = "list", $addinfo = "")
{
    // 引入核心类文件,确保我们能访问到原始的分页数据
    // 注意:这个文件路径可能需要根据你的实际情况调整
    // 通常在模板被解析时,全局变量 $this 已经包含了分页信息
    global $dsql, $PageList;
    // $PageList 已经存在(通常由DedeCMS预先计算好),我们可以直接使用它来构建新的HTML
    if (is_array($PageList)) {
        $prepage = $PageList['prepage'];
        $nextpage = $PageList['nextpage'];
        $indexpage = $PageList['indexpage'];
        $endpage = $PageList['endpage'];
        $listdd = $PageList['listdd'];
        $pageno = $PageList['pageno'];
        $totalpage = $PageList['totalpage'];
        $itemnum = $PageList['itemnum'];
        $totalresult = $PageList['totalresult'];
        // --- 开始构建自定义的HTML结构 ---
        // 这里以 Bootstrap 5 的分页为例
        $mainframe = '<nav aria-label="Page navigation"><ul class="pagination justify-content-center">';
        // 上一页
        if ($prepage) {
            $mainframe .= '<li class="page-item"><a class="page-link" href="' . $prepage . '">上一页</a></li>';
        } else {
            $mainframe .= '<li class="page-item disabled"><span class="page-link">上一页</span></li>';
        }
        // 页码
        $mainframe .= $listdd;
        // 下一页
        if ($nextpage) {
            $mainframe .= '<li class="page-item"><a class="page-link" href="' . $nextpage . '">下一页</a></li>';
        } else {
            $mainframe .= '<li class="page-item disabled"><span class="page-link">下一页</span></li>';
        }
        $mainframe .= '</ul></nav>';
        // 信息
        if (strpos($listitem, 'info') !== false) {
            $mainframe .= '<div class="text-center">共 <strong>' . $totalresult . '</strong> 条记录</div>';
        }
        return $mainframe;
    }
    // 如果没有预先生成 $PageList,可以调用原始函数再处理(此方法较复杂,不推荐)
    // ...
}
?>
  1. 引入自定义函数文件:在你的模板文件(如 list_article.htm)的顶部,使用 {dede:php include 'php/myfunctions.php';/} 来引入这个文件。
    {dede:include filename="head.htm"/}
    {dede:php include 'php/myfunctions.php';/}
    <!-- 你的列表内容 -->
    {dede:arclist titlelen='42' row='10'}
        <a href="[field:arcurl/]">[field:title/]</a>
    {/dede:arclist}
    <!-- 分页调用 -->
    {dede:pagelist listitem="info,index,end,pre,next,pageno" listsize="5" /}
    {dede:include filename="foot.htm"/}

通过这种方式,你就可以完全控制分页的HTML结构,使其符合任何前端框架(如 Bootstrap, Foundation 等)的样式规范。


CSS前端样式:默认样式在哪里?

默认的CSS样式通常存放在模板的CSS文件中。

默认CSS文件位置: /templets/default/style/ 目录下,通常是 dedecms.cssstyle.css

默认分页的CSS类名:

如果你查看默认生成的分页HTML,你会发现它带有一些特定的CSS类:

<div class="dede_pages">
    <ul class="pagelist">
        <li><span class="pageinfo">共 45 条</span></li>
        <li><a href="list_1_1.html">首页</a></li>
        <li><a href="list_1_3.html">上一页</a></li>
        <li><a href="list_1_2.html">2</a></li>
        <li><a href="list_1_3.html">3</a></li>
        <li class="thisclass"><a href="list_1_4.html">4</a></li>
        <li><a href="list_1_5.html">5</a></li>
        <li><a href="list_1_6.html">6</a></li>
        <li><a href="list_1_7.html">7</a></li>
        <li><a href="list_1_5.html">下一页</a></li>
        <li><a href="list_1_45.html">末页</a></li>
    </ul>
</div>

主要的CSS类名有:

  • .dede_pages:分页容器
  • .pagelist:分页列表
  • .pageinfo:分页信息(如“共45条”)
  • .thisclass:当前页码所在的 <li> 元素

如何修改默认样式?

最简单的方法是直接在你模板的CSS文件(如 /templets/default/style/dedecms.css)末尾添加或覆盖这些类的样式。

示例:将默认分页改成简单的行内样式

/* 在你的CSS文件中添加或修改以下样式 */
/* 分页容器 */
.dede_pages {
    margin: 20px 0;
    text-align: center;
    font-size: 12px;
}
/* 分页列表 */
.dede_pages .pagelist {
    display: inline-block; /* 让列表水平排列 */
    list-style: none;
    padding: 0;
    margin: 0;
}
/* 分页列表中的每一项 */
.dede_pages .pagelist li {
    float: left; /* 或者使用 display: inline-block; */
    margin: 0 5px;
}
/* 分页链接 */
.dede_pages .pagelist li a {
    display: block;
    padding: 5px 10px;
    border: 1px solid #ddd;
    border-radius: 3px;
    text-decoration: none;
    color: #333;
}
/* 鼠标悬停效果 */
.dede_pages .pagelist li a:hover {
    background-color: #f8f8f8;
    border-color: #ccc;
}
/* 当前页样式 */
.dede_pages .pagelist li.thisclass a {
    background-color: #007bff;
    color: #fff;
    border-color: #007bff;
}
/* 禁用状态(如末页后的“下一页”) */
.dede_pages .pagelist li.disabled span {
    color: #999;
    background-color: #f5f5f5;
    border-color: #ddd;
    cursor: not-allowed;
}
部分 位置 修改方法
PHP后端代码 /include/arc.archives.class.php (核心文件) 推荐:在模板中使用 {dede:pagelist} 标签,或通过在模板目录下创建 php/myfunctions.php 文件来自定义 GetPageList() 函数,完全控制HTML输出。
CSS前端样式 /templets/default/style/dedecms.css (模板CSS文件) 直接在模板的CSS文件中修改或添加 .dede_pages, .pagelist, .thisclass 等类的样式。

对于大多数用户来说,直接修改CSS文件来美化默认分页是最简单直接的方法,如果你需要更灵活的控制,比如使用前端框架,那么采用自定义PHP函数的方法是最佳选择。

-- 展开阅读全文 --
头像
C语言如何调用webbrowser打开网页?
« 上一篇 01-31
C语言如何实现字符串连接?
下一篇 » 01-31

相关文章

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

目录[+]