PHPCMS 欄目頁及列表頁分頁修改
網(wǎng)站欄目頁及列表頁要實現(xiàn)的效果如下:
1、欄目頁最多只列出100頁;
2、列表頁不限制最大頁數(shù),有多少頁就列出多少頁。
要實現(xiàn)這個效果,需要改動的文件有3個,文件及改動內(nèi)容如下:
/*
文件:/include/global.func.php
函數(shù):get
*/
/*
為 get 函數(shù)添加一個參數(shù)
ismaxpage 就是所添加的參數(shù),用于判斷是否啟用“列表頁最大頁數(shù)”這個參數(shù)
而插入代碼的部分是為了改變total的值,即記錄集總數(shù)
*/
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);
}
/* 插入以上代碼 結(jié)束 */
$pages = pages($total, $page, $rows, $urlrule, '', $catid);
...
}
/*
文件:/include/template.func.php
函數(shù):get_parse
*/
/*
前臺 get 標(biāo)簽最后是轉(zhuǎn)換成 get 函數(shù),以下是處理 get 標(biāo)簽的函數(shù)
因為 get 函數(shù)增加了一個參數(shù) $ismaxpage,所以這里也需要做相應(yīng)修改
以下是修改后的部分代碼
*/
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 這個參數(shù),仔細(xì)看 */
$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;
/* 以下這行代碼確保了生成的欄目及列表頁的數(shù)量是正確的,該生成多少頁就是多少頁 */
$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";
/* 判斷是否有子欄目,有的話就開啟“列表頁最大頁數(shù)”這個參數(shù),限制欄目頁頁數(shù) */
if ($child) {
$ismaxpage = 1;
$page = min($page, $PHPCMS['maxpage']); /* 為了防止在地址欄輸入頁數(shù),這里是要滴 */
}
?>
<ul>
{get sql="$sql" rows="20" page="$page" catid="$catid" ismaxpage="$ismaxpage"}
<li>{$r[title]}</li>
{/get}
</ul>
<div>{$pages}</div>
經(jīng)過以上這么一翻搗鼓,一開始的那效果就出來了?;舅悸肪褪窍纫獮間et標(biāo)簽增加一個參數(shù),用于判斷是否開啟“列表頁最大頁數(shù)”,然后生成靜態(tài)頁面的時候限制一下欄目頁,不然它有多少生成多少。
PHPCMS 確實挺好,但需要改進(jìn)的地方同樣也很多,很多細(xì)節(jié)都沒處理好,而有些功能都不是給人用的。希望 PHPCMS 能越來越強(qiáng)大!
上一篇:PHPwind 偽靜態(tài)簡化URL長度為1.html,f2等的方法介紹
欄 目:phpcms
下一篇:PHPCMS V9專題模塊注入漏洞的分析與修復(fù)方法
本文標(biāo)題:PHPCMS 欄目頁及列表頁分頁修改
本文地址:http://www.jygsgssxh.com/a1/phpcms/9905.html
您可能感興趣的文章
- 01-10phpcms常見問題解答
- 01-10phpcms語法規(guī)則
- 01-10PHPCMS網(wǎng)站轉(zhuǎn)移空間教程
- 01-10PHPCMS2008 SP4 心情排行指數(shù)不顯示的解決辦法
- 01-10phpcms頻道首頁調(diào)用所有一級欄目及二級欄目
- 01-10phpcms標(biāo)簽?zāi)0寮皩n}模板的制作
- 01-10PHPCMS系統(tǒng)自帶標(biāo)簽說明
- 01-10為PHPCMS 2008 編輯器增加常用中文字體方法
- 01-10PHPcms 2008 注冊選擇模型關(guān)閉后,注冊不能自動登錄的問題
- 01-10phpcms模仿QQ和MSN消息提示的效果


閱讀排行
本欄相關(guān)
- 01-10phpcms常見問題解答
- 01-10phpcms語法規(guī)則
- 01-10PHPCMS2008 SP4 心情排行指數(shù)不顯示的解
- 01-10PHPCMS網(wǎng)站轉(zhuǎn)移空間教程
- 01-10PHPCMS系統(tǒng)自帶標(biāo)簽說明
- 01-10phpcms標(biāo)簽?zāi)0寮皩n}模板的制作
- 01-10phpcms頻道首頁調(diào)用所有一級欄目及二
- 01-10PHPcms 2008 注冊選擇模型關(guān)閉后,注冊
- 01-10為PHPCMS 2008 編輯器增加常用中文字體
- 01-10phpcms模仿QQ和MSN消息提示的效果
隨機(jī)閱讀
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10C#中split用法實例總結(jié)
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 01-10使用C語言求解撲克牌的順子及n個骰子


