把仅有的没有什么价值的20几篇短文迁移到ox-hugo后,开始使用hugo-primer主题没有什么问题,后来还是对hugo-primer不太喜欢,浏览了几十个主题demo后,发现还是论坛和群里人们用的最多的even和jane两个主题更喜欢一些。
但没想到的是,改用这两个主题后,全部出现文章渲染失败的情况。看提示,是author属性的类型不是string类型,而是[]string类型,看样子是类似数组或列表之类的类型。找一篇生成后的md文件查看,果然author属性的值是[不一般的凡],外面被中括号括起来了。
心中很不理解为什么,查看ox-hugo文档,发现还真是特意这么做的,为的是处理多个:author:属性,也就是多作者的情况。ox-hugo文档中还专门有一节写了这个情况:
Link: https://ox-hugo.scripter.co/doc/author/
文中提到有两个解决办法,第一是禁止导出author参数,方法是在org文件头加上
或在subtree里加上属性:
1
2
3
| :PROPERTIES:
:EXPORT_OPTIONS: author:nil
:END:
|
第二个解决办法就是修改主题模板来支持[]string形式的list,也即在调用.Param.author 属性时使用如下代码段:
1
2
3
4
5
6
7
8
9
| {{ with .Params.author }}
{{ $author_type := (printf "%T" .) }}
{{ $author_is_slice := (eq "[]string" $author_type) }}
{{ if $author_is_slice }}
{{ delimit . ", " }}
{{ else }}
{{ . }}
{{ end }}
{{ end }}
|
我还是觉得应该从主题这里下手,经过搜索对比,对两个主题做了一些修改,以even主题为例,需要修改的是两个文件,第一个是layouts/partials/head.html的第13行,原为:
1
| <meta name="author" content="{{ if .Params.author }}{{ .Params.author | safeHTML}}{{ else }}{{ .Site.Author.name | safeHTML }}{{ end }}" />
|
修改为:
1
| <meta name="author" content="{{ if .Params.author }}{{ with .Params.author }}{{ $author_type := (printf "%T" .) }}{{ $author_is_slice := (eq "[]string" $author_type) }}{{ if $author_is_slice }}{{ delimit . ", " | safeHTML }}{{ else }}{{ . | safeHTML}}{{ end }}{{ end }}{{ else }}{{ .Site.Author.name | safeHTML }}{{ end }}" />
|
第二个文件是layouts/partials/post/copyright.html的第4行,原为:
1
| <span class="item-content">{{ if .Params.author }}{{ .Params.author | safeHTML }}{{ else }}{{ .Site.Author.name | safeHTML }}{{ end }}</span>
|
修改为:
1
| <span class="item-content">{{ if .Params.author }}{{ with .Params.author }}{{ $author_type := (printf "%T" .) }}{{ $author_is_slice := (eq "[]string" $author_type) }}{{ if $author_is_slice }}{{ delimit . ", " | safeHTML }}{{ else }}{{ . | safeHTML }}{{ end }}{{ end }}{{ else }}{{ .Site.Author.name | safeHTML }}{{ end }}</span>
|
两个文件修改完成后重新启动hugo server渲染成功。
jane主题类似,需要修改的文件是layouts/partials/head.html第25行至30行那一段,但是我对hugo的template语法不熟,这段不知道怎么改,请了解的同学做相应改动吧。
当然有可能考虑不周,even主题我已经提交了PR,jane主题我提了issue,不知会不会被接受。