117、【Ubuntu】【Hugo】首页板块配置:Branch Bundle

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Ubuntu】【Hugo】首页板块配置:Leaf Bundle

分析了首页展示的内容类型,以及 Leaf Bundle 的详细定义,下面继续分析

搭建私人博客

OK,介绍完 Leaf Bundle,继续看 Branch Bundle,Branch Bundle 是首页板块配置里的核心概念 ,其官方描述如下 https://gohugo.io/content-management/page-bundles/#branch-bundles

Branch Bundle 是一个包含 _index.md 文件的目录注意,这里是下划线开头 _index.md,不是 Leaf Bundle 里面那样的 index.md ),这个 Branch Bundle 可以包含其他资源文件,比如 .md,图片等,也可以包含子目录,这些子目录可以是其他 Branch Bundles(带 _index.md 的目录),也可以是 Leaf Bundles(包含 index.md 的叶子目录),Branch Bundle 就像树的一根枝干,这跟枝干可以继续分叉,有后代

Branch Bundle 和 Leaf Bundle 的对比如下

  • Leaf Bundle:内含 index.md,不能有子目录,属于叶子,末端
  • Branch Bundle:内含 _index.md,可以有子目录,属于枝干,可以继续生长

OK,下面看示例如下

bash 复制代码
content/
├── branch-bundle-1/
│   ├── _index.md
│   ├── content-1.md
│   ├── content-2.md
│   ├── image-1.jpg
│   └── image-2.png
├── branch-bundle-2/
│   ├── a-leaf-bundle/
│   │   └── index.md
│   └── _index.md
└── _index.md

这里一共有 3 个 Branch Bundles:

  • 首页 Home Page:路径 content/_index.md,是顶级的 Branch Bundle,其包含两个子 Branch Bundles:branch-bundle-1 和 branch-bundle-2,本身没有额外的资源(比如图片,附件啥的没有)
  • branch-bundle-1:有 _index.md,是 branch bundle,包含资源 content-1.mdcontent-2.md(Page 类型资源),和 image-1.jpgimage-2.png(图片资源),没有子目录
  • branch-bundle-2:有 _index.md,是 branch bundle,包含一个子目录 a-leaf-bundle/(里面有 index.md,所以是 Leaf Bundle),说明 Branch Bundle 里可以包含 Leaf Bundle

OK,上面介绍了 Home Page,里面提到了顶级的 Branch Bundle,不过可惜,即使定义了 content/_index.md,也需要配合模板或者主题进行使用,而 PaperMod 并没有在 Home Page 首页,去处理这个顶级的 Branch Bundle,所以如果想在首页实现 Branch Bundle 的板块功能,需要用户自己稍微调整一下模板实现

在介绍模板实现之前,先来看下 Hugo 模板系统是如何工作的,这里涉及到 Hugo 的模板继承机制和 PaperMod 的设计哲学,Hugo 默认首页的渲染流程优先级如下

  • 查找 layouts/index.html,如果找到,就用
  • 找不到的话,就查找 layouts/_default/list.html
  • 如果还没有的话,就是用 PaperMod 主题提供的 themes/PaperMod/layouts/_default/list.html

而 PaperMod 没有 index.html,而是通过 list.html 实现了默认首页 ,关于这块模板系统的工作原理,可以参考官方描述 https://gohugo.io/templates/lookup-order/?spm=5176.28103460.0.0.5efd7551qOOnnF这里详细描述了 Hugo 模板的查找顺序,解释了 Hugo 如何为一个页面选择最合适的模板文件

Hugo 在渲染某个页面(比如首页 /,文章页 /ubuntu/hello,分类页 categories/hugo/)时,会按照一套规则去查找模板(最具体 most specific → 最通用 most common

  • 最具体:只适用于当前页面的模板,比如 layout/ubuntu/single.html
  • 最通用:适用于所有页面的默认模板,比如 layout/_default/single.html

Hugo 一旦找到第一个匹配的模板,就立刻使用这个匹配上的模板,不再继续往下查找了


OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Ubuntu】【Hugo】首页板块配置:Template Lookup Order(.Kind)

相关推荐
运维行者_1 天前
网络监控方案从零开始 -- 企业级完整指南
大数据·运维·服务器·网络·数据库·人工智能·自动化
坐吃山猪1 天前
Python进度条
linux·服务器·python
IMPYLH1 天前
Linux 的 b2sum 命令
linux·运维·服务器·bash
renhongxia11 天前
PostTrainBench:LLM 代理能否自动化 LLM 后培训?
运维·人工智能·深度学习·机器学习·架构·自动化·transformer
celeste03101 天前
Redis Summary
linux·运维·服务器·redis·笔记
Sylvan.C1 天前
Windows+Ubuntu 双系统安装超详细保姆级教程2026,包括系统安装、英伟达独显驱动安装以及双系统时间同步的所有过程
linux·运维·ubuntu
星辰徐哥1 天前
鸿蒙金融理财全栈项目——上线与运维、用户反馈、持续迭代
运维·金融·harmonyos
伴我与影1 天前
Ubuntu 安装 NVIDIA 显卡驱动
linux·运维·ubuntu
unsynchronized1 天前
OpenClaw 安装指南:Linux 与 Windows 系统详细教程
linux·运维·windows·ai
A10169330711 天前
Nginx 之Rewrite 使用详解
运维·nginx