一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

DEDECMS|帝國CMS|Discuz|PHPCMS|Wordpress|ZBLOG|ECSHOP|蘋果CMS|極致CMS|CMS系統|

服務器之家 - 建站程序 - PHPCMS - PHPCMS 欄目頁及列表頁分頁修改

PHPCMS 欄目頁及列表頁分頁修改

2019-10-08 10:56phpcms建站網 PHPCMS

如果你有用過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<=$max; $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<$max; $i++) 

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


以下是一個欄目頁及列表頁模板的示例 
 

復制代碼

代碼如下:


<?php 
$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']); /* 為了防止在地址欄輸入頁數,這里是要滴 */ 

?> 
<ul> 
{get sql="$sql" rows="20" page="$page" catid="$catid" ismaxpage="$ismaxpage"} 
<li>{$r[title]}</li> 
{/get} 
</ul> 
<div>{$pages}</div> 


經過以上這么一翻搗鼓,一開始的那效果就出來了。基本思路就是先要為get標簽增加一個參數,用于判斷是否開啟“列表頁最大頁數”,然后生成靜態頁面的時候限制一下欄目頁,不然它有多少生成多少。 
PHPCMS 確實挺好,但需要改進的地方同樣也很多,很多細節都沒處理好,而有些功能都不是給人用的。希望 PHPCMS 能越來越強大!

延伸 · 閱讀

精彩推薦
  • PHPCMSphpcms V9實現QQ登陸OAuth2.0提供下載

    phpcms V9實現QQ登陸OAuth2.0提供下載

    phpcmsV9使用的QQ登陸依然是OAuth1.0,但現在騰訊已經不審核使用OAuth1.0的網站了。這對于使用pc的站長來講是一個無比巨大的坑。經過對phpcms論壇的一位同學做...

    phpcms教程網3402019-10-11
  • PHPCMS數據庫導入成功,phpcms打不開

    數據庫導入成功,phpcms打不開

    問:,數據庫導入成功,phpcms打不開 答:您好,查看此域名是解析到 云主機 上的,報錯來看應該是您導入的數據庫不完整,還差session的表,請您核實 若需...

    未知1822023-05-07
  • PHPCMSphpcms轉移到虛擬空間的詳細步驟

    phpcms轉移到虛擬空間的詳細步驟

    本文向大家介紹phpcms從本地轉移到虛擬空間的步驟,轉移過程需要改動一部分文件,這里提供如何改動這些文件,以保證你可以順利轉移PHPCMS ...

    phpcms教程網4232019-10-13
  • PHPCMSphpcms常見問題解答

    phpcms常見問題解答

    1.為什么phpcms首頁幻燈片怎么顯示不出來? 答:需要設置文章的 標題圖片 如果設置標題圖片,則可以在首頁以及欄目頁以圖片方式鏈接到文章。 2.自定義...

    phpcms教程網2712019-10-07
  • PHPCMSphpcms怎么上傳歌曲文件

    phpcms怎么上傳歌曲文件

    phpcms上傳歌曲文件的方法:首先依次打開“設置-站點管理-修改”;然后在附件配置的“允許上傳附件類型”中添加自己需要的類型;接著打開“添加模型...

    未知1522023-05-07
  • PHPCMSphpcms v9去除盛大連接 關閉盛大通行證的修改方法

    phpcms v9去除盛大連接 關閉盛大通行證的修改方法

    phpcms v9默認開啟了盛大連接,直接使用盛大通告證登錄網站,但是盛大通告證的覆蓋面有限,比不上QQ或者支付寶,甚至不如人人網、豆瓣之類,于是有朋...

    phpcms教程網5562019-10-13
  • PHPCMSphpcms的欄目緩存無限級羅列展示處理代碼(親測)

    phpcms的欄目緩存無限級羅列展示處理代碼(親測)

    本文為大家詳細介紹下phpcms的欄目緩存無限級羅列展示是怎么實現的,粗測試了一下,效果還不錯,有需求的朋友可以參考下哈,希望對大家有所幫助 ...

    phpcms教程網8642019-10-11
  • PHPCMS如何設置PhpCms廣告模塊管理 PhpCms廣告模塊管理圖文教程

    如何設置PhpCms廣告模塊管理 PhpCms廣告模塊管理圖文教程

    PhpCms廣告模塊管理圖文教程,下面給大家總結一下 ...

    PHPCMS教程網3782019-10-14
主站蜘蛛池模板: 人人揉揉香蕉 | 成人国产精品一级毛片视频 | 国产农村一级特黄α真人毛片 | 国产精品亚洲片在线观看麻豆 | 黑人粗长大战亚洲女 | 欧美折磨另类系列sm | 大学生初次破苞免费视频 | 免费观看欧美性一级 | 欧美成人三级伦在线观看 | 四虎影院在线免费观看 | 亚洲天堂视频在线观看 | 亚洲毛片免费看 | 亚洲精品国产精品精 | 福利片免费一区二区三区 | 免费看成年视频网页 | 男生的j桶女人屁免费视频 男生操男生 | 久久久久夜 | 亚洲天堂一区二区在线观看 | 91精品综合国产在线观看 | 精品一区二区三区高清免费观看 | 亚洲精品一区二区久久这里 | 乌克兰一级毛片 | 色花堂中文字幕98堂网址 | 免费看日本 | 欧美xxx000喷水 | 91精品国产亚一区二区三区 | 成免费视频| 四虎影院在线免费播放 | ffyybb免费福利视频 | 激情六月丁香婷婷四房播 | 免费福利资源站在线视频 | 日本黄a三级三级三级 | aaaa大片 | 肥胖女性大bbbbbb视频女厕 | 亚洲欧美日韩久久一区 | 亚洲AV久久无码精品九号 | 秋霞一级 | 国产精品亚洲w码日韩中文 国产精品香蕉在线观看不卡 | 久久久久久久国产精品视频 | 国产高清在线精品一区 | 欧美三级小说 |