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