PEAR Pager 是功能強大、彈性極高的 PHP 分頁類,支援多種分頁模式、自訂連結格式,能滿足各種專案需求。
<?php
require_once 'Pager/Pager.php';
$params = array(
'mode' => 'Jumping', // 或 'Sliding'
'perPage' => 3, // 每頁筆數
'delta' => 2, // 顯示頁碼範圍
'itemData' => array('a','b','c','d','e', /* ... */ 'z')
);
$pager = & Pager::factory($params);
$data = $pager->getPageData(); // 當前頁資料
$links = $pager->getLinks(); // 取得連結陣列
// $links 包含: back, pages, next, first, last, all
echo $links['all']; // 輸出所有分頁連結
echo $pager->linkTags; // 輸出 <link rel="first|prev|next|last"> 標籤
echo 'PAGED DATA: '; print_r($data);
// 常用方法
echo 'Current Page: '; var_dump($pager->getCurrentPageID());
echo 'Next Page: '; var_dump($pager->getNextPageID());
echo 'Prev Page: '; var_dump($pager->getPreviousPageID());
echo 'Total Items: '; var_dump($pager->numItems());
echo 'Total Pages: '; var_dump($pager->numPages());
?>
若使用 Apache Rewrite 將動態網址偽靜態化,例如:
RewriteRule ^articles/([a-z]{1,12})/art([0-9]{1,4})\.html$ /article.php?num=$2&month=$1 [L]
Pager 可透過 urlVar 參數適配:
<?php
require_once 'Pager/Pager.php';
// 第一個分頁器
$params1 = array(
'perPage' => 3,
'urlVar' => 'pageID_articles', // 第一個識別碼
'itemData' => $someArray
);
$pager1 = & Pager::factory($params1);
$data1 = $pager1->getPageData();
$links1 = $pager1->getLinks();
// 第二個分頁器(同頁多組分頁)
$params2 = array(
'perPage' => 8,
'urlVar' => 'pageID_news', // 第二個識別碼
'itemData' => $someOtherArray
);
$pager2 = & Pager::factory($params2);
$data2 = $pager2->getPageData();
$links2 = $pager2->getLinks();
?>
透過參數配置,即可將 /articles/march/art15.html 對應至 /article.php?num=15&month=march。
Pager 可繼承擴充,例如自訂 Pager::Pathing() 實現路徑式分頁,滿足特殊 SEO 需求。