文章模板与写作发布流程
元数据、草稿、摘要、文章模板、本地预览与发布检查。
本篇属于 Markdown 语法手册。按章内目录跳转,代码块提供可复制源码,其后的正文和组件展示实际效果。
内容文件放在哪里
本站按官方内容组织说明整理目录。日常文章放在 content/posts/,Wiki 知识文档放在 content/wiki/,关于和链接等独立页面放在 content/;不要编辑构建生成的 public/。
| |
my-note/ 是目录示例,不是已发布的文章。本站 Markdown 手册使用文章标题作为文件名,并在 Front Matter 中设置固定英文 slug,例如 Markdown 基础与扩展语法.md 设置 slug: markdown-basics,访问地址仍为 /wiki/markdown-basics/。以后修改文件名或标题时保留 slug,地址就不会随之变化。其他内容仍可使用简短英文和连字符命名。
单文件文章与文章包
| 写法 | 适用情况 | 默认访问地址 |
|---|---|---|
content/posts/my-note.md | 主要是文字,图片不多 | /posts/my-note/ |
content/posts/my-note/index.md | 图片、附件与文章一起维护 | /posts/my-note/ |
content/posts/_index.md | 描述文章列表,不是独立文章 | /posts/ |
content/wiki/markdown/my-note.md | Wiki 知识文档 | /wiki/my-note/ |
content/about.md | 独立页面 | /about/ |
index.md 表示叶子页面包,适合一篇文章和它的资源;_index.md 表示分支或列表页,适合栏目与合集。不要为了给文章加图片,把 index.md 写成 _index.md,也不要同时创建同名的单文件文章和文章包。
新建纯文字文章:
| |
新建带图文章:
| |
把图片复制到 content/posts/my-note/ 后,用相对文件名引用:
| |
先放好示例中引用的两张图片,再预览。本站首页将封面显示为标题上方的宽幅图片;无封面的文章不必设置 featured_image。
本地资源路径怎么写
| 实际位置 | 引用示例 | 用途 |
|---|---|---|
content/posts/my-note/diagram.png | diagram.png | 本文独有的图片,随文章包管理 |
assets/images/shared.png | /images/shared.png | 多篇文章共享、可交给 Hugo 处理的资源 |
static/badge/fixit-logo.svg | /badge/fixit-logo.svg | 原样输出的文件 |
主题资源解析会先找页面资源,再找 assets,最后使用静态路径。引用时不要写成 /static/badge/... 或 /assets/images/...;这两个目录名不是发布后的 URL 前缀。尽量避免在多个位置存放同名资源,以免命中意外的文件。
图片语法、图注和代码高亮详见富文本写作。
目录、栏目与合集的区别
- 文件目录决定内容组织和默认 URL;本站
mainSections = ['posts', 'wiki']控制首页主要文章来源。 categories和tags在文章、Wiki 及后续其他栏目之间共享;分类表示较宽泛的主题,标签表示具体工具、对象或问题,不要求移动文件。collections用来组织连续阅读的内容;本站手册名称为Markdown 语法。manual_part是本站手册目录使用的自定义分组字段,不是所有文章都需要填写。
分类按需填写,不要求每篇都有;标签使用少量稳定关键词。同一主题跨栏目使用相同名称,例如 Hugo 文章和 Hugo 部署 Wiki 都可使用 categories: ['技术']、tags: [Hugo],不另建“Wiki 技术”或“文章技术”。分类和标签页会聚合来自不同栏目的关联内容。
Wiki 不再作为分类名称。“收录于 Wiki”始终指向 Wiki 栏目并保留彩色图标,有合集时继续显示合集;即使 Wiki 文档填写了主题分类,也不在这一行追加分类。普通文章仍显示分类。新增栏目是否进入首页、全站归档及订阅,需另行配置,不由分类或标签决定。
新增手册文章时,可填写:
| |
当前分组为“基础排版、富文本写作、组件、数学与图表、写作流程”。如果创建新的分组名称,还要同步更新 layouts/manual.html,否则它不会出现在本站自定义的合集目录里。文章顺序由日期升序决定,不需要给标题加数字编号。
本站 content/wiki/_index.md 通过 cascade 为普通页面统一设置 type: wiki 和 url: /wiki/:slugorcontentbasename/,阅读模板通过挂载复用 FixIt 的原生实现,新增 Wiki 文档无需重复填写,也不再自动赋予 Wiki 分类。target.kind: page 避免把栏目列表页当成文章。知识文档使用 /wiki/.../ 地址;日常写作继续使用 content/posts/。合集仍由 collections 字段关联,不由文件目录自动决定。 markdown/ 仅用于文件整理,不设置 _index.md,因此面包屑直接显示“Wiki → 文章标题”,Wiki 下所有普通文章 URL 使用 /wiki/文章名/,省略中间目录,不添加 aliases。
迁移文章时,在 Front Matter 的 aliases 中保留旧 URL,并更新正文内链。Twikoo 默认按 URL 路径关联评论,旧地址跳转不会自动迁移评论;若原文章已有评论,应同时处理评论数据或单独保留其评论路径。
独立页面与链接列表
普通独立页面可使用 layout: page;本站关于页已经采用这种方式。链接页使用内置的 layout: friends 和 friend_scheme: domino,实际链接维护在 data/friends.yml:
| |
头像需要先保存到对应位置;也可省略 avatar 使用默认图标。权重越大越靠前。添加链接不需要安装项目组件,也不需要 GitHub 仓库或访问令牌。
最小文章头部
| |
draft: true 只在带 -D 的预览中出现;description 可提供文章摘要。合集文章依日期升序排列,请给每篇安排明确的日期。
给长文章写一个有用的开头
技术文章的开头可以回答三个问题:读者遇到了什么、这篇文章解决到什么程度、需要什么前置条件。下面是一段可改写的示范:
| |
我想把零散的笔记整理成一个可以持续更新的博客。 这篇文章记录从新建 Markdown 文件到本地预览的最短流程。
开始前需要准备:
- 一个已能运行的 Hugo 项目。
- 支持 UTF-8 的文本编辑器。
- 十分钟可以专心写作的时间。
本站使用显式摘要分隔标记控制首页摘录,见本页源文件中的 <!--more-->。它是写在正文中的 Hugo 摘要标记,不应放入文章头部。首页摘要应能独立说明文章主题,而不是只剩下“前言”两个字。
一份可复制的短文骨架
| |
这是完整文件模板,不应直接追加到已有正文里。创建新文件后,先检查标题和日期,发布前再设置 draft: false。日期晚于构建时间的文章也可能不出现在普通构建中。
常见问题速查
| 现象 | 常见原因 | 调整方式 |
|---|---|---|
| 标题显示成普通文字 | # 后没有空格 | 写成 ## 标题 |
| 两段连成一段 | 段落之间没有空行 | 空一行再写下一段 |
| 子列表跑出父列表 | 缩进不足或混用制表符 | 使用空格,对齐正文列 |
| 星号没有按预期显示 | 被识别成强调语法 | 写成 \* |
| 文章没有出现在首页 | 草稿状态或未来日期 | 检查 draft、date 和预览参数 |
练习:用这一篇介绍的语法写一则周记,包含两个二级标题、一个列表、一处引用和一个内部链接。参照基础与扩展语法,再为它增加任务清单和脚注。
选择哪种结构
| 要表达的内容 | 推荐结构 | 原因 |
|---|---|---|
| 两个版本的差别 | diff 代码块 | 改动位置一眼可见 |
| 多个参数的含义 | 简短表格 | 便于按列比较 |
| 有顺序的操作 | 有序列表 | 明确先后依赖 |
| 发布前的检查 | 任务清单 | 完成标准清楚 |
| 次要背景和来源 | 脚注 | 保持主线连贯 |
| 多套可选方案 | 标签页 | 避免连续堆叠大段内容 |
可以用折叠与标签页组织这些内容,让长文章既能连续阅读,也能快速查找。
常用文章元数据
| 字段 | 用途 | 建议 |
|---|---|---|
title | 页面标题 | 明确说明文章要解决的问题 |
description | 页面描述 | 用一句完整的话概括价值 |
date | 发布日期与排序依据 | 带时区,避免时间含糊 |
lastmod | 最近更新时间 | 有实质更新时维护 |
draft | 是否草稿 | 发布前检查是否为 false |
tags | 交叉检索 | 少量稳定关键词 |
categories | 内容归类 | 使用清晰的分类名 |
collections | 连续阅读的合集 | 本手册使用 Markdown 语法 |
aliases | 旧地址跳转 | 改 URL 时保留必要旧路径 |
文章拆分或合并时,最容易遗漏的是旧链接和合集归属。标题可自由调整,已经分享过的 URL 应尽量稳定;需要改路径时,为旧地址添加别名。
本地预览与生产构建
| |
预览服务启动后,在另一终端确认实际监听地址:
| |
应看到 127.0.0.1:1313。这表示服务只对本机开放。浏览器访问本地地址检查文章,完成后使用 Ctrl+C 停止服务。
| |
生产构建生成 public/,不等于上传或部署。本站的 Hugo 包装脚本只负责找到本地 Dart Sass 并设置缓存目录,底层仍直接调用 Hugo。
可以复用的发布检查清单
| |
- 标题、摘要和发布日期正确
- draft 已改为 false
- 合集名称与已有文章一致
- 每个代码片段都说明了输入和结果
- 演示短代码没有在源码区意外执行
- 图片、内部链接和锚点可访问
- 桌面、手机和深色模式正常
- 生产构建通过
这里的清单是供每篇新文章复用的模板,不表示本手册的实时验收状态。