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)

相关推荐
大树8810 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠10 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质11 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush411 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行52011 小时前
Linux 11 动态监控指令top
linux
Inhand陈工12 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智12 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩12 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_12 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
古城小栈12 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix