Hugo博客

hugo-theme-nonentity — Hugo 博客模板

作者 snowme34

Nonentity 是一个基于 Hugo 的极简响应式博客主题,采用左侧导航、正文、右侧目录/标签/分类的三栏布局,内置全文搜索、标签筛选、Giscus 评论与明暗配色切换。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

1 个预览视图
作者提供的预览
作者提供的预览首屏预览

来自项目 README 的原始预览。

目前有 1 张原始预览,可打开完整图片查看设计细节。

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-04查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

三栏布局:左侧导航、正文、右侧目录与标签分类

02

响应式导航:平板收为图标栏,移动端变为抽屉

03

不依赖 JavaScript 框架,提供全文搜索与标签 AND/OR 筛选

04

支持 Giscus 评论、Cloudflare 分析、RSS 与明暗配色即时切换

05

通过 front matter 的 translations 字段在同 section 内关联多语言文章

模板详细介绍

Nonentity 是面向 Hugo 的博客主题,主打极简与响应式。页面采用三栏结构:左侧为导航侧栏,中间是正文内容,右侧放置目录、标签与分类信息。在平板宽度下左侧导航收窄为图标栏,在移动端则变为抽屉式导航。

主题不依赖 JavaScript 框架,提供跨文章、页面、标签和分类的全文搜索,目录支持滚动位置跟踪,标签筛选可在 AND/OR 模式间切换。评论使用 Giscus,分析使用 Cloudflare,并支持 RSS。代码高亮提供 GitHub 浅色与 Dracula 深色两套配色,站点配色可在浅色与深色之间即时切换。

配置集中在 hugo.toml 的 [params] 下,涵盖站点描述、页脚文本、关键词、日期格式、favicon、分页数量、个人资料卡、关于链接、社交图标、左侧导航扩展项、目录、版权与许可徽章、Giscus 评论和 Cloudflare 分析。文章 front matter 支持 categories、tags、toc、comment、excerpt、description、lang 与 translations;其中 translations 通过列出彼此 slug 在同 section 内关联多语言版本,无需开启 Hugo 多语言模式。

使用前需注意:主题要求 Hugo >= 0.111.3;语法高亮与搜索依赖 [markup.highlight] 的 noClasses = false 以及 [outputs] 中 home 包含 JSON 输出。评论仅在 post section 的页面渲染。演示图片、字体、图标等第三方素材需按各自许可核对,代码本身采用 MIT 许可。

Hugo博客

适合你的项目吗?

适用场景

  • 搭建以文字为主、需要目录与标签分类的个人技术博客
  • 希望不引入前端框架、仅靠 Hugo 输出静态站点的项目
  • 需要为同一篇文章提供多语言版本但不启用 Hugo 多语言模式的博客
  • 使用 Giscus 作为评论系统并需要标签筛选与全文搜索的内容站点

适合人群

  • 熟悉 Hugo 配置与 front matter 的开发者
  • 偏好极简三栏阅读布局的博客作者
  • 需要浅色/深色配色与代码高亮的写作站点
  • 愿意自行准备 Giscus 与 Cloudflare 凭据的使用者

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    要求 Hugo >= 0.111.3,可通过 git submodule 或 Hugo module 安装,并在 hugo.toml 中设置 theme = "nonentity"

  2. 2

    必须在 [markup.highlight] 中设置 noClasses = false,并在 [outputs] 的 home 中加入 JSON,否则语法高亮与搜索无法正常工作

  3. 3

    Giscus 评论需要启用 Discussions 的公开 GitHub 仓库,并在 giscus.app 获取 repoID 与 categoryID

  4. 4

    Cloudflare 分析需要填入自己的 beacon token

  5. 5

    演示图片、字体、图标等第三方素材需单独核对许可,不能仅依据代码的 MIT 许可判断

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
  • 启用 Giscus 评论需自备一个已开启 Discussions 的公开 GitHub 仓库,并到 giscus.app 获取 repoID 与 categoryID 等凭据,属于外部服务依赖。
  • Cloudflare 分析需填入自己的 beacon token,属于外部服务凭据要求。
  • 语法高亮与搜索功能依赖特定 Hugo 配置(noClasses = false 及 home 输出含 JSON),缺失则功能不可用。
  • 评论仅在 post section 的页面渲染,其他 section 不显示评论。
  • 使用该主题要求 Hugo 版本不低于 0.111.3。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

Requires a public GitHub repo with Discussions enabled. Get your IDs at [giscus.app](https://giscus.app).

README 原文

token = "your-beacon-token"

README 原文

These must be present for syntax highlighting and search to work correctly.

README 原文

Comments are rendered only on pages in the `post` section.

README 原文

Hugo `>= 0.111.3`

README 原文
https://github.com/snowme34/hugo-theme-nonentity/blob/main/LICENSEhttps://github.com/snowme34/hugo-theme-nonentity/blob/main/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-05。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料一般 · 68 / 100
技术栈
Hugo
网站类型
博客
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2026-04-20
截图检查日期
2026-10-05

目前没有记录演示链接。请依据仓库说明在本地评估;仅凭截图无法确认交互行为。

目录记录的主要技术栈是 Hugo。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

审核声明: [email protected] · 2026-10-05

查看当时使用的来源资料

SHA-256: df2e63a9c314cfd079cc6f00276bd759007ab8db01f5bff4a2a9859b60e8e653

2026-10-05T00:45:36.015Z

来源文件 / 仓库
# Nonentity

A minimal, responsive, searchable Hugo blog theme. Three-column layout: left nav sidebar, content, right sidebar (TOC / tags / categories).

![Screenshot](example.png)

## Features

- No JavaScript frameworks
- Responsive — collapses to rail nav on tablet, drawer nav on mobile
- Full-text search across posts, pages, tags, and categories
- Table of contents with scroll tracking
- Tag filtering with AND/OR mode
- Giscus comments, Cloudflare Analytics, RSS
- Syntax highlighting (GitHub light / Dracula dark)
- Light and dark color scheme with instant switching

## Requirements

Hugo `>= 0.111.3`

## Installation

### Git submodule

```bash
git submodule add https://github.com/snowme34/hugo-theme-nonentity themes/nonentity
```

Set `theme = "nonentity"` in `hugo.toml`.

### Hugo module

```toml
[module]
  [[module.imports]]
    path = "github.com/snowme34/hugo-theme-nonentity"
```

## Configuration

All options go under `[params]` in `hugo.toml` unless noted otherwise.

### Site

```toml
[params]
  description           = "Used in <meta name=description> for SEO."
  footerText            = "Text shown at the bottom of every page."
  keywords              = ["blog", "developer"]   # <meta name=keywords>
  dateFormat            = "January 2, 2006"       # Go time format
  favicon               = "/images/favicon.png"   # Path to favicon
  enableRSS             = true                    # Adds RSS link in <head> and sidebar footer
  showColorSchemeToggle = true                    # Show the light/dark toggle button
  rightSidebarInfo      = "Text shown in the right sidebar info panel. Falls back to description if not set."
  rightSidebarInfoTitle = "About"                 # Title of the right sidebar info panel
```

### Pagination

```toml
[params]
  paginate         = 15   # Posts per page on home and section lists
  paginateArchive  = 10   # Posts per page on archive (/post/)
  paginateTaxonomy = 5    # Posts per page on a single tag or category page (e.g. /tags/hugo/)
  paginateTags     = 15   # Posts per page in the tag filter results on /tags/
```

### Profile card

Shown at the top of the left sidebar.

```toml
[params.profile]
  avatar = "/images/avatar.png"  # Path to avatar image
  name   = "Your Name"
  bio    = "Short bio line"
  link   = "/"                   # Where clicking the avatar goes
```

### About link

By default the "About" nav item links to your local `about/` page. Set `params.about.url` to redirect it to an external URL instead.

```toml
[params.about]
  url = "https://example.com/about"   # omit to use the local about/ page
```

### Social links

Displayed in the sidebar footer. Sorted by `weight` (ascending).

Built-in icon names: `github`, `x`, `instagram`, `mastodon`, `youtube`, `bilibili`, `rss`.

```toml
[[params.socials]]
  name   = "GitHub"
  url    = "https://github.com/you"
  icon   = "github"
  weight = 1
```

For a custom icon, use `iconSvg` instead of `icon`:

```toml
[[params.socials]]
  name    = "My Site"
  url     = "https://example.com"
  iconSvg = "<svg ...></svg>"
  weight  = 10
```

### Extra left nav items

Add custom links to the left sidebar navigation, either before (`prepend`) or after (`append`) the default items.

```toml
[params.leftNavExtra]
  enable = true

  [[params.leftNavExtra.items]]
    name     = "GitHub"
    link     = "https://github.com/you"
    location = "append"   # "append" or "prepend"
    svg      = "<svg ...></svg>"
```

### Table of contents

Enabled globally here; can be overridden per-page with `toc: false` in front matter.

```toml
[params.toc]
  enable = true

[markup.tableOfContents]
  startLevel = 2
  endLevel   = 4
```

### Copyright and license badge

```toml
[params.copyright]
  text = "© 2026 Your Name"

  [params.copyright.license]
    enable = true
    name   = "CC BY-NC-SA 4.0"
    image  = "/images/cc-by-nc-sa.png"
    link   = "https://creativecommons.org/licenses/by-nc-sa/4.0/"
```

### Comments (Giscus)

Requires a public GitHub repo with Discussions enabled. Get your IDs at [giscus.app](https://giscus.app).

```toml
[params.comments.giscus]
  enable          = true
  repo            = "username/repo"
  repoID          = "R_..."
  category        = "General"
  categoryID      = "DIC_..."
  mapping         = "pathname"
  strict          = "0"
  reactionsEnabled = "1"
  emitMetadata    = "0"
  inputPosition   = "bottom"
  theme           = "preferred_color_scheme"
  lang            = "en"
  loading         = "lazy"
```

Comments are rendered only on pages in the `post` section.

### Analytics (Cloudflare)

```toml
[params.analytics.cloudflare]
  enable = true
  token  = "your-beacon-token"
```

### Required Hugo settings

These must be present for syntax highlighting and search to work correctly.

```toml
[markup.highlight]
  noClasses = false   # Required: use CSS classes, not inline styles

[outputs]
  home = ["HTML", "JSON", "RSS"]  # Required: JSON output powers search
```

## Front matter

| Key | Type | Description |
| --- | --- | --- |
| `categories` | string[] | Categories for this post. |
| `tags` | string[] | Tags for this post. |
| `toc` | bool | Per-page TOC override. `true` forces it on, `false` forces it off, regardless of the global `params.toc.enable` setting. |
| `comment` | bool | Set to `false` to disable comments on a specific post. Has no effect if comments are not globally enabled. |
| `excerpt` | string | Custom summary shown in post lists. Falls back to the first 180 characters of the page's plain text. |
| `description` | string | Page `<meta name="description">` for SEO. Takes highest priority; falls back to `excerpt`, then the auto-generated summary, then `params.description`. |
| `lang` | string | Language of this post (`en`, `zh`, `jp`). Used to localize the "Also available in:" label when `translations` is set. |
| `translations` | string[] | Slugs of translated versions of this post. Renders an "Also available in:" list linking to each. |

### Translations

Link translated versions of a post by listing each other's slugs. All posts remain in the same section; no multilingual mode required.

It is recommended to name translated files with the same base slug suffixed by the 2-character language code:

```
content/post/my-post-en.md
content/post/my-post-zh.md
content/post/my-post-jp.md
```

```yaml
# content/post/my-post-en.md
lang: en
translations:
  - "my-post-zh"
  - "my-post-jp"

# content/post/my-post-zh.md
lang: zh
translations:
  - "my-post-en"
  - "my-post-jp"
```

Each post renders a localized "Also available in:" block with links to the others. If a slug does not match any page, it is silently skipped.

## Design Credit

A rewrite from scratch for [hexo-theme-symphony](https://github.com/snowme34/hexo-theme-symphony), which is my fork of

- [hexo-theme-pure](https://github.com/cofess/hexo-theme-pure)
- [hexo-theme-dawn](https://github.com/Ruffianjiang/hexo-theme-dawn)

## License

MIT — see [LICENSE](LICENSE).
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。