116、【Ubuntu】【Hugo】首页板块配置:Leaf Bundle

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

背景

上篇 blog
【Ubuntu】【Hugo】搭建私人博客:搜索功能配置

分析了搜索功能的配置,以及搜索功能关键的索引文件 index.json,下面继续分析下一个功能项(首页板块功能)

搭建私人博客

首先来看下当前首页的情况

可以看到,首页空空如也,只有欢迎信息,只有进入到全部分类,才能看到编辑了的文章

OK,先来分析首页的渲染机制,首页内容一般是 Hugo 的内容组织机制(Hugo 本身默认行为,通用性)和主题配置共同作用的结果(主题行为,特殊性)

首先,首页 Homepage 是一个特殊的 section,其首页模板是 layouts/index.html (不过 PaperMod 并没有使用 index.html 作为其首页模板内容,这个后面再分析),Hugo 本身不会自动决定哪些文章要显示在首页,这完全由用户写的模板,或者使用的主题决定

默认情况下,Hugo 只渲染 content/ 下的叶子 Bundle 或特定内容到首页(当然,这些叶子 Bundle 也需要模板配合用户设置进行实现),Hugo 首页一般只会显示

  • content/index.md(首页专用)
  • Leaf Bundle(具体的文章)
  • Branch Bundle(某一板块)
  • hugo.toml 中配置的菜单项 [[menu.main]]

关于 Page Bundle 的内容,之前 blog 【Ubuntu】【Hugo】搭建私人博客:Page Bundle 已经介绍过,Leaf Bundle 和 Branch Bundle 都是 Page Bundle 的子集

下面来说下 Leaf Bundle,关于 Leaf Bundle 的官方描述如下 https://gohugo.io/content-management/page-bundles/#leaf-bundles

在 Hugo 中,Leaf Bundle 是一个文件夹,里面可以包含其他资源文件(比如图片,附件,额外的 Markdown 文件等),也可以不包含,但必须包含一个 index.md 文件 ,另外,也不能包含其他子文件夹(即不能再有子 bundle),因为 Leaf Bundle 已经是叶子了,没有后代,就好比一棵树,branch 枝干可以继续分叉,但 leaf 叶子是末端,不能再长出新的,示例如下

bash 复制代码
content/
├── about
│   └── index.md
├── posts
│   ├── my-post
│   │   ├── content-1.md
│   │   ├── content-2.md
│   │   ├── image-1.jpg
│   │   ├── image-2.png
│   │   └── index.md
│   └── my-other-post
│       └── index.md
└── another-section
    ├── foo.md
    └── not-a-leaf-bundle
        ├── bar.md
        └── another-leaf-bundle
            └── index.md

在这里,总共有 4 个 Leaf Bundles:

  • about:有 index.md,无子目录
  • my-post:有 index.md + 其他资源
  • my-other-post:只有 index.md
  • another-leaf-bundle:有 index.md,且无子目录

另外,关于 Bundle 中的资源,比如在 my-post 这个 Leaf Bundle 中,除了 index.md,还有

  • content-1.md,content-2.md 等被 Hugo 视为 page 类型资源(page 资源不会单独生成网页,但可以通过 .Resources 在模板中被调用)
  • image-1.jpg,image-2.png 等被视为 image 类型资源,同样可以通过 .Resources 进行访问

可以看到,这些额外的 .md 文件不会被 Hugo 单独渲染成独立页面,只是属于该 Bundle 下的附属资源

总结几个 Leaf Bundle 的特点

  • Leaf Bundle = 文件夹 + index.md
  • 不能包含子 Bundle(即其子文件夹里不能还有 index.md)
  • 可以放在 content/ 目录下的任意深度(比如 content/a/b/c/index.md 也是合法的 Leaf Bundle)
  • 里面的非 index.md 文件都属于资源,不是独立页面

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

相关推荐
且从容.2 小时前
Ubuntu 安装 Docker
linux·ubuntu·docker
承渊政道1 天前
Linux网络学习【深入理解多路转接select、poll的代码改写】
linux·ubuntu·select·多路转接·poll
沫璃染墨2 天前
从零入门计算机网络系列(十二):HTTP长连接与会话管理详解——从Connection到Cookie与Session
linux·服务器·c++·tcp/ip·ubuntu·http·交互
longzhizhui9262 天前
Ubuntu 全版本 CVE-2026-98432 内核安全升级操作手册
ubuntu·网络安全·云计算·bash
OPEN-F2 天前
Ubuntu 自动登录后 GNOME 远程桌面连不上?一次登录钥匙环锁定的排查与永久修复
linux·运维·ubuntu
A7bert7772 天前
【MobileSAM部署至RK3588】环境适配→转换RKNN→开发板部署
c++·人工智能·深度学习·目标检测·ubuntu
用户4107192013253 天前
用 systemd 从零做一个系统健康巡检服务:脚本、沙箱与磁盘满排查实战
linux·ubuntu
Linux-lucky3 天前
46-Linux学习之旅之LVS负载均衡与keepalived高可用
linux·运维·学习·ubuntu·负载均衡·lvs
wzg20163 天前
ubuntu通过docker镜像部署安装onlyoffice
linux·ubuntu·docker
Sw1zzle3 天前
Go入门(零):Linux Ubuntu 22.04 安装 Go
linux·ubuntu·golang