Bootstrap Hugo简码忽略了“原始HTML省略”

dy1byipe  于 2023-05-27  发布在  Bootstrap
关注(0)|答案(2)|浏览(135)

我写了一个简短的代码来创建一个 Bootstrap 可解除的警报框。下面是我的代码,叫做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>

这就是我如何从我的内容markdown文件调用:

{{% message warning%}}
This can cause build errors
{{% /message %}}

但是,在输出HTML中,会生成以下代码:

<!-- raw HTML omitted -->
<p>This can cause build errors</p>
<!-- raw HTML omitted -->

我不明白这是怎么回事。我已经创建了其他短码(不使用.Inner虽然,这是我的第一次尝试),他们工作得很好eidogg。我为像pinterest这样的图像网格创建了一个短代码,它最多接受10个图像URL并输出HTML。不知道为什么这个特定的。内部短代码失败。请帮帮我我的Hugo版本是v0.74.3/extended darwin/amd64

编辑

当我使用标签{{< >}}而不是{{% %}}时,它就可以工作了。但是我可能会在Inner Text中放一些markdown,因此我想使用{{% %}}
如果我理解正确的话,使用{{% %}}将首先处理内部文本中的markdown,然后将其传递给短代码.Inner

kse8i1jr

kse8i1jr1#

这是过去5天内在Newest 'hugo' Questions - Stack Overflow中最常被问到的问题!¹
在你的Hugo配置文件中,你需要告诉默认的Markdown渲染器,也就是Goldmark,渲染原始的HTML。如果你使用config.yaml,使用这个:

markup:
  goldmark:
    renderer:
      unsafe: true

如果您使用config.toml,请使用以下命令:

[markup]
  [markup.goldmark]
    [markup.goldmark.renderer]
      unsafe = true

我在我的网站www.example.com上写了这个http://www.ii.com/hugo-tips-fragments/#_markup。

nfzehxib

nfzehxib2#

如果你想保持你的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>

然后在您的内容markdown文件中:

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

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

相关问题