Hugo模板中的CDATA

• 本文约 260 字,阅读大致需要 1 分钟 | Cheatsheets | #Hugo | #RSS | #作弊条 | #Atom | #XML | #Templates

liuf 提醒,我之前做的Atom feed没有输出全文,检查了一下发现自己写的Atom模板有点问题。

参考了一下之前Movable Type输出的Atom feed,发现它的 content 会套一层 <![CDATA[ ... ]]>,大致浏览了一下 RFC 4287,似乎这么做的理由是 RFC 4287 4.1.3.3 中关于HTML编码的要求,套一层CDATA比较省事。

于是接下来的问题是如何让Hugo输出文字的 <![CDATA[ 这样的文字而不是把其中的 < 转换成 &lt;。此处可以使用 safeHTML 来把这些文字标记为原样输出,具体到输出Atom feed的 <content> 元素,可以用下面的写法:

<content type="html" xml:base="{{ "/" | absLangURL }}">{{ "<![CDATA[" | safeHTML }}{{ .Content }}{{ "]]>" | safeHTML }}</content>

修改模板后,检查并确认生成的XML依然是well-formed即可。