配置 Obsidian
将 Obsidian 的仓库,设置为 Hugo 的/content
文件夹
打开 设置 => 文件与链接 => 内部链接类型,选择"基于仓库根目录的绝对路径"
添加 partials 代码片段
在/layouts/partials
下添加convert_links.html
文件,内容如下:
<!-- 文件路径:partials/convert_links.html -->
{{- $pattern := `\[\[(.*?)\|(.*?)\]\]` -}} {{- $linkPattern := `<a href="/$1">$2</a>` -}}
{{- $content := . | replaceRE $pattern $linkPattern | safeHTML -}}
{{-$content -}}
修改 single.html 文件
Tips: 如果安装了主题,请不要在主题中修改源文件,在自己的 layouts 中修改
在本地创建/layouts/_default/single.html
文件
复制/themes/PaperMod/layouts/_default/single.html
文件中的内容到文件中
替换代码
{{- if .Content }}
<div class="post-content">
{{- if not (.Param "disableAnchoredHeadings") }}
{{- partial "anchored_headings.html" .Content -}}
{{- else }}{{ .Content }}{{ end }}
</div>
{{- end }}
变成
{{- if .Content }}
<div class="post-content">
{{- $processedContent := .Content }}
{{- if not (.Param "disableAnchoredHeadings") }}
{{- $processedContent := partial "anchored_headings.html" }}
{{- end }}
{{- $processedContent | partial "convert_links.html" | safeHTML }}
</div>
{{- end }}
实现效果
点击跳转到[[hugo/Hugo常用配置|Hugo常用配置]]
存在的问题
- 正则表达式是全局替换,只要在文件中出现了
[[]]
都会被替换。修改成链接中必须带有|
才会被替换 - 跳转链接的路径是文件名,因此需要保证每个文件的 slug 和文件名保持一致,需要修改 yaml 中的 slug,改成
slug: {{ title }}
,slug 含义参考[[hugo/Hugo常用配置|Hugo常用配置]]