InnerDeindent
语法
SHORTCODE.InnerDeindent
返回
template.HTML
类似于 Inner
方法,InnerDeindent
返回开始和结束短代码标签之间的内容。但是,使用 InnerDeindent
,会删除内容之前的缩进。
这使我们可以有效地绕过 缩进的规则,该规则在 CommonMark 规范中提供。
考虑以下 Markdown,一个无序列表,每个列表项中包含一个小的缩略图库
content/about.md
- Gallery one
{{< gallery >}}


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


{{< /gallery >}}
在上面的示例中,请注意开始和结束短代码标签之间的内容缩进了四个空格。按照 CommonMark 规范,这被视为缩进的代码块。
使用此短代码,调用 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>