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

推荐订阅源

The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
V
Visual Studio Blog
T
The Blog of Author Tim Ferriss
爱范儿
爱范儿
Vercel News
Vercel News
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Y
Y Combinator Blog
Blog — PlanetScale
Blog — PlanetScale
D
DataBreaches.Net
美团技术团队
Microsoft Security Blog
Microsoft Security Blog
大猫的无限游戏
大猫的无限游戏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
GbyAI
GbyAI
A
About on SuperTechFans
云风的 BLOG
云风的 BLOG
The Cloudflare Blog
宝玉的分享
宝玉的分享
V
V2EX
Microsoft Azure Blog
Microsoft Azure Blog

winegrower | 种葡萄并酿酒的人

漫步足迹功能 - winegrower 上山老虎 - winegrower 什么是幸福感? - winegrower 又是一个夜晚 - winegrower 葡萄酒香气轮 - winegrower 修改博客主题 - winegrower 端午安康 - winegrower | 种葡萄并酿酒的人 最近在折腾电脑 - winegrower | 种葡萄并酿酒的人 重要而敏感的话题 - winegrower | 种葡萄并酿酒的人 偶尔的闲暇时光 - winegrower | 种葡萄并酿酒的人 永久的博客 - winegrower | 种葡萄并酿酒的人 以后得早睡 - winegrower | 种葡萄并酿酒的人 折腾10年前的网站 - winegrower | 种葡萄并酿酒的人 Openclaw发布测试 - winegrower | 种葡萄并酿酒的人 2026年春节假期旅行 - winegrower | 种葡萄并酿酒的人 节前的最后一天上班 - winegrower | 种葡萄并酿酒的人 今年春节不回老家 - 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