Shortcode

Ordinal

返回短代码相对于其父级的从零开始的序号。

签名
SHORTCODE.Ordinal
返回类型
int

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 "The %q shortcode was unable to find %s. See %s" $.Name $src $.Position }}
  {{ end }}
{{ else }}
  {{ errorf "The %q shortcode requires a 'src' argument. See %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="">