Hugo Markdownify 无法生成 <p> tag
加个条件判断
在尝试为Stream页面利用Hugo Shortcodes添加新的movie和tv标签时,使用{{ .Inner | Markdownify }}无法正确对Markdown文本生成HTML<p>tag。
例如:
{{ $text .= "What a *nice* day!" }}
{{ $text | Markdownify}} -> What a <em>nice</em> day!
但我预期生成的应是:
{{ $text | Markdownify }} -> <p>What a <em>nice</em> day!</p>
这是个老问题:Markdownify最主要被用来生成标题之类的inline元素,而不是类似段落的blocks。但很多Hugo主题都在使用Markdownify,所以一时想要用RenderString取代也不太可能。
解决方法
在我的情况中,先识别是否存在<p>tag的方式:
{{ $markdown := .intro | markdownify }}
{{ if not ( strings.Contains $markdown "<p>" ) }}
<p>{{ $markdown }}</p>
{{ else }}
{{ $markdown }}
{{ end }}
或进一步匹配以h、p开头的tag都可以:
{{ $markdown := .text | markdownify }}
{{ if not ( findRE "<[h|p][^>]*>" $markdown ) }}
<p>{{ $markdown }}</p>
{{ else }}
{{ $markdown }}
{{ end }}