Ordinal(序数)
Syntax
SHORTCODE.Ordinal
Returns
int
Ordinal
方法返回shortcode相对于其父元素的从零开始计算的序数。如果父元素是页面本身,则序数代表该shortcode在页面内容中的位置。
该方法在多个页面上从两次或更多次调用shortcode时,用于分配唯一的元素ID非常有用。例如:
content/about.md
{{< img src="images/a.jpg" >}}
{{< img src="images/b.jpg" >}}
此shortcode执行错误检查,然后渲染带有唯一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 shortcode无法找到%s。请参阅%s" $.Name $src $.Position }}
{{ end }}
{{ else }}
{{ errorf "%q shortcode需要一个'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="">