Skip to content

Repository files navigation

Welcome!

这个是 25 级计算机应用 1 班的班级博客~ 使用 Hugo 静态站点生成器和 Stack 主题搭建,部署于 Vercel,记录班级学习与生活的点滴 📚

🌐 在线访问

✨ 特性

  • 🎨 Stack 主题:简洁美观的卡片式布局,支持暗色模式

  • 🔍 全站搜索:内置搜索功能,快速定位文章

  • 🗂️ 归档与分类:按时间归档、分类和标签云组织内容

  • 💬 Waline 评论:集成 Waline 评论系统,支持表情互动与访问统计

  • 📱 响应式设计:完美适配桌面端和移动端

  • 🚀 Vercel 部署:推送自动构建,极速全球访问

  • 📄 短链接风格:文章永久链接使用 /p/:slug/ 简洁格式

  • 🔎 SEO 优化:自动生成 sitemap.xml、robots.txt,输出 Open Graph / Twitter Card / JSON-LD 结构化数据(WebSite + BlogPosting),可逐页覆写标题、描述、关键词、封面图等

🛠️ 技术栈

类别 技术
静态站点生成器 Hugo 0.165.0 (Extended)
主题 hugo-theme-stack
评论系统 Waline
部署平台 Vercel
CI/CD GitHub Actions
许可证 代码 MIT / 文章内容 CC BY 4.0

📁 项目结构

class-blog/
├── .github/workflows/    # GitHub Actions CI 配置
├── archetypes/           # 文章原型模板(含 SEO 字段)
├── assets/               # 静态资源(favicon 等)
├── content/              # 内容目录
│   ├── page/             # 独立页面(归档、搜索)
│   └── post/             # 博客文章
├── layouts/              # 主题覆盖
│   ├── 404.html          # 自定义 404 页
│   ├── robots.txt        # 自定义 robots.txt 模板(动态生成)
│   └── _partials/head/   # head 覆盖(继承主题并追加 JSON-LD)
├── static/               # 直接复制到站点的静态文件
├── themes/               # Hugo 主题(Stack 主题作为 submodule)
├── hugo.toml             # Hugo 站点配置(含 SEO 默认值)
├── vercel.json           # Vercel 部署配置
├── .gitmodules           # Git 子模块配置
├── LICENSE               # MIT 许可证(代码)
└── LICENSE-CONTENT       # CC BY 4.0 许可证(文章内容)

🚀 本地开发

环境要求

  • Hugo Extended >= 0.165.0(需支持 SCSS 编译)

  • Git(用于初始化子模块)

安装步骤

  1. 克隆仓库并初始化子模块
git clone <repo-url>
cd class-blog
git submodule update --init --recursive
  1. 本地构建 & 启动本地开发服务器(验证)
hugo --gc --minify # 构建
hugo server # 启动本地服务器

构建产物输出至 public/ 目录。

📝 写作指南

创建新文章

使用 Hugo 提供的 archetype 快速创建文章:

hugo new post/my-post-slug.md

文件名与 slug 建议使用小写英文、数字和连字符(如 my-post-slug.md),避免使用中文或空格。

Front Matter 示例

+++
title = '文章标题'
date = '2026-09-01T10:00:00+08:00'
draft = false
description = '一段简短的文章摘要,用于卡片副标题、meta description 与 JSON-LD'
categories = ['分类名称']
tags = ['标签1', '标签2']
author = '你的笔名或姓名'
+++

这里写文章正文...

作者字段说明:author 字段会在文章列表卡片和文章详情页顶部显示(可在 hugo.toml 中关闭)。如果文章不填写 author,会按以下顺序回退:文章 front matter 的 author → 站点配置中的 params.article.defaultAuthor → 站点配置中的 params.author。

支持的内容格式

  • 标准 Markdown 语法

  • 代码高亮(支持行号)

  • 数学公式(LaTeX)

  • Mermaid 图表

  • 图片画廊

  • 自定义 Shortcodes(Bilibili、YouTube 视频等)

🔎 SEO 支持

站点已内置 SEO 能力,开箱即用:

自动输出 说明
sitemap.xml Hugo 内置生成,配置位于 hugo.toml 的 [sitemap] 块
robots.txt 由 Hugo 动态生成(enableRobotsTXT = true),Sitemap 字段自动取自 baseURL
index.xml (RSS) 主页 + 各 section 启用 RSS 输出([outputs] 配置)
自定义 404 页 layouts/404.html,返回首页引导,避免硬 404
Meta 标签 由 Stack 主题的 head.html 输出(description / keywords / canonical 等)
Open Graph 由主题的 head/opengraph/include.html 输出;文章页额外输出 article:\*
Twitter Card 由主题的 head/opengraph/provider/twitter 输出
JSON-LD 项目 layouts/_partials/head/jsonld.html 追加:所有页输出 WebSite,content/post/ 下的文章页再叠加 BlogPosting

在文章中覆写 SEO 字段

在 content/post/*.md 的 front matter 中可逐页覆写:

+++
title = '我的文章'
description = '这篇文章讲了什么……'  # 不填则自动取摘要
keywords = ['关键词1', '关键词2']
author = '你的名字'                  # 会在卡片和文章页显示
image = '/images/cover.png'          # 相对站点根的路径
robots = 'index, follow'             # 设为 'noindex' 可阻止收录
+++

tags 和 categories 会自动作为 keywords 与 article:tag / article:section 输出。author 字段会在文章列表和详情页中可见地显示。

在站点级别修改默认值

编辑 hugo.toml 中 [params] 块下的 description / keywords / author / image / robots 即可,所有页面会以此为默认值。

自定义 head 输出时请注意

layouts/_partials/head/head.html 覆盖了 Stack 主题的同名 partial,并在末尾追加了 JSON-LD(head/jsonld.html)。如需调整 JSON-LD 内容,修改 head/jsonld.html 即可;其它 head 行为调整也请在项目级 head.html 中进行,避免直接改动主题目录(themes/hugo-theme-stack/)。

☁️ 部署说明

Vercel 自动部署

项目已配置 vercel.json,连接 Vercel 后推送至仓库即可自动部署。关键配置:

  • 构建命令:hugo --gc --minify

  • 输出目录:public

  • Hugo 版本:0.165.0 (Extended)

  • 安装命令:git submodule update --init --recursive(拉取主题)

GitHub Actions CI

推送到仓库或提交 PR 时,会自动触发构建检查,确保站点能正常编译。

⚙️ 配置说明

站点基础配置(hugo.toml)

  • baseURL:站点根 URL

  • title:站点标题

  • copyright:页脚版权文字

  • params.sidebar.subtitle:侧边栏副标题

  • params.footer.since:页脚起始年份

文章作者显示

在 hugo.toml 中配置作者显示行为:

[params.article]
    # 是否在文章卡片和详情页显示作者(默认 true)
    showAuthor = true
    # 全局默认作者(当文章 front matter 中未写 author 时使用)
    defaultAuthor = ""

作者字段的解析顺序:

  1. 文章 front matter 中的 author 字段
  2. params.article.defaultAuthor(站点配置)
  3. params.author(站点配置)

设置 showAuthor = false 可全局关闭作者显示。

评论系统(Waline)

在 hugo.toml 中配置:

[params.comments]
    enabled = true
    provider = "waline"
    [params.comments.waline]
        serverURL = "https://waline.mantoujun-lab.com"

🤝 贡献

欢迎班级同学投稿或完善项目!提交 PR 前请确保本地构建通过 (hugo --gc --minify)。

你可以扫描下方的微信赞赏码,来支持项目的开发与维护 ☕

微信赞赏码

📄 许可证

本项目采用双重许可:

  • 源代码(Hugo 模板、脚本等程序工件)基于 MIT License 开源。
  • 文章内容(content/ 目录下的所有文字、图片等)基于 CC BY 4.0 License 共享。

About

班级博客站 更新新鲜文章

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages