Hugo模板之Doks使用记录

喜新厌旧

之前在Hugo上找文档的模板,相中了Doks,但是最近再去看,更喜欢Hextra了。
再换掉它之前,先做个记录吧。

安装

Doks推荐的安装方式是用npm。也就是直接新建了一个项目

npm create thulite@latest -- --template doks

npm的好处呢,已经做好packages配置,稍微方便一点吧。

基本配置

config/_default/hugo.toml修改站点基本信息。

多语言配置

config/_default/languages.toml设置多语言。并到config/_default/hugo.toml中设置默认语言,并在disableLanguages去掉要开放的语言。

# Multilingual
defaultContentLanguage = "en"
disableLanguages = ["de", "nl"]
defaultContentLanguageInSubdir = false

可以添加一个zh语言,设置为默认。en不禁用。那就支持中英文双语了。 defaultContentLanguageInSubdir如果设置为true,表示多语言在子目录下。

这里开启多语言后,就报错了。

ERROR No js resource found at /assets/js/flexsearch.zh.js

discussions/1288,中看到说复制node_modules/@thulite/doks-core/assets/js/flexsearch.js到对应位置。

cp node_modules/@thulite/doks-core/assets/js/flexsearch.js /assets/js/flexsearch.zh.js
cp node_modules/@thulite/doks-core/assets/js/flexsearch.js /assets/js/flexsearch.en.js

翻译文件需要新建如i18n/zh.tomli18n/en.toml

更多多语言设置可以看i18n文档

使用

数学公式

Doks使用的是vercel.appMath API,没有用常规的JS库KaTeX或MathJax。

所以写法上有一些不同,需要包在math的codeblock中:

```math
$$
\frac{1}{\Gamma(s)}\int_{0}^{\infty}\frac{u^{s-1}}{e^{u}-1}\mathrm{d}u
$$
```

如果要引入MathJax,可以在layouts/partials/head/script-header.html中添加

<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
<script>
  MathJax = {
    tex: {
      displayMath: [['\\[', '\\]'], ['$$', '$$']],  // block
      inlineMath: [['\\(', '\\)']]                  // inline
    },
    loader:{
      load: ['ui/safe']
    },
  };
</script>

总结

一开始感觉样式比较简单,后来看着样式有点太素了。左侧菜单越看越丑,深深的加粗黑字感觉生硬,其他样式也没什么好看的。
而且作为Hugo模板,在样式上做的一般,本身素质不具备让人抛弃其他选择而选择它。单独的项目结构,有点脱离Hugo Theme的范畴了,使得绑定太强,更换其他theme变得不方便。


最后修改于 2025-06-05