Hugo 短代码中的 .Site:详解 SHORTCODE.Site 方法及 Site 对象全能力
Hugo 短代码中的 .Site详解 SHORTCODE.Site 方法及 Site 对象全能力【免费下载链接】hugoThe world’s fastest framework for building websites.项目地址: https://gitcode.com/gh_mirrors/hu/hugo导读在 Hugo 短代码Shortcode模板中SHORTCODE.Site是获取当前站点Site对象的统一入口它返回包裹后的page.siteWrapper对象让你在短代码内部也能访问站点的标题、配置参数、页面集合、菜单、多语言信息等全部站点级数据。本文以 Hugo 官方方法参考页为基础结合源码实现hugolib/shortcode.go 与 resources/page/site.go讲解其用法、返回类型、Site 接口的完整方法清单与实战示例帮助你在自定义短代码中正确、高效地使用站点数据。SHORTCODE.Site 是什么在短代码上下文中.Site代表当前正在渲染的站点。它的官方签名与返回类型如下项目值方法名SHORTCODE.Site签名SHORTCODE.Site返回类型page.siteWrapper从源码可以确认其调用链。在 hugolib/shortcode.go#L113-L116 中// Site returns information about the current site. func (scp *ShortcodeWithPage) Site() page.Site { return scp.Page.Site() }也就是说短代码的.Site最终委托给当前页面Page的Site()方法返回两者指向同一个站点对象——因此在短代码中访问的.Site与页面模板Layout中访问的.Site是等价的。基本用法文档给出的最小示例是在短代码模板中输出站点标题{{ .Site.Title }}把这段代码放入layouts/shortcodes/下的任意短代码模板例如layouts/shortcodes/sitetitle.html然后在内容文件中通过{{ sitetitle }}或{{% sitetitle %}}调用即可在页面中渲染出config配置里title字段的值。由于返回对象是站点级数据容器它支持的远不止标题所有 Site methods 都可以通过.Site链式调用。返回类型 siteWrapper 与 Site 接口的源码印证文档标注的返回类型page.siteWrapper定义在 resources/page/site.go#L161-L170type siteWrapper struct { s Site } func WrapSite(s Site) Site { if s nil { panic(Site is nil) } return siteWrapper{s: s} }siteWrapper是一个薄包装器内部持有一个Site接口实例并将方法逐一转发。它实现了 resources/page/site.go#L37-L138 中定义的完整Site接口同时额外实现了identity.ForEeachIdentityByNameProvider见 resources/page/site.go#L158-L159供 Hugo 内部的依赖追踪使用。对模板作者而言可以把.Site理解为当前站点的只读快照无论站点如何被包装最终调用都会落到同一份站点数据上。Site 接口的完整方法清单Site接口是.Site可用方法的权威依据。按功能分类如下方法名后为返回值类型均见 resources/page/site.go#L37-L138站点基本信息Title()→string站点标题等价于配置中的titleBaseURL()→string站点基地址Copyright()→string版权信息Lastmod()→time.Time内容最后修改时间ServerPort()→inthugo server的监听端口Hugo()→HugoInfo构建信息结构体Config()→SiteConfig站点配置String()→string站点字符串表示不保证稳定站点配置与数据Params()→hmaps.Params站点[params]配置Param(key any)→(any, error)按键查询参数支持点路径如.Site.Param foo.barData()→map[string]anydata/目录下所有数据文件的合并结果Store()→*hstore.Scratch站点级临时存储页面集合Pages()→Pages本站全部页面RegularPages()→Pages本站全部普通内容页AllPages()→Pages所有语言下的全部页面Sections()→Pages顶层栏目SectionHome()→Page首页页面对象GetPage(ref ...string)→(Page, error)按引用路径解析页面MainSections()→[]string主要栏目路径列表多语言与多站点Language()→*langs.Language当前语言对象含Lang、Locale、Weight等字段Languages()→langs.Languages全部已配置语言LanguagePrefix()→string当前语言的前缀如/zh/Sites()→Sites全部站点各语言各维度Current()→Site当前正在渲染的站点IsDefault()→bool是否为默认站点Dimension(string)→SiteDimension按语言/版本/角色维度获取站点Role()→roles.Role站点角色Version()→versions.Version站点版本导航与分类Menus()→navigation.Menus站点菜单Taxonomies()→TaxonomyList分类Taxonomy映射已弃用方法BuildDrafts()→bool已弃用将在未来版本移除LanguageCode()→string已弃用应改用.Site.Language.Locale见下文实战示例1. 输出站点标题与版权layouts/shortcodes/sitefooter.htmlfooter p{{ .Site.Title }} copy; {{ now.Year }}/p /footer2. 读取站点自定义参数假设hugo.toml中配置了[params] author Hugo Dev github https://github.com/gohugoio短代码中读取{{ with .Site.Params.author }} meta nameauthor content{{ . }} {{ end }}3. 遍历站点菜单ul {{ range .Site.Menus.main }} lia href{{ .URL }}{{ .Name }}/a/li {{ end }} /ul4. 多语言场景下输出当前语言html lang{{ .Site.Language.Lang }}注意官方文档特别提示.Site.LanguageCode已弃用。源码 resources/page/site.go#L228-L231 中可以看到它会在调用时输出弃用警告并建议改用.Site.Language.Localefunc (s *siteWrapper) LanguageCode() string { hugo.DeprecateWithLogger(.Site.LanguageCode, Use .Site.Language.Locale instead., v0.158.0, s.s.Language().Logger()) return s.s.Language().Locale() }5. 在短代码中解析页面引用{{ $page : .Site.GetPage /about }} {{ if $page }}a href{{ $page.RelPermalink }}{{ $page.Title }}/a{{ end }}使用注意作用域SHORTCODE.Site在短代码模板中以.Site形式访问等价于页面模板中的.Site二者指向同一站点对象。只读访问siteWrapper仅提供读取方法站点数据由 Hugo 构建引擎统一管理模板侧不应尝试修改。已弃用 API.Site.LanguageCode与.Site.BuildDrafts均为弃用状态新代码请分别使用.Site.Language.Locale与不依赖构建标志的写法。延伸阅读站点方法总览Site methods 索引各方法独立参考页Title、Params、Param、Menus、Language、Languages、Data、GetPage、Pages、RegularPages、AllPages、Sections、Home、Sites、Taxonomies、Config、Hugo、BaseURL、Store 等页面上的.Site方法Page.Site 参考页源码实现ShortcodeWithPage.Site()、Site 接口与 siteWrapper【免费下载链接】hugoThe world’s fastest framework for building websites.项目地址: https://gitcode.com/gh_mirrors/hu/hugo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

yuzu Switch模拟器完整入门指南:安装、手柄与画质排障

yuzu Switch模拟器完整入门指南:安装、手柄与画质排障

yuzu Switch模拟器完整入门指南:安装、手柄与画质排障 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu yuzu 是一款开源的 Nintendo Switch 模拟器,能在 Windows、Linux 和 Android 上运行大…

2026/9/19 21:54:50 阅读更多 →
Alpine.js 异步函数完全指南:在指令中使用 `await` 与 async 表达式

Alpine.js 异步函数完全指南:在指令中使用 `await` 与 async 表达式

Alpine.js 异步函数完全指南:在指令中使用 await 与 async 表达式 【免费下载链接】alpine A rugged, minimal framework for composing JavaScript behavior in your markup. 项目地址: https://gitcode.com/gh_mirrors/al/alpine 本篇指南围绕 Alpine.js …

2026/9/19 21:54:50 阅读更多 →
Open Code Review:一种可验证的开放代码审查协议栈

Open Code Review:一种可验证的开放代码审查协议栈

1. “open-code-review”不是工具名,而是正在发生的协作范式迁移最近在几个开源项目里做贡献时,我明显感觉到一种变化:PR(Pull Request)页面里不再只有“Approve”“Comment”“Request Changes”三个按钮,…

2026/9/19 21:54:50 阅读更多 →

最新新闻

PTO TPARTMIN 指令全解析:CANN pto-isa 中基于有效区域(valid region)的逐元素最小值选择

PTO TPARTMIN 指令全解析:CANN pto-isa 中基于有效区域(valid region)的逐元素最小值选择

PTO TPARTMIN 指令全解析:CANN pto-isa 中基于有效区域(valid region)的逐元素最小值选择 【免费下载链接】pto-isa Parallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-l…

2026/9/19 22:40:13 阅读更多 →
Python爬虫入门:Requests库HTTP请求与响应处理详解

Python爬虫入门:Requests库HTTP请求与响应处理详解

简介:这份完整版Python网络爬虫系列课程的第一讲,聚焦Requests库入门,面向零基础开发者,适合系统学习数据采集与信息提取技术。课件从HTTP请求动作切入,逐一说明构造请求、获取网页、提交表单等常见操作的区别&#xf…

2026/9/19 22:40:13 阅读更多 →
QMK Clueboard 66% 66_ansi 默认键位解析:QK_GESC 特殊键与三层按键布局设计

QMK Clueboard 66% 66_ansi 默认键位解析:QK_GESC 特殊键与三层按键布局设计

QMK Clueboard 66% 66_ansi 默认键位解析:QK_GESC 特殊键与三层按键布局设计 【免费下载链接】qmk_firmware Open-source keyboard firmware for Atmel AVR and Arm USB families 项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware 本文围绕 Q…

2026/9/19 22:40:13 阅读更多 →
基于Spring Boot与Vue的非遗数字化传承平台设计与开发

基于Spring Boot与Vue的非遗数字化传承平台设计与开发

1. 为什么要做非遗数字化这个选题先说我自己的结论:非遗类系统是计算机毕业设计里少有的“高分潜力股”。为什么?因为它天然具备三层价值——文化层面有社会意义,技术层面能覆盖主流前后端技术栈,应用层面有真实的使用场景。很多同…

2026/9/19 22:40:13 阅读更多 →
为什么blessed渲染这么快?深度解析CSR、BCE与damage buffer的屏幕优化技巧

为什么blessed渲染这么快?深度解析CSR、BCE与damage buffer的屏幕优化技巧

为什么blessed渲染这么快?深度解析CSR、BCE与damage buffer的屏幕优化技巧 【免费下载链接】blessed A high-level terminal interface library for node.js. 项目地址: https://gitcode.com/gh_mirrors/bl/blessed blessed 是一个专为 node.js 打造的高级终…

2026/9/19 22:40:13 阅读更多 →
ESP32 USB Host 方案全解析:Camera/Audio/4G 网络/存储/Hub 五大应用实战指南

ESP32 USB Host 方案全解析:Camera/Audio/4G 网络/存储/Hub 五大应用实战指南

ESP32 USB Host 方案全解析:Camera/Audio/4G 网络/存储/Hub 五大应用实战指南 【免费下载链接】esp-iot-solution Espressif IoT Library. IoT Device Drivers, Documentations and Solutions. 项目地址: https://gitcode.com/GitHub_Trending/es/esp-iot-solutio…

2026/9/19 22:39:12 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/19 3:59:36 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/19 3:53:08 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/19 4:02:43 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →