惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
雷峰网
雷峰网
Google DeepMind News
Google DeepMind News
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
MongoDB | Blog
MongoDB | Blog
V
V2EX
博客园 - 【当耐特】
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
I
InfoQ
Martin Fowler
Martin Fowler
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog
B
Blog
V
Visual Studio Blog
D
DataBreaches.Net
C
Check Point Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
F
Fortinet All Blogs

winegrower | 种葡萄并酿酒的人

职业生涯也就如此了 漫步足迹功能 - winegrower 漫步足迹功能 上山老虎 - winegrower 上山老虎 归档页面调整 什么是幸福感? - winegrower 什么是幸福感? 又是一个夜晚 - winegrower 又是一个夜晚 葡萄酒香气轮 - winegrower 修改博客主题 - winegrower 修改博客主题 端午安康 - winegrower | 种葡萄并酿酒的人 端午安康 最近在折腾电脑 - winegrower | 种葡萄并酿酒的人 最近在折腾电脑 重要而敏感的话题 - winegrower | 种葡萄并酿酒的人 重要而敏感的话题 偶尔的闲暇时光 - winegrower | 种葡萄并酿酒的人 偶尔的闲暇时光 永久的博客 - winegrower | 种葡萄并酿酒的人 永久的博客 以后得早睡 - winegrower | 种葡萄并酿酒的人 以后得早睡 折腾10年前的网站 - winegrower | 种葡萄并酿酒的人 折腾10年前的网站 Openclaw发布测试 - winegrower | 种葡萄并酿酒的人 Openclaw发布测试 2026年春节假期旅行 - winegrower | 种葡萄并酿酒的人
归档页面调整 - winegrower
winegrower · 2026-07-11 · via winegrower | 种葡萄并酿酒的人

今天调整了 归档页面,正常归档页面 archive 都是每页显示 固定数量的文章,这样的话每个页面可能会包含的多个年份的文章,或者一个年份的文章分布在不同页面。

因为我的博客是个人博客,而且从2008年开始,几乎每年都会写文章,如果archive 页面不管一年有多少文章,按年份显示,这样更方便查阅自己的过去。

实现原理总结

目标
将归档页面从「每页显示 N 篇文章」改为「每页显示一整年的所有文章」,即 page=1 对应最近一年,page=2 对应次近一年,以此类推。
关键改动

  1. 数据获取方式不变,但处理逻辑重写
    之前是:取全部文章 → 按文章数量分页(每页 20 篇)→ 循环输出,遇到不同年份就插一个年份标题。
    现在是:取全部文章 → 按年份分组存入数组 → 年份去重并倒序排列 → page=N 映射到第 N 个年份 → 输出该年的所有文章。
  2. 核心数据结构

// 两层结构:年份 → 该年的文章列表

$postsByYear['2026'] = [
    ['permalink' => '...', 'title' => '文章名', 'created' => 1234567890],
      ...
  ];
  $postsByYear['2025'] = [
      ...
  ];

// 独立的年份数组(去重+按从新到旧排序)

$yearOrder = ['2026', '2025', '2024', ...];
  1. 年份映射公式
    ┌────────┬──────────────────────────┐
    │ 页码 │ 对应年份 │
    ├────────┼──────────────────────────┤
    │ page=1 │ $yearOrder[0] → 最新年份 │
    ├────────┼──────────────────────────┤
    │ page=2 │ $yearOrder[1] → 次新年份 │
    ├────────┼──────────────────────────┤
    │ page=N │ $yearOrder[N-1] │
    └────────┴──────────────────────────┘
    这样每一页就是完整的一年,年份数量就是总页数。

最后更新于 2026-07-11