InnerDeindent
返回 shortcode 开始和结束标签之间的内容,并移除缩进,适用于 shortcode 调用包含结束标签的情况。
Syntax
SHORTCODE.InnerDeindent
Returns
template.HTML
与 Inner 方法类似,InnerDeindent 返回 shortcode 开始和结束标签之间的内容。但是,使用 InnerDeindent 时,内容前的缩进会被移除。
这使我们能够有效地绕过 CommonMark 规范中规定的有关 缩进 的规则。
考虑此 Markdown,一个无序列表,每个列表项内包含一个缩略图图像的小画廊:
content/about.md
- Gallery one
{{< gallery >}}


{{< /gallery >}}
- Gallery two
{{< gallery >}}


{{< /gallery >}}在上面的示例中,注意 shortcode 开始和结束标签之间的内容缩进了四个空格。根据 CommonMark 规范,这被视为缩进代码块。
使用此 shortcode,调用 Inner 而不是 InnerDeindent:
layouts/_shortcodes/gallery.html
<div class="gallery">
{{ .Inner | strings.TrimSpace | .Page.RenderString }}
</div>Hugo 将 Markdown 渲染为:
<ul>
<li>
<p>Gallery one</p>
<div class="gallery">
<pre><code>

</code></pre>
</div>
</li>
<li>
<p>Gallery two</p>
<div class="gallery">
<pre><code>

</code></pre>
</div>
</li>
</ul>尽管根据 CommonMark 规范在技术上是正确的,但这不是我们想要的。如果我们使用 InnerDeindent 方法移除缩进:
layouts/_shortcodes/gallery.html
<div class="gallery">
{{ .InnerDeindent | strings.TrimSpace | .Page.RenderString }}
</div>Hugo 将 Markdown 渲染为:
<ul>
<li>
<p>Gallery one</p>
<div class="gallery">
<img src="images/a.jpg" alt="kitten a">
<img src="images/b.jpg" alt="kitten b">
</div>
</li>
<li>
<p>Gallery two</p>
<div class="gallery">
<img src="images/c.jpg" alt="kitten c">
<img src="images/d.jpg" alt="kitten d">
</div>
</li>
</ul>