主题文档 - 内容

了解如何在 DoIt 主题中快速, 直观地创建和组织内容.

以下是一些方便你清晰管理和生成文章的目录结构建议:

  • 保持博客文章存放在 content/posts 目录, 例如: content/posts/我的第一篇文章.md
  • 保持简单的静态页面存放在 content 目录, 例如: content/about.md
  • 本地资源组织
本地资源引用

DoIt 新增 | 0.2.10

有三种方法来引用图片音乐等本地资源:

  1. 使用页面包中的页面资源. 你可以使用适用于 Resources.GetMatch 的值或者直接使用相对于当前页面目录的文件路径来引用页面资源.
  2. 将本地资源放在 assets 目录中, 默认路径是 /assets. 引用资源的文件路径是相对于 assets 目录的.
  3. 将本地资源放在 static 目录中, 默认路径是 /static. 引用资源的文件路径是相对于 static 目录的.

引用的优先级符合以上的顺序.

在这个主题中的很多地方可以使用上面的本地资源引用, 例如 链接, 图片, image shortcode, music shortcode 和前置参数中的部分参数.

页面资源或者 assets 目录中的图片处理会在未来的版本中得到支持. 非常酷的功能!

我们鼓励你在 mysite/data/authors 下创建你的作者个人资料 author_name.toml. 在你的资料中, 你可以添加个人链接, 邮箱, 以及支持 i18n 的姓名.

以下是 Alice.toml 的示例:

toml

link = "https://alice.example.com"
email = "alice@example.com"
name = "Alice"
[zh-cn]
    name = "爱丽丝"

在创建作者个人资料后, 您可以在文章的前置参数中指定您的姓名. 之后, 该文章将自动著上你的名字, 并可以根据作者进行分类.

yaml

---
authors: [Alice]
---

您也可以为一篇文章注明多个作者.

yaml

---
authors: [Alice, Bob, Catherine]
---

Hugo 允许你在文章内容前面添加 yaml, toml 或者 json 格式的前置参数.

注意
不是所有的以下前置参数都必须在你的每篇文章中设置. 只有在文章的参数和你的 网站设置 中的 page 部分不一致时才有必要这么做.

这是一个前置参数例子:

yaml

---
title: "我的第一篇文章"
subtitle: ""
date: 2020-03-04T15:58:26+08:00
lastmod: 2020-03-04T15:58:26+08:00
draft: true
authors: []
description: ""
license: ""
images: []

tags: []
categories: []
series: []
series_weight: 1
seriesNavigation: true
featuredImage: ""
featuredImagePreview: ""

hiddenFromHomePage: false
hiddenFromSearch: false
twemoji: false
lightgallery: true
ruby: true
fraction: true
linkToMarkdown: true
linkToSource: false
linkToEdit: false
linkToReport: false
rssFullText: false
license: ''

toc:
  enable: true
  auto: true
code:
  copy: true
  # ...
table:
  sort: true
  # ...
math:
  enable: true
  # ...
mapbox:
  accessToken: ""
  # ...
share:
  enable: true
  # ...
comment:
  enable: true
  # ...
library:
  css:
    # someCSS = "some.css"
    # 位于 "assets/"
    # 或者
    # someCSS = "https://cdn.example.com/some.css"
  js:
    # someJS = "some.js"
    # 位于 "assets/"
    # 或者
    # someJS = "https://cdn.example.com/some.js"
seo:
  images: []
  # ...
outdatedArticleReminder:
  enable: false
  # ...
sponsor:
  enable: false
  # ...
related:
  enable: false
  count: 5
---
  • title: 文章标题.

  • subtitle: DoIt 新增 | 0.2.0 文章副标题.

  • date: 这篇文章创建的日期时间. 它通常是从文章的前置参数中的 date 字段获取的, 但是也可以在 网站配置 中设置.

  • lastmod: 上次修改内容的日期时间.

  • draft: 如果设为 true, 除非 hugo 命令使用了 --buildDrafts/-D 参数, 这篇文章不会被渲染.

  • authors: DoIt 更改 | 0.2.12 文章作者.

  • description: 文章内容的描述.

  • license: 这篇文章特殊的许可.

  • images: 页面图片, 用于 Open Graph 和 Twitter Cards.

  • tags: 文章的标签.

  • categories: 文章所属的类别.

  • series: DoIt 新增 | 0.2.12 文章所属的系列.

  • series_weight: DoIt 新增 | 0.2.13 自定义文章在系列中的位置.

  • seriesNavigation: DoIt 新增 | 0.2.13 是否使用系列导航.

  • featuredImage: 文章的特色图片.

  • featuredImagePreview: 用在主页预览的文章特色图片.

  • hiddenFromHomePage: 如果设为 true, 这篇文章将不会显示在主页上.

  • hiddenFromSearch: DoIt 新增 | 0.2.0 如果设为 true, 这篇文章将不会显示在搜索结果中.

  • twemoji: DoIt 新增 | 0.2.0 如果设为 true, 这篇文章会使用 twemoji.

  • lightgallery: 如果设为 true, 文章中的图片将可以按照画廊形式呈现.

  • ruby: DoIt 新增 | 0.2.0 如果设为 true, 这篇文章会使用 上标注释扩展语法.

  • fraction: DoIt 新增 | 0.2.0 如果设为 true, 这篇文章会使用 分数扩展语法.

  • linkToMarkdown: 如果设为 true, 内容的页脚将显示指向原始 Markdown 文件的链接.

  • linkToSource: DoIt 新增 | 0.2.14 如果设为 false, 则关闭页脚 view source 的链接. 你可以将其设置为一个指向文章原始文件的链接. 使用魔法变量 {path} 来获取文章的相对路径, 这篇文章的 {path}posts/theme-documentation-content/index.en.md.

  • linkToEdit:DoIt 新增 | 0.2.13 如果设为 false, 则关闭页脚 编辑此页 的链接. 你可以将其设置为一个用于编辑这个页面的链接. 使用魔法变量 {path} 来获取这篇文章的相对路径, 这篇文章的 {path}posts/theme-documentation-content/index.zh-cn.md.

  • linkToReport: DoIt 新增 | 0.2.14 如果设为 false, 则关闭页脚 报告问题 的链接. 你可以将其设置为一个用于报告此页面中错误的链接. 使用魔法变量 {path} 来获取文章的相对路径, 这篇文章的 {path}posts/theme-documentation-content/index.en.md, 使用 {title} 来获取文章的标题, 这篇文章的 {title}Theme Documentation - Content, 使用 {url} 来获取文章的链接, 这篇文章的 {url}https://hugodoit.pages.dev/theme-documentation-content/.

  • rssFullText: DoIt 新增 | 0.2.4 如果设为 true, 在 RSS 中将会显示全文内容.

  • enableLastMod: 如果设为 true,在文章的顶部将会显示上次修改内容的日期时间.

  • enableWordCount: 如果设为 true, 在文章的顶部将会显示文章的字数.

  • enableReadingTime: 如果设为 true, 在文章的顶部将会显示文章的阅读时间.

  • license: DoIt 新增 | 0.2.14 许可协议信息 (支持 HTML 格式).

  • toc: DoIt 更改 | 0.2.9网站配置 中的 params.page.toc 部分相同.

  • code: DoIt 新增 | 0.2.0网站配置 中的 params.page.code 部分相同.

  • table: DoIt 新增 | 0.2.14网站配置 中的 params.page.table 部分相同.

  • math: DoIt 更改 | 0.2.0网站配置 中的 params.page.math 部分相同.

  • mapbox: DoIt 新增 | 0.2.0网站配置 中的 params.page.mapbox 部分相同.

  • share: 和 网站配置 中的 params.page.share 部分相同.

  • comment: DoIt 更改 | 0.2.0网站配置 中的 params.page.comment 部分相同.

  • library: DoIt 新增 | 0.2.7网站配置 中的 params.page.library 部分相同.

  • seo: DoIt 新增 | 0.2.10网站配置 中的 params.page.seo 部分相同.

  • outdatedArticleReminder: DoIt 新增 | 0.2.13网站配置 中的 params.page.outdatedArticleReminder 部分相同.

  • sponsor: DoIt 新增 | 0.2.13网站配置 中的 params.sponsor 部分相同.

  • related: DoIt 新增 | 0.2.14网站配置 中的 params.page.related 部分相同.

技巧

DoIt 新增 | 0.2.10

featuredImagefeaturedImagePreview 支持本地资源引用的完整用法.

如果带有在前置参数中设置了 name: featured-imagename: featured-image-preview 属性的页面资源, 没有必要在设置 featuredImagefeaturedImagePreview:

yaml

resources:
- name: featured-image
  src: featured-image.jpg
- name: featured-image-preview
  src: featured-image-preview.jpg

DoIt 主题使用内容摘要在主页中显示大致文章信息. Hugo 支持生成文章的摘要.

文章摘要预览

默认情况下, Hugo 自动将内容的前 70 个单词作为摘要.

你可以通过在 网站配置 中设置 summaryLength 来自定义摘要长度.

如果您要使用 CJK中文/日语/韩语 语言创建内容, 并且想使用 Hugo 的自动摘要拆分功能, 请在 网站配置 中将 hasCJKLanguage 设置为 true.

另外, 你也可以添加 <!--more--> 摘要分割符来拆分文章生成摘要.

摘要分隔符之前的内容将用作该文章的摘要.

注意
请小心输入<!--more--> ; 即全部为小写且没有空格.

你可能希望摘要不是文章开头的文字. 在这种情况下, 你可以在文章前置参数的 summary 变量中设置单独的摘要.

你可能希望将文章前置参数中的 description 变量的内容作为摘要.

你仍然需要在文章开头添加 <!--more--> 摘要分割符. 将摘要分隔符之前的内容保留为空. 然后 DoIt 主题会将你的文章描述作为摘要.

由于可以通过多种方式指定摘要, 因此了解顺序很有用. 如下:

  1. 如果文章中有 <!--more--> 摘要分隔符, 但分隔符之前没有内容, 则使用描述作为摘要.
  2. 如果文章中有 <!--more--> 摘要分隔符, 则将按照手动摘要拆分的方法获得摘要.
  3. 如果文章前置参数中有摘要变量, 那么将以该值作为摘要.
  4. 按照自动摘要拆分方法.
注意
不建议在摘要内容中包含富文本块元素, 这会导致渲染错误. 例如代码块, 图片, 表格等.

这部分内容在 Markdown 基本语法页面 中介绍.

DoIt 主题提供了一些扩展的语法便于你撰写文章.

这部分内容在 Emoji 支持页面 中介绍.

DoIt 基于 $ \KaTeX $ 提供数学公式的支持.

在你的 网站配置 中添加如下设置来启用数学公式支持:

hugo.toml

[markup]
  [markup.goldmark]
    [markup.goldmark.extensions]
      [markup.goldmark.extensions.passthrough]
        enable = true
        [markup.goldmark.extensions.passthrough.delimiters]
          block = [['\[', '\]']]
          inline = [['\(', '\)']]
[params]
  [page]
    [page.math]
      enable = true
      blockLeftDelimiter = '\['
      blockRightDelimiter = '\]'
      inlineLeftDelimiter = '\('
      inlineRightDelimiter = '\)'
      copyTex = true
      mhchem = true
技巧

默认的公式块分割符是 \[ \]

markdown

\[ c = \pm\sqrt{a^2 + b^2} \]

\[ f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi \]

呈现的输出效果如下:

[ c = \pm\sqrt{a^2 + b^2} ]

[ f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi ]

默认的行内公式分割符是 \( \)

markdown

\( c = \pm\sqrt{a^2 + b^2} \) and \( f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi \)

呈现的输出效果如下:

( c = \pm\sqrt{a^2 + b^2} ) and ( f(x)=\int_{-\infty}^{\infty} \hat{f}(\xi) e^{2 \pi i \xi x} d \xi )

Copy-tex 是一个 $ \KaTeX $ 的插件.

通过这个扩展, 在选择并复制 $ \KaTeX $ 渲染的公式时, 会将其 $ \LaTeX $ 源代码复制到剪贴板.

在你的 网站配置 中的 [params.math] 下面设置属性 copyTex = true 来启用 Copy-tex.

选择并复制上一节中渲染的公式, 可以发现复制的内容为 LaTeX 源代码.

mhchem 是一个 $ \KaTeX $ 的插件.

通过这个扩展, 你可以在文章中轻松编写漂亮的化学方程式.

在你的 网站配置 中的 [params.math] 下面设置属性 mhchem = true 来启用 mhchem.

markdown

\[ \ce{CO2 + C -> 2 CO} \]

\[ \ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-} \]

呈现的输出效果如下:

[ \ce{CO2 + C -> 2 CO} ]

[ \ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-} ]

DoIt 主题支持一种 字符注音或者注释 Markdown 扩展语法:

markdown

[Hugo]^(一个开源的静态网站生成工具)

呈现的输出效果如下:

Hugo一个开源的静态网站生成工具

DoIt 新增 | 0.2.0

DoIt 主题支持一种 分数 Markdown 扩展语法:

markdown

[浅色]/[深色]

[99]/[100]

呈现的输出效果如下:

浅色/深色

90/100

DoIt 支持 GitHub 风格的引用块:

markdown

> [!NOTE]
> Useful information that users should know, even when skimming content.

> [!TIP]
> Helpful advice for doing things better or more easily.

> [!IMPORTANT]
> Key information users need to know to achieve their goal.

> [!WARNING]
> Urgent info that needs immediate user attention to avoid problems.

> [!CAUTION]
> Advises about risks or negative outcomes of certain actions.

呈现的输出效果如下:

[!NOTE] Useful information that users should know, even when skimming content.

[!TIP] Helpful advice for doing things better or more easily.

[!IMPORTANT] Key information users need to know to achieve their goal.

[!WARNING] Urgent info that needs immediate user attention to avoid problems.

[!CAUTION] Advises about risks or negative outcomes of certain actions.

相关内容