我写了一个短代码来创建一个引导程序可解雇的警报框。下面是我的简称layouts/shortcodes/message.html
。
<div class="alert alert-{{.Get 0}} alert-dismissible fade show" role="alert">
{{.Inner}}
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
这就是我从我的内容降价文件调用的方式:
{{% message warning%}}
This can cause build errors
{{% /message %}}
然而,在输出HTML中,生成了以下代码:
<!-- raw HTML omitted -->
<p>This can cause build errors</p>
<!-- raw HTML omitted -->
我不明白这里出了什么问题。我已经创建了其他的短代码(虽然没有使用.iner,但这是我的第一次尝试(,它们运行良好。例如,我为像pinterest这样的图像网格创建了一个短代码,它可以接受多达10个图像URL并吐出HTML。不确定此特定的内部短代码失败的原因。请帮忙。我的Hugo版本是v0.74.3/extended darwin/amd64
。
编辑
当我使用标签{{< >}}
而不是{{% %}}
时,它就起作用了。但我可能会在内部文本中做一些标记,因此我想使用{{% %}}
。
如果我理解正确,使用{{% %}}
将首先处理内部文本中的标记,然后将其作为.Inner
传递给短代码。
这是最近5天内最新的"hugo"问题-堆栈溢出中最常见的问题!cco
在Hugo配置文件中,您需要告诉默认的Markdown渲染器(Goldmark(来渲染原始HTML。如果您使用config.yaml,请使用以下命令:
markup:
goldmark:
renderer:
unsafe: true
如果您使用config.toml,请使用以下选项:
[markup]
[markup.goldmark]
[markup.goldmark.renderer]
unsafe = true
我在我的网站上写过这件事http://www.ii.com/hugo-tips-fragments/#_markup.
如果你想保证markdown渲染的安全(例如,如果你的网站上有客座作者,或者想阻止博客作者在他们的帖子中添加javascript(,那么你可以在你的短代码中使用markdownify
函数,如下所示:
<div class="alert alert-{{.Get 0}} alert-dismissible fade show" role="alert">
{{ .Inner | markdownify }}
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
然后在您的内容标记文件中:
{{< message warning >}}
This can cause build errors
{{< message />}}
这似乎是对我们来说最好、最简单的解决方案,因为它不需要我们修改全局配置。