15

我编写了一个简码来创建一个引导程序可关闭的警报框。下面是我的简码,称为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 -->

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

编辑

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

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

4

1 回答 1

26

这是最近 5 天内最新的“雨果”问题中最常见的问题 - 堆栈溢出!¹

在你的 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上写过这个。

于 2020-08-01T15:21:10.193 回答