雨果短码忽略了说"raw HTML omitted"



我写了一个短代码来创建一个引导程序可解雇的警报框。下面是我的简称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">&times;</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">&times;</span>
</button>
</div>

然后在您的内容标记文件中:

{{< message warning >}}
This can cause build errors
{{< message />}}

这似乎是对我们来说最好、最简单的解决方案,因为它不需要我们修改全局配置。

最新更新