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 }}
Login via Github