Ordinal

Ordinal 方法返回短碼相對於其父層的零基序號。如果父層是頁面本身,則該序號代表該短碼在頁面內容中的位置。

這個方法在許多情況下很有用,例如當同一頁面中多次呼叫同一短碼時,為每個短碼分配唯一的元素 ID。例如:

content/about.md
{{< img src="images/a.jpg" >}}

{{< img src="images/b.jpg" >}}

此短碼會進行錯誤檢查,然後渲染一個帶有唯一 id 屬性的 HTML img 元素:

layouts/shortcodes/img.html
{{ $src := "" }}
{{ with .Get "src" }}
  {{ $src = . }}
  {{ with resources.Get $src }}
    {{ $id := printf "img-%03d" $.Ordinal }}
    <img id="{{ $id }}" src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
  {{ else }}
    {{ errorf "該 %q 短碼無法找到 %s。請參見 %s" $.Name $src $.Position }}
  {{ end }}
{{ else }}
  {{ errorf "該 %q 短碼需要 'src' 參數。請參見 %s" .Name .Position }}
{{ end }}

Hugo 渲染頁面為:

<img id="img-000" src="/images/a.jpg" width="600" height="400" alt="">
<img id="img-001" src="/images/b.jpg" width="600" height="400" alt="">