HUGO
Menu
GitHub 87548 stars Mastodon

InnerDeindent

返回 shortcode 开始和结束标签之间的内容,并移除缩进,适用于 shortcode 调用包含结束标签的情况。

Syntax

SHORTCODE.InnerDeindent

Returns

template.HTML

Inner 方法类似,InnerDeindent 返回 shortcode 开始和结束标签之间的内容。但是,使用 InnerDeindent 时,内容前的缩进会被移除。

这使我们能够有效地绕过 CommonMark 规范中规定的有关 缩进 的规则。

考虑此 Markdown,一个无序列表,每个列表项内包含一个缩略图图像的小画廊:

content/about.md
- Gallery one

    {{< gallery >}}
    ![kitten a](thumbnails/a.jpg)
    ![kitten b](thumbnails/b.jpg)
    {{< /gallery >}}

- Gallery two

    {{< gallery >}}
    ![kitten c](thumbnails/c.jpg)
    ![kitten d](thumbnails/d.jpg)
    {{< /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>![kitten a](images/a.jpg)
      ![kitten b](images/b.jpg)
      </code></pre>
    </div>
  </li>
  <li>
    <p>Gallery two</p>
    <div class="gallery">
      <pre><code>![kitten c](images/c.jpg)
      ![kitten d](images/d.jpg)
      </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>

Last updated: January 1, 0001
Improve this page