Created
August 7, 2011 14:23
-
-
Save gomasaba/1130409 to your computer and use it in GitHub Desktop.
Codeigniter2.0.1でpaginationをpagerにしてみるメモ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
require_once 'Pager.php'; | |
class MY_Pagination{ | |
var $params = array( | |
'mode' => 'sliding', | |
'perPage' => 10, | |
'delta' => 4,//現在のページの前後に表示するページ番号の数 | |
'separator' => '', | |
'curPageLinkClassName' => 'current', | |
'prevImg' => '« 前へ', | |
'nextImg' => '次へ »', | |
'totalItems' => 0,//ページ付けするアイテムの数を指定 | |
'urlVar' =>'page', | |
'path' =>'', | |
'append' => true, | |
'fileName' => '', | |
'fixFileName' =>false, | |
'importQuery' =>false, | |
'extraVars' =>array(), | |
); | |
function get_page_num() | |
{ | |
parse_str($_SERVER['QUERY_STRING'],$get); | |
if(array_key_exists('page', $get)){ | |
$num = intval($get['page']); | |
//or | |
// $Security = new CI_Security(); | |
// $num = $Security->xss_clean($page['page']); | |
}else{ | |
$num = 1; | |
} | |
return $num; | |
} | |
/** | |
* Initialize Preferences | |
* | |
* @access public | |
* @param array initialization parameters | |
* @return void | |
*/ | |
function initialize($params = array()) | |
{ | |
if(!array_key_exists('path', $params)){ | |
$this->params['path'] = base_url(); | |
} | |
if(!array_key_exists('fileName', $params)){ | |
$this->params['fileName'] = uri_string(); | |
} | |
$this->params = $params + $this->params; | |
} | |
function create_links() | |
{ | |
$pager = Pager::factory($this->params); | |
$links = $pager->getLinks(); | |
$page_range = $pager->getPageRangeByPageId(); | |
$page_range = range($page_range[0], $page_range[1]); | |
$link = ''; | |
if ($links['pages'] != '') { | |
// 前のページ | |
if ($links['back'] != '') { | |
// クラスを付ける | |
$link .= str_replace('<a href','<a class="nextprev" href', $links['back']); | |
} else { | |
$link .= '<span class="nextprev">'.$pager->getOption('prevImg').'</span>'; | |
} | |
// 最初のページ | |
if ($links['first'] != '' && !in_array(1, $page_range)) { | |
$link .= $links['first'].'<span>....</span>'; | |
} | |
// ページ | |
$link .= $links['pages']; | |
// 最後のページ | |
if ($links['last'] != '' && !in_array($pager->numPages(), $page_range)) { | |
$link .= '<span>....</span>'.$links['last']; | |
} | |
// 次のページ | |
if ($links['next'] != '') { | |
// クラスを付ける | |
$link .= str_replace('<a href', '<a class="nextprev" href', $links['next']); | |
} else { | |
$link .= '<span class="nextprev">'.$pager->getOption('nextImg').'</span>'; | |
} | |
} | |
return str_replace(' ','',$link); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment