核心对象概述

Hugo模板系统提供了几个核心对象,用于访问网站的各种信息和配置:

  • .Site - 网站全局信息和配置
  • .Page - 当前页面的信息和属性
  • .Params - 页面或网站的参数
  • .File - 当前文件的信息
  • .Scratch - 临时数据存储

.Site 对象

基本属性

      <!-- 网站基本信息 -->
{{ .Site.Title }}              <!-- 网站标题 -->
{{ .Site.BaseURL }}            <!-- 网站基础URL -->
{{ .Site.LanguageCode }}       <!-- 网站语言代码 -->
{{ .Site.Language.Lang }}      <!-- 当前语言 -->
{{ .Site.LanguagePrefix }}     <!-- 语言前缀 -->
{{ .Site.Copyright }}          <!-- 版权信息 -->
{{ .Site.LastChange }}          <!-- 最后修改时间 -->
{{ .Site.BuildDrafts }}         <!-- 是否构建草稿 -->
{{ .Site.IsMultiLingual }}      <!-- 是否多语言网站 -->

<!-- 网站配置信息 -->
{{ .Site.Params }}             <!-- 网站级参数 -->
{{ .Site.Menus }}               <!-- 网站菜单 -->
{{ .Site.Taxonomies }}          <!-- 分类法 -->
{{ .Site.Data }}                <!-- 数据文件内容 -->
    

常用方法

      <!-- 获取页面 -->
{{ .Site.GetPage "section" "posts" }}     <!-- 获取特定分区 -->
{{ .Site.GetPage "home" }}                 <!-- 获取首页 -->
{{ .Site.GetPage "/about/" }}              <!-- 获取特定路径页面 -->

<!-- 获取资源 -->
{{ $resource := .Site.Resources.GetMatch "*.css" }}  <!-- 匹配资源 -->
{{ $images := .Site.Resources.ByType "image" }}     <!-- 按类型获取资源 -->

<!-- 获取菜单 -->
{{ $menu := .Site.Menus.main }}            <!-- 获取主菜单 -->
{{ $menuItem := .Site.Menus.main 0 }}       <!-- 获取菜单项 -->
    

项目中的应用示例

      <!-- 获取网站配置的作者信息 -->
{{ $author := .Site.Params.author }}
{{ $authorName := $author.name }}
{{ $authorEmail := $author.email }}

<!-- 获取网站社交媒体链接 -->
{{ range $key, $value := .Site.Params.social }}
  <a href="{{ $value }}" class="social-link">{{ $key }}</a>
{{ end }}

<!-- 获取网站多语言信息 -->
{{ range .Site.Languages }}
  <a href="{{ .Lang | relLangURL }}">{{ .LanguageName }}</a>
{{ end }}
    

.Page 对象

基本属性

      <!-- 页面基本信息 -->
{{ .Page.Title }}              <!-- 页面标题 -->
{{ .Page.Content }}            <!-- 页面内容 -->
{{ .Page.Summary }}            <!-- 页面摘要 -->
{{ .Page.Description }}         <!-- 页面描述 -->
{{ .Page.Date }}               <!-- 页面日期 -->
{{ .Page.Lastmod }}             <!-- 最后修改时间 -->
{{ .Page.ExpiryDate }}          <!-- 过期时间 -->
{{ .Page.PublishDate }}         <!-- 发布日期 -->
{{ .Page.Weight }}              <!-- 权重 -->
{{ .Page.Type }}                <!-- 类型 -->
{{ .Page.Kind }}                <!-- 种类 -->
{{ .Page.Section }}             <!-- 分区 -->
{{ .Page.Slug }}                <!-- URL别名 -->
{{ .Page.URL }}                 <!-- 页面URL -->
{{ .Page.RelPermalink }}        <!-- 相对永久链接 -->
{{ .Page.RelRef }}              <!-- 相对引用 -->

<!-- 页面状态 -->
{{ .Page.Draft }}               <!-- 是否为草稿 -->
{{ .Page.IsHome }}              <!-- 是否为首页 -->
{{ .Page.IsPage }}              <!-- 是否为普通页面 -->
{{ .Page.IsSection }}           <!-- 是否为分区页面 -->
{{ .Page.IsNode }}              <!-- 是否为节点 -->
{{ .Page.IsMenu }}              <!-- 是否在菜单中 -->
    

内容相关属性

      <!-- 字数统计 -->
{{ .Page.WordCount }}           <!-- 字数 -->
{{ .Page.ReadingTime }}         <!-- 预计阅读时间(分钟) -->
{{ .Page.FuzzyWordCount }}      <!-- 模糊字数 -->
{{ .Page.Len }}                 <!-- 内容长度 -->

<!-- 目录和导航 -->
{{ .Page.TableOfContents }}     <!-- 目录 -->
{{ .Page.Next }}                <!-- 下一页 -->
{{ .Page.Prev }}                <!-- 上一页 -->
{{ .Page.First }}               <!-- 第一页 -->
{{ .Page.Last }}                <!-- 最后一页 -->
{{ .Page.NextInSection }}       <!-- 分区内下一页 -->
{{ .Page.PrevInSection }}       <!-- 分区内上一页 -->
    

页面参数

      <!-- 获取页面参数 -->
{{ .Page.Params.author }}       <!-- 页面作者 -->
{{ .Page.Params.tags }}         <!-- 页面标签 -->
{{ .Page.Params.categories }}   <!-- 页面分类 -->
{{ .Page.Params.featuredImage }} <!-- 特色图片 -->
{{ .Page.Params.showToc }}      <!-- 是否显示目录 -->

<!-- 检查参数是否存在 -->
{{ if .Page.Params.showAuthor }}
  <div class="author">{{ .Page.Params.author }}</div>
{{ end }}

<!-- 使用默认值 -->
{{ $author := .Page.Params.author | default .Site.Params.author }}
    

.Params 对象

参数层级

Hugo中的参数有层级结构,优先级从高到低:

加载中...

声明

作者: liyao

版权:本博客所有文章除特别声明外,均采用CCBY-NC-SA4.O许可协议。转载请注明!

最后更新于 2025-12-20 17:30 history