43 lines
1.6 KiB
HTML
43 lines
1.6 KiB
HTML
{{- .Page.Scratch.Add "tabset-counter" 1 -}}
|
|
{{- $tab_set_id := .Get "name" | default (printf "tabset-%s-%d" (.Page.RelPermalink) (.Page.Scratch.Get "tabset-counter") ) | anchorize -}}
|
|
{{- $tabs := .Scratch.Get "tabs" -}}
|
|
{{- if .Inner -}}{{- /* We don't use the inner content, but Hugo will complain if we don't reference it. */ -}}{{- end -}}
|
|
<div id="{{ $tab_set_id }}">
|
|
<ul>
|
|
{{- range $i, $e := $tabs -}}
|
|
{{- $id := printf "%s-%d" $tab_set_id $i -}}
|
|
<li><a href="#{{ $id }}">{{- trim .name " " -}}</a></li>
|
|
{{- end -}}
|
|
</ul>
|
|
{{- range $i, $e := $tabs -}}
|
|
{{- $id := printf "%s-%d" $tab_set_id $i -}}
|
|
<div id="{{ $id }}">
|
|
{{- with .content -}}
|
|
{{- . -}}
|
|
{{- else -}}
|
|
{{- if eq $.Page.BundleType "leaf" -}}
|
|
{{- /* find the file somewhere inside the bundle. Note the use of double asterisk */ -}}
|
|
{{- with $.Page.Resources.GetMatch (printf "**%s*" .include) -}}
|
|
{{- if ne .ResourceType "page" -}}
|
|
{{- /* Assume it is a file that needs code highlighting. */ -}}
|
|
{{- $codelang := $e.codelang | default ( path.Ext .Name | strings.TrimPrefix ".") -}}
|
|
{{- highlight .Content $codelang "" -}}
|
|
{{- else -}}
|
|
{{- .Content -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- else -}}
|
|
{{- $path := path.Join $.Page.File.Dir .include -}}
|
|
{{- $page := site.GetPage "page" $path -}}
|
|
{{- with $page -}}
|
|
{{- .Content -}}
|
|
{{- else -}}
|
|
{{- errorf "[%s] tabs include not found for path %q" site.Language.Lang $path -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
</div>
|
|
{{- end -}}
|
|
</div>
|
|
{{- $elem := $tab_set_id | safeJS -}}
|
|
<script>$(function(){$("#{{ $elem }}").tabs();});</script> |