在分頁的時候要按照本身的需求分頁,全部在ecshop原有的分頁函數基礎上進行了修改:php
function my_get_pager($url,$param,$record_count,$page = 1,$size = 10){html
$size =intval($size);//每頁顯示幾條記錄
if($size<1){ //若是每頁顯示的記錄小於1的話
$size = 10;//將每頁顯示記錄條數設置爲10
}
$page = intval($page);///當前頁碼
if ($page < 1) ///若是當前頁碼小於1的話
{
$page = 1;///將當前頁碼默認設置爲1
}
$record_count = intval($record_count);///記錄總數量
$page_count = $record_count > 0 ? intval(ceil($record_count / $size)) : 1; ///總頁數
if ($page > $page_count) ///若是當前頁碼大於總頁數
{
$page = $page_count;///則將總頁數賦值給當前頁碼
}
前端
$page_prev = ($page > 1) ? $page – 1 : 1; ///前一頁
$page_next = ($page < $page_count) ? $page + 1 : $page_count; ///後一頁數組
/* 將參數合成url字串 */
$param_url = '?'; ///參數組成的url字符串 如:"?act=list"
foreach ($param AS $key => $value) ///鍵值對數組參數
{
$param_url .= $key . '=' . $value . '&'; ///"?號後面的參數"
}
$pager['url'] = $url; ///第一個參數,是一個文件名 如:get_comment.php
$pager['start'] = ($page -1) * $size; ///查詢時的起始位置
$pager['page'] = $page; ///當前頁
$pager['size'] = $size; ///每頁顯示的記錄條數
$pager['record_count'] = $record_count; ///記錄總數
$pager['page_count'] = $page_count; ///總頁數
$_pagenum = 10; // 顯示的頁碼
$_offset = 2; // 當前頁偏移值
$_from = $_to = 0; // 開始頁, 結束頁
if($_pagenum > $page_count) ///若是顯示的頁碼 大於 總頁數,如:顯示10頁 總頁數爲8 則顯示1-8
{
$_from = 1; ///從1開始
$_to = $page_count; ///到 總頁數 爲止
}
else ///若是 顯示的頁碼 小於 總頁碼,如:顯示10頁 總頁數爲15
{///(1)假如當前頁爲2,則$_from爲0,$_to爲9 (2)假如當前頁爲6,則$_from爲4,$_to爲13
$_from = $page – $_offset; ;///(1)$_from爲0 (2)$_from爲4 當前頁-當前頁偏移量,如: 1-十、2-十一、3-十二、4-1三、5-1四、6-1五、不會出現7-1六、8-17,由於總頁數是15
$_to = $_from + $_pagenum – 1; ///(1)$_to爲9 (2)$_to爲13
if($_from < 1)
{
$_to = $page + 1 – $_from; ///(1)則$_to爲3
$_from = 1; ///(1)$_from從新複製爲1
if($_to – $_from < $_pagenum) //(1)3-1 小於 要顯示的頁碼數
{
$_to = $_pagenum; ///(1)則$_to從新複製爲10
}
}
elseif($_to > $page_count) //(2)若是13 大於 10的話 若是14 大於 10的話
{
$_from = $page_count – $_pagenum + 1; ///(2)$_from爲起始頁數:15-10+1=6
$_to = $page_count; //(2)$_to爲總頁數: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 數組裏麪包含了第一頁/末頁 、上一頁/下一頁 已經分頁顯示的碼數及地址,賦值到前端頁面便可實習自定義分頁!ui