當前位置: 首頁> 最新文章列表> 在CMS中用array_slice 實現文章分類分頁

在CMS中用array_slice 實現文章分類分頁

gitbox 2025-05-26

一、分頁原理簡述

假設我們有一個數組,包含某個分類下的所有文章。分頁的核心是根據當前頁碼和每頁顯示的條數,從數組中截取對應的數據片段。

分頁參數通常包括:

  • $page :當前頁碼

  • $pageSize :每頁顯示的文章數

  • $offset :偏移量,計算方式是($page - 1) * $pageSize

利用array_slice ,我們可以從文章數組中截取$offset開始的$pageSize條文章,從而實現分頁。


二、代碼示例

下面是一個簡單示例,展示如何用array_slice實現文章分類分頁。

 <?php
// 模擬分類下所有文章數組
$articles = [
    ['id' => 1, 'title' => '文章一', 'category' => '科技'],
    ['id' => 2, 'title' => '文章二', 'category' => '科技'],
    ['id' => 3, 'title' => '文章三', 'category' => '生活'],
    ['id' => 4, 'title' => '文章四', 'category' => '科技'],
    ['id' => 5, 'title' => '文章五', 'category' => '生活'],
    ['id' => 6, 'title' => '文章六', 'category' => '科技'],
    ['id' => 7, 'title' => '文章七', 'category' => '科技'],
];

// 選擇分類
$category = '科技';

// 過濾出當前分類的文章
$categoryArticles = array_filter($articles, function ($article) use ($category) {
    return $article['category'] === $category;
});

// 重建索引,方便使用 array_slice
$categoryArticles = array_values($categoryArticles);

// 當前頁碼,從 URL 獲取,默認第 1 頁
$page = isset($_GET['page']) ? max(1, intval($_GET['page'])) : 1;

// 每頁显示文章数
$pageSize = 3;

// 計算偏移量
$offset = ($page - 1) * $pageSize;

// 截取当前頁的文章
$currentPageArticles = array_slice($categoryArticles, $offset, $pageSize);

// 输出当前頁文章
foreach ($currentPageArticles as $article) {
    echo "<h3>" . htmlspecialchars($article['title']) . "</h3>";
}
?>

三、分頁導航的簡單實現

分頁不僅要顯示內容,還要給用戶提供切換頁面的導航。可以基於總文章數計算總頁數,並動態生成分頁鏈接。

 <?php
$totalArticles = count($categoryArticles);
$totalPages = ceil($totalArticles / $pageSize);

for ($i = 1; $i <= $totalPages; $i++) {
    if ($i == $page) {
        echo "<strong>$i</strong> ";
    } else {
        echo "<a href=\"http://gitbox.net/yourcms?page=$i\">$i</a> ";
    }
}
?>

這裡用到了http://gitbox.net作為示例域名,您可以根據實際情況替換。


四、總結

利用PHP 的array_slice函數,可以非常方便地實現數組數據的分頁,適用於分類文章的分頁展示。關鍵在於正確計算偏移量,結合分類過濾後對數組進行切片。再加上簡單的分頁導航,即可滿足大多數CMS 對文章分類分頁的需求。

這種方法不依賴數據庫分頁,適合數據量較小或已將數據預先加載到數組中的場景。對於數據量大時,建議使用數據庫的分頁查詢提高效率。