关于此网站构建
如下是此模板的项目结构,以及初步构建网站的方法:
minimal-mistakes
├── _data # 【数据文件】用于存放配置化的数据文件,方便非开发者修改网站内容
│ ├── navigation.yml # 主导航链接配置。在这里定义网站的菜单栏(如首页、关于、归档等)
│ └── ui-text.yml # 用户界面文本配置。用于统一修改网站中各处的按钮、标签、提示文字(如“阅读更多”、“相关文章”等)的多语言或自定义文本
├── _includes # 【包含模块】存放可重用的 Liquid/HTML 代码片段
│ ├── analytics-providers # 网站分析代码片段目录(如 Google Analytics, Swetrix 等)
│ ├── comments-providers # 评论系统代码片段目录(如 Disqus, Giscus 等)
│ ├── footer
│ │ └── custom.html # 页脚自定义区域。可在此添加版权信息、额外链接或脚本
│ ├── head
│ │ └── custom.html # 网页头部自定义区域。可在此添加自定义 CSS、Meta 标签或脚本
│ ├── feature_row # 特性展示行助手。用于生成格式统一的特性介绍区块
│ ├── gallery # 图片画廊助手。用于生成相册或图片网格布局
│ ├── group-by-array # 用于归档页的“按数组分组”助手
│ ├── nav_list # 导航列表助手。用于生成侧边栏导航等
│ ├── toc # 文章目录助手。用于在文章页自动生成目录
│ └── ... # 其他众多辅助片段
├── _layouts # 【页面布局】定义网站不同页面的 HTML 主体框架
│ ├── archive-taxonomy.html # 为 Jekyll Archives 插件准备的标签/分类归档页布局
│ ├── archive.html # 归档页的基础布局
│ ├── categories.html # 按分类分组的文章列表归档页布局
│ ├── category.html # 特定分类下的文章列表布局
│ ├── collection.html # 特定合集(Collection)的文档列表布局
│ ├── compress.html # 用于在纯 Liquid 环境下压缩 HTML 输出的布局
│ ├── default.html # 所有其他布局的**基础模板**,定义了页面的整体结构(头、身、尾)
│ ├── home.html # 首页专用布局
│ ├── posts.html # 按年份分组文章列表的归档页布局
│ ├── search.html # 搜索页面布局
│ ├── single.html # 单篇文章或页面的布局(如博客文章、关于页面)
│ ├── tag.html # 特定标签下的文章列表布局
│ ├── tags.html # 按标签分组的文章列表归档页布局
│ └── splash.html # 着陆页/宣传页布局
├── _sass # 【样式部分】存放 SCSS 样式表的分块文件,用于模块化管理样式
├── assets # 【静态资源】存放 CSS、图片、JS 等文件,会被 Jekyll 处理并拷贝到最终站点
│ ├── css
│ │ └── main.scss # **主样式表入口文件**,它会导入 _sass 目录中的所有 SCSS 部分文件
│ ├── images # 图片资源库。用于存放文章、页面、合集等使用的图片
│ ├── js
│ │ ├── plugins # jQuery 插件目录
│ │ ├── vendor # 第三方库/供应商脚本目录
│ │ ├── _main.js # 站点主脚本文件,包含插件设置和其他需要在 jQuery 加载后运行的脚本
│ │ └── main.min.js # 优化和压缩后的脚本文件,通常在 </body> 结束前加载以提升性能
├── _config.yml # 【网站核心配置文件】全局设置,如标题、描述、URL、插件、布局默认值等
├── Gemfile # 【Ruby 依赖定义文件】列出项目所需的 Ruby gems(如 jekyll, minimal-mistakes 主题等)
├── index.html # 【网站首页文件】通常是一个使用 `home` 布局的分页首页,用于展示最新文章
└── package.json # 【NPM 脚本定义文件】(如果存在)定义用于构建、测试、部署等的 Node.js 脚本命令
- 补充说明(基于通用 Jekyll 主题知识):
- _sass/目录通常包含大量按功能划分的 .scss文件,如 _variables.scss(变量)、_mixins.scss(混合宏)、_page.scss(页面布局)等,是主题样式的源代码。
- assets/js/_main.js是开发用的可读脚本,而 main.min.js是用于生产环境的压缩版本。
如何操作以完善静态网站和发布更好的Post
根据以上结构,你可以有针对性地进行以下操作:
第一阶段:基础配置与个性化
- 配置核心文件 (_config.yml):
- 修改 title, description, url, author等基本身份信息。
- 设置 logo或 masthead_title来定义网站标题和 Logo。
- 配置 footer信息(如版权年份、链接)。
- 启用/禁用所需功能,如 search, comments(并配置提供商), analytics。
- 定制导航与文本(_data/目录):
- 编辑 navigation.yml,增加、删除或重排主导航菜单项。
- 编辑 ui-text.yml,将网站的按钮、提示语等翻译成中文或改为你喜欢的措辞。
- 个性化样式 (_sass/和 assets/css/main.scss):
- 最简单方式:在 _config.yml中通过 minimal_mistakes_skin选择一款内置的皮肤(如 “air”, “aqua”, “dark” 等)。
- 进阶自定义:创建文件 assets/css/main.scss(如果不存在),在此文件中通过 @import “minimal-mistakes”;导入主题样式后,覆盖 SCSS 变量(如颜色、字体)或添加你自己的 CSS 规则。你也可以直接覆盖 _sass/minimal-mistakes/_variables.scss中的变量。
第二阶段:利用模块扩展功能
- 添加全局代码 (_includes/head/custom.html和 _includes/footer/custom.html):
- 在 head/custom.html中添加自定义 CSS 链接、字体链接或全局 JavaScript 库(如 MathJax)。
- 在 footer/custom.html中添加统计代码、额外的脚本或页脚小工具。
- 启用评论与分析 (_includes/comments-providers/和 _includes/analytics-providers/):
- 在 _config.yml中配置好评论系统(如 Disqus 的 shortname)。
- 主题会自动调用对应提供商的代码片段。你可以去这些目录下查看具体代码,必要时进行微调。
- 使用布局助手:
- 在写文章或页面时,在 Front Matter(文件头信息)中通过 layout:指定不同的 _layouts,如使用 single布局写博文,使用 archive布局做归档页。
- 在文章中利用
{% include toc %}自动生成目录,或使用{% include gallery %}创建精美画廊。
第三阶段:创作与发布更佳的 Post
- 规范的 Post 文件:
- 在 _posts目录(你给出的结构图中未展示,但这是 Jekyll 约定俗成的目录)中,按 YYYY-MM-DD-title.md的格式创建文章文件。
- 文件开头必须包含 Front Matter,例如:
title: "你的文章标题" date: 2026-03-28 categories: [分类1, 分类2] tags: [标签1, 标签2, 标签3] # 标签有助于SEO和内容关联 toc: true # 启用目录 toc_sticky: true # 让目录浮动 classes: wide # 使用宽版布局
- 内容优化:
- 图片管理:将图片放入 assets/images/的子目录(如按年/月组织),在文中使用
语法引用,并善用 figure标签和 caption属性。 - 代码高亮:使用三个反引号声明代码块,并指定语言,主题已集成高亮。
- 使用 Notices:如之前讨论,使用
{: .notice--info}等语法插入醒目的提示框,使排版更专业。
- 图片管理:将图片放入 assets/images/的子目录(如按年/月组织),在文中使用
- 高级布局与特性:
- 在 Front Matter 中设置 header来为文章添加大幅标题图。
- 使用 feature_row助手在页面中创建美观的特性介绍行。
- 通过配置 _config.yml中的 jekyll-archives设置,实现强大的标签和分类归档页。
第四阶段:构建与发布
- 本地测试:在项目根目录运行 bundle exec jekyll serve或 jekyll s,在 http://localhost:4000预览网站。修改内容后会自动刷新。
- 构建站点:运行 bundle exec jekyll build,生成的完整网站位于 _site目录。
- 部署:将 _site目录的内容(或整个源码,如果使用 GitHub Pages 的自动构建)部署到你的托管服务(如 GitHub Pages, Netlify, Vercel 等)。
总结建议
从修改 _config.yml和 _data/下的文件开始快速个性化,然后通过 Front Matter 和内置的 include助手提升单篇 Post 的质量,最后再根据需要深入定制样式和布局。主题的文档非常详尽,遇到具体问题时可查阅对应模块的说明。
踩坑及经验
-
如果创建的post(md文件)发现构建后不显示,请注意md文件的命名格式(YYYY-MM-DD-your-title.md),且该日期不能超过当前实际日期,因为jekyll只会渲染当前日期及之前的文章,另外时间也不要设置的太早,不然即时的修改可能需要重新jekyll clean,jekyll server才会生效,似乎是因为有分页,默认只会即时渲染(本地server开着时修改post内容)首页的几篇post
-
post里的内容如果有liquid的关键字({{ … }},{% … %},和{# … #}),需要转义,否则在构建时会被解析而不是直接显示
-
在md文件里,如果一段内容不在列表里且有缩进Tab,会被视为一个代码块(渲染后是代码块形式),但和三个反引号包裹的代码块```也有区别,首先用缩进的代码块里面空行也要有缩进(很多时候这个空行会出现渲染问题),而且不能标注代码使用的语言(三个反引号标注代码语言的代码内容,会在编辑器和渲染后的网页中有结构化的高亮显示),所以如果是代码块,极其不建议使用缩进表示
-
md文件里一个有序/无序列表下的内容,需要tab缩进,以确保其中的内容层级,所以如果一段代码块在一个列表下,请注意它的缩进(需要缩进,以表示其是层级是在列表下的),而如果代码块不在列表里,一定不要使用缩进,否则渲染会出问题(因为缩进也可以表示代码块),而代码块(三个反引号包裹的)如果在各级标题下(#,##)则不需要缩进
-
在markdown的表格里,如果表格内容中有反引号包裹的单行代码,其中的内容不能以空格开头,否则会有渲染问题,导致整个表格渲染不出来,比如表格中有如下这样的行,会导致整个表格解析错误:
| 宽度 | 最小字段宽度 | `"%10s" % "hello"` | ` hello` |问题在于 hello在反引号内以4个空格开头。在Markdown中,空格是特殊的控制字符,尤其是在表格单元格中,开头的连续空格会干扰表格的解析。