HUGO

  • 新闻
  • 文档
  • 主题
  • 社区
  • GitHub
gohugoio 加星
  • 关于
    • 本节内容
    • 简介
    • 特性
    • 隐私
    • 安全
    • 许可证
  • 安装
    • 本节内容
    • macOS
    • Linux
    • Windows
    • BSD
  • 入门
    • 本节内容
    • 快速入门
    • 基本用法
    • 目录结构
    • 配置
    • 配置标记
    • 配置构建
    • 术语表
    • 外部学习资源
  • 快速参考
    • 本节内容
    • 表情符号
    • 函数
    • 方法
    • 页面集合
  • 内容管理
    • 本节内容
    • 组织
    • 页面捆绑包
    • 内容格式
    • 前言
    • 构建选项
    • 页面资源
    • 图像处理
    • 短代码
    • 相关内容
    • 章节
    • 内容类型
    • 原型
    • 分类法
    • 摘要
    • 链接和交叉引用
    • URL 管理
    • 菜单
    • 评论
    • 多语言
    • Markdown 属性
    • 语法高亮
    • 图表
    • 数学
    • 数据源
    • 内容适配器
  • 模板
    • 本节内容
    • 简介
    • 模板类型
    • 查找顺序
    • 基础模板
    • 主页模板
    • 单页模板
    • 章节模板
    • 分类法模板
    • 术语模板
    • 部分模板
    • 内容视图模板
    • 短代码模板
    • 站点地图模板
    • RSS 模板
    • 404 模板
    • robots.txt 模板
    • 菜单
    • 分页
    • 嵌入式模板
    • 自定义输出格式
  • 函数
    • 本节内容
    • cast
    • collections
    • compare
    • crypto
    • css
    • data
    • debug
    • diagrams
    • encoding
    • fmt
    • global
    • go template
    • hash
    • hugo
    • images
    • inflect
    • js
    • lang
    • math
    • openapi3
    • os
    • partials
    • path
    • reflect
    • resources
    • safe
    • strings
    • templates
    • time
    • transform
    • urls
  • 方法
    • 本节内容
    • 持续时间
    • 菜单
    • 菜单项
    • 页面
    • 分页器
    • 页面
    • 资源
    • 短代码
    • 站点
    • 分类法
    • 时间
  • 渲染钩子
    • 本节内容
    • 简介
    • 块引用
    • 代码块
    • 标题
    • 图像
    • 链接
    • 直通
    • 表格
  • 短代码
    • 本节内容
    • 注释
    • 详情
    • 图
    • Gist
    • 高亮
    • Instagram
    • Param
    • QR
    • Ref
    • Relref
    • Vimeo
    • X
    • YouTube
  • Hugo 模块
    • 本节内容
    • 配置 Hugo 模块
    • 使用 Hugo 模块
    • 主题组件
  • Hugo 管道
    • 本节内容
    • 简介
    • 将 Sass 转译为 CSS
    • PostCSS
    • 后处理
    • JavaScript 构建
    • 资产压缩
    • 连接资产
    • 指纹识别和 SRI 哈希
    • 从字符串创建资源
    • 从模板创建资源
  • CLI
  • 问题排查
    • 本节内容
    • 审计
    • 日志记录
    • 检查
    • 弃用
    • 性能
    • 常见问题
  • 开发者工具
    • 本节内容
    • 编辑器插件
    • 前端
    • 搜索
    • 迁移
    • 其他项目
  • 托管和部署
    • 本节内容
    • Hugo Deploy
    • 使用 Rclone 部署
    • 使用 Rsync 部署
    • 在 21YunBox 上托管
    • 在 AWS Amplify 上托管
    • 在 Azure 静态 Web 应用上托管
    • 在 Cloudflare Pages 上托管
    • 在 Firebase 上托管
    • 在 GitHub Pages 上托管
    • 在 GitLab Pages 上托管
    • 在 KeyCDN 上托管
    • 在 Netlify 上托管
    • 在 Render 上托管
  • 贡献
    • 本节内容
    • 开发
    • 文档
    • 主题
  • 维护
方法 分类法方法

ByCount

返回一个已排序的分类法,按与每个术语关联的页面数量排序。

语法

TAXONOMY.ByCount

返回

page.OrderedTaxonomy

Taxonomy 对象上的 ByCount 方法返回一个 已排序的分类法,按与每个 术语 关联的页面数量排序。

虽然 Taxonomy 对象是一个 映射,但已排序的分类法是一个 切片,其中每个元素都是一个对象,包含术语及其 加权页面 切片。

在使用 Taxonomy 方法之前,我们需要捕获一个 Taxonomy 对象。

捕获 Taxonomy 对象

考虑此站点配置

hugo。
     
taxonomies:
  author: authors
  genre: genres
[taxonomies]
  author = 'authors'
  genre = 'genres'
{
   "taxonomies": {
      "author": "authors",
      "genre": "genres"
   }
}

以及此内容结构

content/
├── books/
│   ├── and-then-there-were-none.md --> genres: suspense
│   ├── death-on-the-nile.md        --> genres: suspense
│   └── jamaica-inn.md              --> genres: suspense, romance
│   └── pride-and-prejudice.md      --> genres: romance
└── _index.md

要从任何模板中捕获 “genres” Taxonomy 对象,请使用 Site 对象上的 Taxonomies 方法。

{{ $taxonomyObject := .Site.Taxonomies.genres }}

当使用分类法模板渲染其页面时,要捕获 “genres” Taxonomy 对象,请使用页面 Data 对象上的 Terms 方法。

layouts/_default/taxonomy.html
{{ $taxonomyObject := .Data.Terms }}

检查数据结构

<pre>{{ debug.Dump $taxonomyObject }}</pre>

虽然 Alphabetical 和 ByCount 方法为遍历分类法提供了更好的数据结构,但您可以直接从 Taxonomy 对象渲染按术语加权的页面

{{ range $term, $weightedPages := $taxonomyObject }}
  <h2><a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a></h2>
  <ul>
    {{ range $weightedPages }}
      <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
    {{ end }}
  </ul>
{{ end }}

在上面的示例中,第一个锚元素是指向术语页面的链接。

获取已排序的分类法

现在我们已经捕获了 “genres” Taxonomy 对象,让我们获取按与每个术语关联的页面数量排序的已排序分类法

{{ $taxonomyObject.ByCount }}

要反转排序顺序

{{ $taxonomyObject.ByCount.Reverse }}

检查数据结构

<pre>{{ debug.Dump $taxonomyObject.ByCount }}</pre>

已排序的分类法是一个切片,其中每个元素都是一个对象,包含术语及其加权页面切片。

切片的每个元素都提供以下方法

计数
(int)返回分配给该术语的页面数。
页面
(page.Page)返回术语的 Page 对象,对于链接到术语页面很有用。
页面
(page.Pages)返回一个 Pages 对象,其中包含分配给该术语的 Page 对象,按 分类权重 排序。要排序或分组,请使用 Pages 对象可用的任何 方法。例如,按最后修改日期排序。
术语
(string)返回术语名称。
WeightedPages
(page.WeightedPages)返回分配给该术语的加权页面切片,按 分类权重 排序。上面的 Pages 方法更加灵活,允许您排序和分组。

示例

使用此模板

{{ range $taxonomyObject.ByCount }}
  <h2><a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a> ({{ .Count }})</h2>
  <ul>
    {{ range .Pages.ByTitle }}
      <li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
    {{ end }}
  </ul>
{{ end }}

Hugo 渲染

<h2><a href="/genres/suspense/">suspense</a> (3)</h2>
<ul>
  <li><a href="/books/and-then-there-were-none/">And then there were none</a></li>
  <li><a href="/books/death-on-the-nile/">Death on the nile</a></li>
  <li><a href="/books/jamaica-inn/">Jamaica inn</a></li>
</ul>
<h2><a href="/genres/romance/">romance</a> (2)</h2>
<ul>
  <li><a href="/books/jamaica-inn/">Jamaica inn</a></li>
  <li><a href="/books/pride-and-prejudice/">Pride and prejudice</a></li>
</ul>

另请参阅

  • Alphabetical

本页内容

  • 捕获 Taxonomy 对象
  • 获取已排序的分类法
  • 示例

本节内容

  • Alphabetical
  • ByCount
  • 计数
  • 获取
  • 页面
最后更新时间:2024 年 4 月 16 日:更新 debug.Dump (3dcf32e25)
改进此页面
由 Hugo 作者 提供
Hugo Logo
  • 提交问题
  • 获取帮助
  • @GoHugoIO
  • @spf13
  • @bepsays

Netlify badge

 

Hugo 赞助商

您的公司?
 

Hugo 标志的版权归 Steve Francia 2013-2025 所有。

Hugo Gopher 基于 Renée French 的原创作品。

  • 新闻
  • 文档
  • 主题
  • 社区
  • GitHub
  • 关于
  • 安装
  • 入门
  • 快速参考
  • 内容管理
  • 模板
  • 函数
  • 方法
  • 渲染钩子
  • 短代码
  • Hugo 模块
  • Hugo 管道
  • CLI
  • 问题排查
  • 开发者工具
  • 托管和部署
  • 贡献
  • 维护