php 网站栏目修改,PHPCMS 栏目页及列表页分页修改

网站栏目页及列表页要实现的效果如下:

1、栏目页最多只列出100页;

2、列表页不限制最大页数,有多少页就列出多少页。

要实现这个效果,需要改动的文件有3个,文件及改动内容如下:

复制代码代码如下:

/*

文件:/include/global.func.php

函数:get

*/

/*

为 get 函数添加一个参数

ismaxpage 就是所添加的参数,用于判断是否启用“列表页最大页数”这个参数

而插入代码的部分是为了改变total的值,即记录集总数

*/

function get($sql, $rows = 0, $page = 0, $dbname = '', $dbsource = '', $urlrule = '', $distinct_field = '', $catid = 0, $ismaxpage = 0) {

...

if($dbname || $dbsource)

{

$r = $db->get_one("SELECT COUNT(*) AS `count` ".stristr($sql, 'from'));

$total = $r['count'];

}

elseif($distinct_field)

{

$total = cache_count("SELECT COUNT(distinct $distinct_field) AS `count` ".stristr($sql, 'from'));

}

else

{

$total = cache_count("SELECT COUNT(*) AS `count` ".stristr($sql, 'from'));

}

/* 插入以下代码 开始 */

global $PHPCMS;

if ($ismaxpage) {

$total = min($total, $PHPCMS['maxpage']*$rows);

}

/* 插入以上代码 结束 */

$pages = pages($total, $page, $rows, $urlrule, '', $catid);

...

}

复制代码代码如下:

/*

文件:/include/template.func.php

函数:get_parse

*/

/*

前台 get 标签最后是转换成 get 函数,以下是处理 get 标签的函数

因为 get 函数增加了一个参数 $ismaxpage,所以这里也需要做相应修改

以下是修改后的部分代码

*/

function get_parse($str)

{

...

extract($r);

if(!isset($dbsource)) $dbsource = '';

if(!isset($dbname)) $dbname = '';

if(!isset($sql)) $sql = '';

if(!isset($rows)) $rows = 0;

if(!isset($urlrule)) $urlrule = '';

if(!isset($catid)) $catid = 0;

if(!isset($distinctfield)) $distinctfield = '';

if(!isset($return) || !preg_match("/^\w+$/i", $return)) $return = 'r';

if(!isset($ismaxpage)) $ismaxpage = 0; /* 增加部分 */

if(isset($page))

{

/* 修改部分,增加了 $ismaxpage 这个参数,仔细看 */

$str = "<?php \$ARRAY = get(\"$sql\", $rows, $page, \"$dbname\", \"$dbsource\", \"$urlrule\",\"$distinctfield\",\"$catid\", $ismaxpage);\$DATA=\$ARRAY['data'];\$total=\$ARRAY['total'];\$count=\$ARRAY['count'];\$pages=\$ARRAY['pages'];unset(\$ARRAY);foreach(\$DATA AS \$n=>\${$return}){\$n++;?>";

}

...

}

复制代码代码如下:

/*

文件:/admin/html.inc.php

*/

/* 找到以下代码 */

if($CATEGORY[$catid]['child'])

{

$pages = 1;

$html->category($catid);

}

else

{

$offset = $pagesize*($page-1);

if($page == 1)

{

$contents = cache_count("SELECT COUNT(*) AS `count` FROM `".DB_PRE."content` WHERE catid=$catid AND status=99");

$total = ceil($contents/$PHPCMS['pagesize']);

$pages = ceil($total/$pagesize);

}

$max = min($offset+$pagesize, $total);

for($i=$offset; $i{

$html->category($catid, $i);

}

}

/* 然后把上面的代码替换成以下的代码 */

$offset = $pagesize*($page-1);

if($page == 1)

{

$condition=get_sql_catid($catid);

$contents = cache_count("SELECT COUNT(*) AS `count` FROM `".DB_PRE."content` WHERE status=99 $condition");

$total = ceil($contents/$PHPCMS['pagesize'])+1;

/* 以下这行代码确保了生成的栏目及列表页的数量是正确的,该生成多少页就是多少页 */

$total = $CATEGORY[$catid]['child'] ? min($total, $PHPCMS['maxpage']+1) : $total;

$pages = ceil($total/$pagesize);

}

$max = min($offset+$pagesize, $total);

for($i=$offset; $i{

$html->category($catid, $i);

}

以下是一个栏目页及列表页模板的示例

复制代码代码如下:

$catids = str_replace('`catid`', 'a.`catid`', get_sql_catid($catid));

$sql = "

SELECT a.contentid, a.catid, a.title, a.keywords, a.thumb, a.userid, a.updatetime, a.inputtime, a.islink, a.url, a.style

FROM `phpcms_content` a

WHERE a.status=99 $catids ORDER BY a.contentid DESC";

/* 判断是否有子栏目,有的话就开启“列表页最大页数”这个参数,限制栏目页页数 */

if ($child) {

$ismaxpage = 1;

$page = min($page, $PHPCMS['maxpage']); /* 为了防止在地址栏输入页数,这里是要滴 */

}

?>

{get sql="$sql" rows="20" page="$page" catid="$catid" ismaxpage="$ismaxpage"}

{$r[title]}

{/get}

{$pages}

经过以上这么一翻捣鼓,一开始的那效果就出来了。基本思路就是先要为get标签增加一个参数,用于判断是否开启“列表页最大页数”,然后生成静态页面的时候限制一下栏目页,不然它有多少生成多少。

PHPCMS 确实挺好,但需要改进的地方同样也很多,很多细节都没处理好,而有些功能都不是给人用的。希望 PHPCMS 能越来越强大!

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

特别注意:本站所有转载文章言论不代表本站观点!

本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值