创建新主题:Hugo 主题开发指南

April 26, 2026
hugo 主题开发 教程

Hugo 主题开发入门

在本篇详尽的指南中,我们将深入探讨如何为 Hugo 网站创建一个全新的主题。Hugo 是一个广受欢迎的静态网站生成器,以其卓越的速度和灵活性而闻名。而主题则是决定 Hugo 网站外观和感觉的关键要素。掌握主题开发,意味着您可以完全掌控网站的视觉呈现,并根据品牌需求(如爱游戏(ayx)的官方风格)进行高度定制。

主题结构解析

一个 Hugo 主题通常包含以下几个核心目录和文件:

基础模板创建

让我们从创建最基本的模板开始。

layouts/_default/list.html

这个模板将用于显示内容列表,例如博客文章列表。

<!DOCTYPE html>
<html>
<head>
    <title>{{ .Title }}</title>
</head>
<body>
    <h1>{{ .Title }}</h1>
    <ul>
        {{ range .Pages }}
        <li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
        {{ end }}
    </ul>
</body>
</html>

layouts/_default/single.html

这个模板将用于显示单个内容页面,例如单篇文章。

<!DOCTYPE html>
<html>
<head>
    <title>{{ .Title }} - {{ .Site.Title }}</title>
</head>
<body>
    <h1>{{ .Title }}</h1>
    <div>
        {{ .Content }}
    </div>
</body>
</html>

引入 CSS 和 JavaScript

为了让网站更具吸引力,我们需要引入样式表和脚本。

  1. static/css/ 目录下创建一个 style.css 文件。
  2. static/js/ 目录下创建一个 script.js 文件。

然后在 layouts/_default/baseof.html(如果您使用了 baseof.html 结构)或直接在 list.htmlsingle.html 中引入它们:

<head>
    <title>{{ .Title }} - {{ .Site.Title }}</title>
    <link rel="stylesheet" href="{{ "css/style.css" | relURL }}">
</head>
<body>
    <!-- ... 页面内容 ... -->
    <script src="{{ "js/script.js" | relURL }}"></script>
</body>

relURL 函数确保路径正确,无论网站部署在哪里。

利用 Partials 重用代码

将导航栏、页脚等公共部分提取到 layouts/partials/ 目录下的文件中,例如 header.htmlfooter.html

layouts/partials/header.html:

<header>
    <nav>
        <a href="/">爱游戏 (ayx) 官网</a>
        <ul>
            <li><a href="/posts/">博客</a></li>
            <li><a href="/about/">关于</a></li>
            <!-- 更多导航链接 -->
        </ul>
    </nav>
</header>

layouts/partials/footer.html:

<footer>
    <p>&copy; {{ now.Year }} 爱游戏. All rights reserved.</p>
</footer>

然后在您的主模板中包含它们:

<!DOCTYPE html>
<html>
<head>
    <title>{{ .Title }} - {{ .Site.Title }}</title>
    <link rel="stylesheet" href="{{ "css/style.css" | relURL }}">
</head>
<body>
    {{ partial "header.html" . }}
    <main>
        <h1>{{ .Title }}</h1>
        <div>
            {{ .Content }}
        </div>
    </main>
    {{ partial "footer.html" . }}
    <script src="{{ "js/script.js" | relURL }}"></script>
</body>
</html>

使用 Archetypes 简化内容创建

archetypes/default.md(或者为特定内容类型创建 archetypes/post.md)中定义 front matter 模板:

---
title: "{{ replace .File.ContentBaseName "-" " " | title }}"
date: {{ .Date }}
draft: true
tags: []
---

当您执行 hugo new posts/my-first-post.md 时,Hugo 会使用 archetypes/post.md(如果存在)或 archetypes/default.md 来生成 posts/my-first-post.md 的初始内容,包括 titledatedraft 字段。

进阶主题开发

开发 Hugo 主题是一个循序渐进的过程。从简单的结构开始,逐步添加功能和样式,最终实现您期望的视觉效果和用户体验,完美契合爱游戏(ayx)的品牌形象。

Hugo:静态网站生成的速度与激情

April 24, 2026
hugo 静态网站 教程

从 Jekyll 迁移到 Hugo:平滑过渡指南

April 23, 2026
hugo jekyll 迁移 教程