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

Ins*_*der 12 static-site twitter-bootstrap hugo hugo-shortcode

我写了一个短代码来创建一个引导程序可关闭的警报框。下面是我的短代码称为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>
Run Code Online (Sandbox Code Playgroud)

这是我从我的内容降价文件中调用的方式:

{{% message warning%}}
This can cause build errors
{{% /message %}}
Run Code Online (Sandbox Code Playgroud)

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

<!-- raw HTML omitted -->
<p>This can cause build errors</p>
<!-- raw HTML omitted -->
Run Code Online (Sandbox Code Playgroud)

我不明白这里有什么问题。我已经创建了其他短代码(虽然不使用 .Inner,但这是我的第一次尝试)并且它们工作正常,例如我为像 pinterest 这样的图像网格创建了一个短代码,它接受多达 10 个图像 URL 并吐出 HTML。不知道为什么这个特定的 .Inner 短代码失败。请帮忙。我的 Hugo 版本是v0.74.3/extended darwin/amd64.

编辑

当我使用标签{{< >}}而不是{{% %}}然后它工作。但是我可能会在内部文本中进行一些降价处理,因此我想使用{{% %}}.

如果我理解正确, using{{% %}}将首先处理内部文本中的降价,然后将其作为.Inner.

n m*_*n m 19

这是最新“hugo”问题中最常见的问题 - Stack Overflow在过去 5 天内!¹

在您的 Hugo 配置文件中,您需要告诉默认的 Markdown 渲染器 Goldmark 来渲染原始 HTML。如果您使用 config.yaml,请使用以下命令:

markup:
  goldmark:
    renderer:
      unsafe: true
Run Code Online (Sandbox Code Playgroud)

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

[markup]
  [markup.goldmark]
    [markup.goldmark.renderer]
      unsafe = true
Run Code Online (Sandbox Code Playgroud)

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

¹ 这是我在 5 天内第三次回答这个常见问题。其他 2 次是在Hugo 中在帖子中使用内联 javascript并将iframe Amazon Associate 链接嵌入到 .md 文件 R 中

  • 这个解决方案可以发布到hugo文档中吗?https://gohugo.io/templates/shortcode-templates/?我确信这个问题被很多人问到,因为这是每个人都想做的事情。甚至该页面上的教程视频也演示了此错误。(更好的解决方案是更改此反功能。为什么您希望短代码失败,因为您使用了 {{&lt; &gt;}} 而不是 {{% %}}?) (2认同)