分类存放md

要在 Hugo 中分类存放 Markdown 文档,并保持正确的加载和渲染,你可以通过以下方式进行分类存放:

1. 使用 Hugo 自定义内容目录

content 目录下,你可以根据不同的分类创建子目录,并将相应的 Markdown 文件放在这些子目录中。例如,你可以按类别存放博客文章、项目文档等。

示例

假设你有两种类型的内容:“博客”和“项目文档”,你可以按以下结构分类存放:

1
2
3
4
5
content/
├── blog/
│   └── my-blog-post.md
├── projects/
│   └── my-project-doc.md

每个子目录中的 Markdown 文件会根据目录结构自动生成相应的 URL。例如:

  • content/blog/my-blog-post.md -> /blog/my-blog-post/
  • content/projects/my-project-doc.md -> /projects/my-project-doc/

2. 自定义内容分类和类型

Hugo 允许你为不同的目录设置不同的 内容类型(content types),这可以通过在 config.toml 中配置来实现。默认情况下,目录名会成为内容类型,但你也可以手动配置。

步骤

  1. config.toml 文件中指定不同内容类型的分类。例如:
1
2
3
[taxonomies]
  category = "categories"
  tag = "tags"
  1. 在每个 Markdown 文件的前置元数据中,指定分类或类型:
1
2
3
4
5
6
+++
title: "My Blog Post"
date: 2024-10-01
categories: ["blog"]
tags: ["hugo", "markdown"]
+++

这样 Hugo 会自动按分类生成 URL,并允许你在页面中按分类进行筛选。

3. 使用 mounts 挂载多个分类目录

如果你希望将分类的内容存放在 content 目录之外,你可以使用 mounts 配置将外部目录挂载到 Hugo 的 content

步骤

  1. config.toml 中配置 mounts,指定分类目录的位置:
1
2
3
4
5
6
7
8
[module]
  [[module.mounts]]
    source = "custom_blog_content"
    target = "content/blog"

  [[module.mounts]]
    source = "custom_project_content"
    target = "content/projects"
  1. 将相应的内容文件存放在 custom_blog_contentcustom_project_content 目录中。

示例

如果你将博客文章存储在 custom_blog_content 目录中,而项目文档存储在 custom_project_content 目录中:

1
2
3
4
5
custom_blog_content/
├── my-blog-post.md

custom_project_content/
├── my-project-doc.md

Hugo 会将 custom_blog_content 映射为 content/blog,而 custom_project_content 映射为 content/projects

4. 为不同分类设置不同的布局

根据不同的分类或类型,Hugo 还允许你使用不同的布局模板。你可以在 layouts 目录中为每种类型的内容创建自定义模板。例如:

1
2
3
4
5
layouts/
├── blog/
│   └── single.html  # 用于单个博客文章
├── projects/
│   └── single.html  # 用于单个项目文档

Hugo 会根据内容的分类或类型自动使用对应的布局模板进行渲染。

5. 示例:将 Markdown 按类别存放并加载

假设你想将 Markdown 文件分类存放到不同目录中:

  • content/blog/ 用于博客文章
  • content/projects/ 用于项目文档

然后在 config.toml 中指定分类和标签系统:

1
2
3
4
5
6
[params]
  enableMath = true  # 启用数学公式

[permalinks]
  blog = "/blog/:slug/"  # 自定义博客文章的 URL 结构
  projects = "/projects/:slug/"  # 自定义项目文档的 URL 结构

每个文件的前置元数据可以包含分类和标签:

1
2
3
4
5
6
+++
title: "My Blog Post"
date: 2024-10-01
categories: ["blog"]
tags: ["markdown", "hugo"]
+++

这样,Markdown 文件就可以按分类存放,并保持正常加载和渲染。如果你希望将它们放在 content 目录之外,还可以使用 mounts 挂载自定义目录。

总结

  • 分类存放 Markdown 文件:将 Markdown 文件按分类存放在 content 子目录中,例如 blogprojects
  • 自定义 URL 结构和分类:通过 config.toml 文件指定分类和标签系统。
  • 挂载外部目录:使用 mounts 可以将内容放在 content 之外的目录中。
  • 自定义布局:为不同类型或分类的内容使用不同的布局模板,增强用户体验。

这种方式允许你将不同类型的 Markdown 文件有条理地分类存放,同时保持 Hugo 的灵活性。如果你有更多需求或问题,请告诉我!

0%