import('ORG.Util.Page');
$db = M('article');
$where = ['status' => 1];
$count = $db->where($where)->count();
$page = new Page($count, 10); // 每頁 10 筆
$limit = $page->firstRow . ',' . $page->listRows; // "0,10"
$list = $db->where($where)->limit($limit)->select();
$this->assign('list', $list);
$this->assign('page', $page->show()); // 輸出分頁 HTML
$this->display();
<div class="pagination">
{$page}
</div>
show() 會輸出類似:<a href="?p=1">1</a> <span>2</span> <a href="?p=3">3</a> ...
$Model = new Model();
$sql = "SELECT id, title FROM __PREFIX__article WHERE status=1 LIMIT {$page->firstRow}, {$page->listRows}";
$list = $Model->query($sql);
$page = new Page($count, 15);
$page->parameter = 'cid=5&type=hot'; // 額外 URL 參數
$page->rollPage = 5; // 顯示頁碼數量
$page->setConfig('header', '筆記錄');
$page->setConfig('prev', '上一頁');
$page->setConfig('next', '下一頁');
$page->setConfig('first', '首頁');
$page->setConfig('last', '末頁');
$page->setConfig('theme', '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
$list = $db->where($where)->limit($limit)->select();
// 例如:格式化時間、截取摘要
foreach ($list as &$v) {
$v['create_time'] = date('Y-m-d H:i', $v['create_time']);
$v['summary'] = msubstr($v['content'], 0, 100);
}
$this->assign('list', $list);
<script>
$('.pagination a').on('click', function(e) {
e.preventDefault();
var url = $(this).attr('href');
$.get(url, function(html) {
$('#list-container').html(html); // 後端返回局部模板片段
});
});
</script>
後端判斷 IS_AJAX 返回 $this->fetch('partial_list')。
URL_MODEL 設定(0/1/2/3)與 show() 生成的連結一致。if ($count) { $page = new Page(...); }。EXPLAIN 優化索引、或緩存總數。