Hugo Site.RegularPages 方法完全指南:遍历站点全部普通页面与默认排序规则

发布时间:2026/9/20 1:29:52

Hugo Site.RegularPages 方法完全指南:遍历站点全部普通页面与默认排序规则 开发工具前端CLI【免费下载链接】hugoThe world’s fastest framework for building websites.项目地址https://gitcode.com/gh_mirrors/hu/hugo点击查看免费下载Site.RegularPages是 Hugo 站点对象上用于获取当前语言下全部[普通页面]regular pages集合的方法返回类型为page.Pages。本文以 RegularPages 方法文档 为主体结合仓库源码site.go、hugo_sites.go与测试用例系统讲解其语义、模板用法、默认排序规则、排序方法链以及与Site.Pages、Page.RegularPages的差异帮助你在首页、列表页等模板中准确、高效地遍历全部正文页面。方法签名与返回值依据 RegularPages.md 的 front matter该方法的元数据为方法名RegularPages所属对象Site即模板中的.Site返回类型page.PagesHugo 的页面集合类型调用形式SITE.RegularPages在模板中的调用形式为{{ .Site.RegularPages }}。该方法在Site对象上的实现位于 hugolib/site.go// RegularPages returns all the regular pages. // This is for the current language only. func (s *Site) RegularPages() page.Pages { s.CheckReady() return s.pageMap.getPagesInSection( pageMapQueryPagesInSection{ Path: , KeyPart: global, Include: pagePredicates.ShouldListGlobal.And(pagePredicates.KindPage).BoolFunc(), Recursive: true, }, ) }从源码可以确认三个关键语义仅返回当前语言源码注释明确This is for the current language only返回的是当前语言站点的普通页面不会跨语言混合。递归收集查询参数Recursive: true表示从站点根Path: 向下递归收集所有普通页面而不是只取某一层。过滤条件Include中KindPage谓词限定只包含 kind 为page的页面排除了首页home、section、taxonomy、term 等其他页面种类这正是“普通页面”的定义所在。若需要在多语言站点中聚合所有语言的普通页面可使用AllRegularPages()site.go它内部调用HugoSites.RegularPages()hugo_sites.go将所有Site的结果合并后统一按默认顺序排序并通过cachePages缓存。什么是普通页面regular page在 Hugo 中页面page分为多种页面种类kinds首页home、分节页section、分类页taxonomy、术语页term和普通页面page。普通页面即那些由具体内容文件如contact.md、posts/hello.md渲染生成的正文页面它们不包含_index.md分支页面所代表的列表性质。Site.RegularPages与Site.Pages的核心区别在于参见 Pages.md方法返回内容适用场景Site.Pages当前语言下所有页面种类包括首页、section、taxonomy、term 和普通页面一般建议优先使用RegularPagesSite.RegularPages当前语言下全部普通页面列表页、RSS、站点地图等绝大多数正文遍历场景Site.Pages的实现同样位于 hugolib/site.go其Include使用ShouldListGlobal而未限定KindPage因此会包含所有页面种类。官方文档在 Pages.md 中明确建议“在大多数情况下你应该使用RegularPages方法替代”——这正体现了RegularPages作为最常用遍历入口的地位。模板中的基本用法Site.RegularPages返回一个page.Pages集合天然支持 Go 模板的range遍历。文档 RegularPages.md 给出的最基础用法{{ range .Site.RegularPages }} h2a href{{ .RelPermalink }}{{ .LinkTitle }}/a/h2 {{ end }}在 range 循环体内上下文切换到每一个普通页面对象因此可以访问页面的属性与方法{{ .RelPermalink }}输出页面相对永久链接{{ .LinkTitle }}输出链接标题默认取页面标题可配置。这是构建首页文章列表、博客归档页最常用的模式。结合Page.RegularPagespage/RegularPages.md可进一步理解当用于home、section、taxonomy、term这四类页面种类时Page.RegularPages返回的是当前节section内的普通页面而当用于Site对象时返回的是全站递归的所有普通页面——二者的区别正是Recursive: true与节内查询的差别。默认排序规则default sort order文档说明Site.RegularPages返回的集合遵循 Hugo 的 [default sort order]默认排序。该排序在Site.RegularPages查询返回后由 content_map_page.go 等处的page.SortByDefault应用其实现位于 resources/page/pages_sort.go// SortByDefault sorts pages by the default sort. func SortByDefault(pages Pages) { pageBy(DefaultPageSort).Sort(pages) }默认排序的优先级DefaultPageSort定义于pages_sort.go顶部依次为Weight权重front matter 中设置的weight值越小越靠前常用于手动固定顺序Date日期页面date较早的日期排在前面LinkTitle链接标题linkTitle缺省时回退到titlePath路径按内容文件路径排序作为最终稳定排序依据。例如在 hugo_smoke_test.go 中测试通过b.H.Sites[0].RegularPages()断言了多语言站点的普通页面数量161 与 158 个而 site_test.go 则验证了排序后首个页面标题为doc1这些测试都依赖默认排序的稳定性。使用排序方法改变顺序默认顺序不满足需求时可以对返回的page.Pages集合直接调用排序方法。文档 RegularPages.md 给出了按标题排序的示例{{ range .Site.RegularPages.ByTitle }} h2a href{{ .RelPermalink }}{{ .Title }}/a/h2 {{ end }}page.Pages提供了一整套排序方法详见 methods/pages/ 相关文档与 pages_sort.go常用包括排序方法排序依据源码位置ByTitle按标题排序pages_sort.goByLinkTitle按链接标题排序pages_sort.goByDate按日期排序pages_sort.goByPublishDate按发布日期排序pages_sort.goByWeight按权重排序pages_sort.goByExpiryDate、ByLastmod、ByLength、ByParam等按相应属性排序同文件后续定义值得注意的是排序方法的实现大多通过spc.get缓存如ByTitle的pageSort.ByTitle键同一接收者上重复调用会返回缓存结果且设计上可安全并行执行注释明确This may safely be executed in parallel。因此即使在同一模板中多次调用排序方法性能开销也很小。与其他方法的对比与最佳实践Site.RegularPages与Site.Pages如前所述Site.Pages返回全部页面种类包括首页、section、taxonomy、term 与普通页面。若在其上遍历渲染文章列表会把列表页本身也渲染成条目通常不符合预期。因此官方文档建议“在大多数情况下使用RegularPages”。Site.RegularPages与Page.RegularPagesSite.RegularPages递归返回全站所有语言当前语言的普通页面Page.RegularPages用于 home/section/taxonomy/term 页面返回当前节内的普通页面不递归到子节除非子目录没有_index.md而归属当前节。参考 page/RegularPages.md 的内容结构示例当lessons节下存在lesson-1/、lesson-2/等子目录时渲染lessons节页面时.RegularPages只返回grading-policy.md与lesson-plan.md而渲染lesson-2时由于resources/目录没有_index.md不是独立节其下的task-list.md、worksheet.md也属于lesson-2节会被一并返回。该文档还特别提示“当用于Site对象时RegularPages方法会递归返回站内所有普通页面”。RegularPagesRecursive若在节section页面上需要递归获取该节下所有子节的普通页面可参考Page.RegularPagesRecursivehugolib/page.go它对section与home种类使用Recursive: true递归查询对其他种类回退到RegularPages。实际应用场景首页文章列表最常用ul {{ range .Site.RegularPages }} lia href{{ .RelPermalink }}{{ .LinkTitle }}/a/li {{ end }} /ul按日期倒序的博客归档{{ range .Site.RegularPages.ByDate.Reverse }} h3a href{{ .RelPermalink }}{{ .Title }}/a/h3 p{{ .Date.Format 2006-01-02 }}/p {{ end }}Reverse是page.Pages提供的反转方法将默认升序改为降序。结合分页在列表模板中常与 pagination 结合{{ $paginator : .Paginate .Site.RegularPages }}随后range $paginator.Pages渲染分页后的页面集合。小结Site.RegularPages返回当前语言下全部普通页面递归收集、默认排序返回类型page.Pages模板中通过{{ range .Site.RegularPages }}遍历循环体内可访问各页面属性默认排序依次为 Weight → Date → LinkTitle → Path可用ByTitle、ByDate等排序方法改变顺序与Site.Pages、Page.RegularPages、AllRegularPages的区别要点已在上文表格中归纳。掌握Site.RegularPages是编写 Hugo 列表类模板的基础几乎所有需要“全站正文页面”的场景都能由此入口高效完成。赞分享开发工具前端CLI【免费下载链接】hugoThe world’s fastest framework for building websites.项目地址https://gitcode.com/gh_mirrors/hu/hugo点击查看免费下载相关推荐Hugo 页面集合排序方法 ByDate 完全指南按日期升序排序与 Reverse 降序实战Hugo 页面集合排序方法 ByDate 完全指南按日期升序排序与 Reverse 降序实战 ByDate 是 Hugo 模板系统中 Pages 集合类型的一开发工具前端CLIHugo 页面集合按内容长度排序PAGES.ByLength 方法完全指南Hugo 页面集合按内容长度排序PAGES.ByLength 方法完全指南 Pages.ByLength 是 Hugo 模板中用于将页面集合 page.Pa开发工具前端CLIHugo Page.RegularPages 方法完全指南section 内常规页面集合的获取、排序与底层实现Hugo Page.RegularPages 方法完全指南section 内常规页面集合的获取、排序与底层实现 导读 在 Hugo 模板开发中 Page.R开发工具前端CLI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/20 1:24:52

教育邮箱申请与Cursor Pro免费认证全攻略

1. 教育邮箱的价值与申请前的认知准备1.1 教育邮箱到底能做什么先把这个事情说透。EDU邮箱和EDU.CN邮箱,本质上是教育机构为在校师生提供的官方域名邮箱,后缀通常是xxx.edu.cn或者xxx.edu。它不只是一个收发邮件的工具,更像是一张“数字学生证…

2026/9/20 1:24:52

告别VMware:用Quickemu两行命令在Linux上跑macOS

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 1:24:52

Windows 11 WiFi图标消失?从服务到驱动的完整排查指南

最近一个月里,我已经帮三个朋友处理过同一个问题:Windows 11笔记本用着用着,右下角的WiFi图标突然消失了,任务栏只剩一个地球图标,点开设置发现连WLAN入口都没了。网上一搜,有人说是网卡烧了,有…

2026/9/20 6:40:05

端点安全必修课:从USB外设管控到网络综合联动

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 6:40:04

Lostlife2.0升级解析:EmotiVoice语音引擎整合与数据迁移实操指南

不用急着下载,先花两分钟搞清楚一件事:Lostlife2.0这次的升级,不是给你换了个皮肤,而是把整个语音交互底层换掉了。过去用1.x版本的老用户,进官网看到新版本第一反应多半是“我原来攒的配置、角色语音、对话记录还在不…

2026/9/20 6:40:04

2026年AI大模型应用开发全路径:RAG、Agent与工程落地实践

AI大模型应用开发这个方向,到2026年已经不再是“要不要做”的问题,而是“怎么做得更稳、更快、更有业务价值”的问题。我从2023年底开始接触大模型相关项目,2024年帮团队做了第一版知识库问答系统,2025年完整带过几条业务线的智能…

2026/9/20 0:04:49

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/20 0:04:49

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/20 0:04:49

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/20 0:04:49

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/20 4:54:47

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/20 5:01:23

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/20 5:09:33

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码