文章元数据指定

问题原因

  • 主题自带的 archetypes:许多 Hugo 主题(包括 FixIt)在其主题目录中包含了自己的 archetypes 模板。当你运行 hugo new 时,Hugo 会优先使用主题中的 archetypes,而不是你项目根目录下的 archetypes

解决方案

方法一:覆盖主题的 archetypes

  1. 在项目中创建对应的 archetypes 文件

    • 在你的 Hugo 项目根目录下,找到或创建 archetypes 目录。
    • 在该目录中创建一个与主题 archetypes 同名的文件,例如 default.md
  2. 复制并修改主题的 archetypes 文件

    • 从主题目录复制 default.md 到你项目的 archetypes 目录:
      1
      
      cp themes/FixIt/archetypes/default.md archetypes/default.md
    • 编辑 archetypes/default.md,删除不需要的元数据,或者根据你的需求进行修改。例如:
      1
      2
      3
      4
      5
      
      +++
      title: "{{ replace .Name "-" " " | title }}"
      date: {{ .Date }}
      draft: true
      +++
      这样,你就可以控制生成的前置元数据,只保留你需要的字段。
  3. 验证修改效果

    • 运行 hugo new 命令创建新内容,检查生成的文件是否符合预期。

方法二:指定使用自定义 archetypes

  1. 使用 --kind 参数

    • 当你运行 hugo new 时,可以使用 --kind 参数指定使用的 archetype:
      1
      
      hugo new --kind default posts/my-new-post.md
    • 这将强制 Hugo 使用你项目中 archetypes/default.md
  2. 为特定内容类型创建 archetype

    • 如果你有不同的内容类型(如 postspages),可以在 archetypes 目录中创建对应的模板:
      1
      2
      3
      
      archetypes/
      ├── default.md
      └── posts.md
    • 然后运行:
      1
      
      hugo new posts/my-new-post.md
      Hugo 会自动使用 archetypes/posts.md

方法三:禁用主题的 archetypes(不推荐)

  • 修改配置文件

    • config.toml 中添加以下配置:
      1
      
      themeArchetypes = false
    • 注意:这将禁用所有主题的 archetypes,如果你的主题依赖特定的 archetypes,这可能会导致问题,因此不太推荐。

示例

假设主题的 archetypes/default.md 内容为:

1
2
3
4
5
6
7
8
9
+++
title: "{{ .Title }}"
date: {{ .Date }}
tags:
  - tag1
  - tag2
categories:
  - category1
+++

你希望只保留 titledate,可以在项目的 archetypes/default.md 中修改为:

1
2
3
4
5
+++
title: "{{ .Title }}"
date: {{ .Date }}
draft: true
+++

总结

  • 主题中的 archetypes 会覆盖项目中的默认设置。为了解决这个问题,需要在项目中创建对应的 archetypes 文件。
  • 在项目的 archetypes 目录中创建或修改模板,确保 Hugo 使用你的自定义模板。
  • 验证修改效果,确保生成的内容符合你的需求。

希望这些步骤能帮助你控制 hugo new 命令生成的文档配置。如果你有其他问题,请随时提问!

0%