hugo的使用总结

shortcode 使用总结

1 . 定义 shortcode 解析 yaml语法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
{{ with .Inner | transform.Unmarshal }}
<a class="friends" target="_blank" title="{{ .name }}" href="{{ .link }}">
  <div class="card" >
  {{ if .avatar }}
    <img
      class="lazyload no-fancybox"
     
      data-original="{{ .avatar }}"
    />
  {{ end }}
  <div class="right">
    <h3>{{ .name }}</h3>
    <div title="{{ .desc }}">{{ .desc }}</div>
  </div>
  </div>
</a>

{{ end }}

shortcode使用文档

参考 hugo的官方文档

even主题 shortcode参考

解析yaml格式内容

我可以 匹配 如 yaml 等内容,利用 正则表达式的方式来实现,代码如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
{{ $matchCode := replaceRE "(.|\n)*```ya?ml((.|\n)*)```(.|\n)*" "$2" .Inner  }}
{{- with $matchCode | transform.Unmarshal  -}}
<a class="friends" target="_blank" title="{{ .name }}" href="{{ .link }}">
  <div class="card" >
  {{- if .avatar }}
    <img
      class="lazyload no-fancybox"
      data-original="{{ .avatar }}"
    />
  {{- end -}}
  <div class="right">
    <h3>{{ .name }}</h3>
    <div title="{{ .desc }}">{{ .desc }}</div>
  </div>
  </div>
</a>
{{-  end  -}}

这个就是我的友人帐的解析代码了, 经过修改后,可以直接使用 markdown 的 代码,方便维护

正则表达式参考文档

将markdown转html

参考文档

1
{{ .Inner | markdownify  }}

中间遇到的困难

第一次写,发现无法匹配代码, 后面发现 是 表达式没法匹配 \n 这个内容,因为 . 不能匹配换行,需要改为 (.|\n) , 修改 后 (.|\n)* 就可以 匹配 yaml代码块的内容了。

github actions 配置部署

参考官方文档

代码提交的那个仓库 配置 私钥,github-pages 的那个仓库配置公钥,也就是 deploy key 【gh-pages 服务端配置公钥

1
ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f gh-pages -N ""

其他笔记

[[post/11.个人总结/工具使用/markdown语法/流程图-时序图写法 | 流程图画法]]

[[post/13.软件使用总结/markdown/markdown流程图绘制 | markdown流程图插件]]

hugo 图片链接处理

接着看一下 Render Hooks 的内容,我们这里只关注 render-image.html 和 render-link.html,下面是 官网的两个例子

layouts/_default/_markup/render-image.html

1
2
3
<p class="md__image">
  <img src="{{ ( replace .Destination "static" "" ) | safeURL }}" alt="{{ .Text }}" {{ with .Title }} title="{{ . }}"{{ end }} />
</p>

vscode markdown复制配置

1
2
3
4
5
{
    "markdown.copyFiles.destination": {
        "**/*": "${documentWorkspaceFolder}/static/image/mdfiles/"
    }
}

这样 把 image 图片复制到 /static 目录下,就能部署显示了