新聞中心
Ecshop如何優(yōu)化重寫ecshop分頁get_pager函數(shù)
作者 / 無憂主機(jī) 時間 2015-10-24 02:06:39
在使用ecshop在php虛擬主機(jī)建站的過程中,總是希望分頁能按照自己的意愿進(jìn)行,下面小編給大家介紹如何優(yōu)化網(wǎng)站的分頁,在ecshop原有的get_pager分頁函數(shù)基礎(chǔ)上進(jìn)行了修改:
function my_get_pager($url,$param,$record_count,$page = 1,$size = 10){ ?? ?$size =intval($size);//每頁顯示幾條記錄 ?? ?if($size<1){ //如果每頁顯示的記錄小于1的話 ?? ??? ?$size = 10;//將每頁顯示記錄條數(shù)設(shè)置為10 ?? ?} ?? ? ?? ?$page = intval($page);///當(dāng)前頁碼 ?? ?if ($page < 1) ///如果當(dāng)前頁碼小于1的話 ?? ?{ ?? ??? ?$page = 1;///將當(dāng)前頁碼默認(rèn)設(shè)置為1 ?? ?} ?? ?$record_count = intval($record_count);///記錄總數(shù)量 ?? ? ?? ?$page_count = $record_count > 0 ? intval(ceil($record_count / $size)) : 1; ///總頁數(shù) ?? ?if ($page > $page_count) ///如果當(dāng)前頁碼大于總頁數(shù) ?? ?{ ?? ??? ?$page = $page_count;///則將總頁數(shù)賦值給當(dāng)前頁碼 ?? ?}?? ? ?? ? ?? ? $page_prev ?= ($page > 1) ? $page – 1 : 1; ///前一頁 ?? ?$page_next ?= ($page < $page_count) ? $page + 1 : $page_count; ///后一頁 ?? ? /* 將參數(shù)合成url字串 */ ?? ?$param_url = '?'; ?///參數(shù)組成的url字符串 如:"?act=list" ?? ?foreach ($param AS $key => $value) ///鍵值對數(shù)組參數(shù) ?? ?{ ?? ??? ?$param_url .= $key . '=' . $value . '&'; ///"?號后面的參數(shù)" ?? ?} ?? ? ?? ?$pager['url'] ? ? ? ? ?= $url; ///第一個參數(shù),是一個文件名 如:get_comment.php ?? ?$pager['start'] ? ? ? ?= ($page -1) * $size; ///查詢時的起始位置 ?? ?$pager['page'] ? ? ? ? = $page; ///當(dāng)前頁 ?? ?$pager['size'] ? ? ? ? = $size; ///每頁顯示的記錄條數(shù) ?? ?$pager['record_count'] = $record_count; ?///記錄總數(shù) ?? ?$pager['page_count'] ? = $page_count; ///總頁數(shù)?? ? ?? ? ? ? ? ? $_pagenum = 10; ? ? // 顯示的頁碼 ? ? ? ? $_offset = 2; ? ? ? // 當(dāng)前頁偏移值 ? ? ? ? $_from = $_to = 0; ?// 開始頁, 結(jié)束頁?? ? ?? ? ?? ?if($_pagenum > $page_count) ///如果顯示的頁碼 大于 總頁數(shù),如:顯示10頁 總頁數(shù)為8 則顯示1-8 ?? ?{ ?? ??? ?$_from = 1; ///從1開始 ?? ??? ?$_to = $page_count; ///到 總頁數(shù) 為止 ?? ?} ?? ?else ///如果 顯示的頁碼 小于 總頁碼,如:顯示10頁 總頁數(shù)為15 ?? ?{///(1)假如當(dāng)前頁為2,則$_from為0,$_to為9 ? (2)假如當(dāng)前頁為6,則$_from為4,$_to為13 ? ?? ??? ?$_from = $page – $_offset; ? ?;///(1)$_from為0 (2)$_from為4 當(dāng)前頁-當(dāng)前頁偏移量,如: 1-10、2-11、3-12、4-13、5-14、6-15、不會出現(xiàn)7-16、8-17,因?yàn)榭傢摂?shù)是15?//www.zuimoban.com ?? ??? ?$_to = $_from + $_pagenum – 1; ///(1)$_to為9 (2)$_to為13 ?? ??? ?if($_from < 1) ?? ??? ?{ ?? ??? ??? ?$_to = $page + 1 – $_from; ///(1)則$_to為3 ?? ??? ??? ?$_from = 1; ///(1)$_from重新復(fù)制為1 ?? ??? ??? ?if($_to – $_from < $_pagenum) //(1)3-1 小于 要顯示的頁碼數(shù) ?? ??? ??? ?{ ?? ??? ??? ??? ?$_to = $_pagenum; ///(1)則$_to重新復(fù)制為10 ?? ??? ??? ?} ?? ??? ?} ?? ??? ?elseif($_to > $page_count) //(2)如果13 大于 10的話 ? ? ? ? ? 如果14 大于 10的話 ?? ??? ?{ ?? ??? ??? ?$_from = $page_count – $_pagenum + 1; ///(2)$_from為起始頁數(shù):15-10+1=6 ?? ??? ??? ?$_to = $page_count; //(2)$_to為總頁數(shù):15 ?? ??? ?} ?? ?} ?? ?$url_format = $url . $param_url . 'page='; ?? ?$pager['page_first'] = ($page – $_offset > 1 && $_pagenum < $page_count) ? $url_format . 1 : ''; ?? ?$pager['page_prev'] ?= ($page > 1) ? $url_format . $page_prev : ''; ?? ?$pager['page_next'] ?= ($page < $page_count) ? $url_format . $page_next : ''; ?? ?$pager['page_last'] ?= ($_to < $page_count) ? $url_format . $page_count : ''; ?? ?$pager['page_number'] = array(); ?? ?for ($i=$_from;$i<=$_to;++$i) ?? ?{ ?? ??? ?$pager['page_number'][$i] = $url_format . $i; ?? ?} ?? ?return $pager; ?};返回的$pager 數(shù)組里面包含了第一頁/末頁 、上一頁/下一頁 已經(jīng)分頁顯示的碼數(shù)及地址,賦值到前端頁面即可實(shí)習(xí)自定義分頁! 無憂主機(jī)相關(guān)文章推薦閱讀: ECSHOP如何顯示已付款的訂單信息 ECSHOP教程:設(shè)置只有登錄用戶才可查看商品詳情 ECSHOP的RECIEVE.PHP郵件自動確認(rèn)收貨BUG如何修正
本文地址:http://www.gle-technology.com/ecshop/20470.html