參考文章(https://lucumt.info/post/hugo/enable-diagrams-in-hugo/#flowchart%E5%9B%BE%E8%A1%A8)
觀察theme/mini/layout/_default/baseof.html,發現{{ partial "footer.html" . }}這段。
於是我們能在layouts/partical/footer.html內,新增程式碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<!-- flowchart -->
{{- if and (or .Params.flowchartDiagrams.enable (and .Site.Params.flowchartDiagrams.enable (ne .Params.flowchartDiagrams.enable false))) (or .IsPage .IsHome) -}}
<script src="https://cdnjs.cloudflare.com/ajax/libs/raphael/2.3.0/raphael.min.js" integrity="sha512-tBzZQxySO5q5lqwLWfu8Q+o4VkTcRGOeQGVQ0ueJga4A1RKuzmAu5HXDOXLEjpbKyV7ow9ympVoa6wZLEzRzDg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flowchart/1.18.0/flowchart.min.js" integrity="sha512-FX1RpRt8RDEtTiFbDxg4u62QUJXhVE+cVE1mBD0iSOpj/ZZ/VNyZKlwhBT39QMcP5KEYS3yU8wh6Qpa57qVnbg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
let flowPageOptions = {{ .Page.Params.flowchartDiagrams.options }};
let flowSiteOptions = {{ .Site.Params.flowchartDiagrams.options }};
flowPageOptions = !!flowPageOptions ? flowPageOptions : {};
flowSiteOptions = !!flowSiteOptions ? flowSiteOptions : {};
// page options have high priority then site options
let flowOptions = {...flowSiteOptions, ...flowPageOptions};
document.querySelectorAll('[id^="flow_"]').forEach(function(elem) {
code = elem.querySelector('pre');
flowchart.parse(code.innerText).drawSVG(elem, flowOptions);
code.hidden = true;
})
</script>
{{- end -}}
|
新增檔案layout/_default/_markup/render-codeblock-flow.html。
1
2
3
4
5
|
<div id="flow_{{ .Ordinal }}">
<pre>
{{- .Inner | safeHTML }}
</pre>
</div>
|
最後為了避免流程圖太大,新增以下css
1
2
3
4
|
svg {
width: 100%;
height: auto;
}
|
mini主題支援自訂css,需在hugo.toml新增:
1
2
|
[params]
customCSS = [ 'css/custom.css' ]
|
並將該文件至於static/css/custom.css