修改Hugo easy-gallery短码:引用Leaf Bundle内图片目录
修改hugo-easy-gallery短码读取Leaf Bundle内图片目录的步骤
1. 定位短码文件
找到项目中hugo-easy-gallery的短码文件,路径通常是layouts/shortcodes/gallery.html。如果短码存放在主题目录下,建议先将其复制到项目根目录的layouts/shortcodes/文件夹后再修改,避免主题更新覆盖自定义内容。
2. 修改目录读取逻辑
找到短码中获取图片目录的代码段,替换为以下内容:
{{ $dir := .Get "dir" }} {{/* 获取当前Leaf Bundle所在的目录路径 */}} {{ $pageDir := .Page.File.Dir }} {{/* 拼接bundle内目标图片文件夹的完整项目相对路径 */}} {{ $fullDir := printf "%s%s" $pageDir $dir }} {{/* 读取目标文件夹内的文件 */}} {{ $files := readDir $fullDir }}
注:如果原代码有判断
$dir是否为空的逻辑,保留即可,仅替换路径拼接和文件读取的部分。
3. 修改图片URL生成逻辑
找到短码中生成图片<img>标签src属性的代码,将原基于/static/的路径替换为当前页面路径的相对URL:
{{/* 替换原src生成逻辑,指向bundle内的图片 */}} <img src="{{ printf "%s%s/%s" .Page.RelPermalink $dir $file.Name | relURL }}" alt="{{ $file.Name }}" <!-- 保留原有的class、data-src等其他属性 --> >
如果短码包含缩略图生成逻辑(如使用Process处理图片),需调整资源获取方式,改用resources.Get从当前bundle目录读取:
{{ $imgPath := printf "%s%s/%s" $pageDir $dir $file.Name }} {{ $img := resources.Get $imgPath }} {{ $thumb := $img.Resize "300x" }} <img src="{{ $thumb.RelPermalink }}" alt="{{ $file.Name }}">
4. 测试验证
在Leaf Bundle的_index.md中使用短码:
{{< gallery dir="image-gallery-2" />}}
运行hugo server启动本地服务,检查画廊是否正常加载目标文件夹内的图片。
内容的提问来源于stack exchange,提问作者burnt-board
相关产品推荐
相关产品推荐

