mirror of https://github.com/istio/istio.io.git
Add TOC to reference pages. (#1419)
I didn't realize the Hugo's TOC support features only work for markdown files. Since our reference pages are HTML, none of these were getting TOCs. I now roll my own TOC functionality in that case, to bring up back TOCs for our reference pages.
This commit is contained in:
parent
f712e61515
commit
0af7fbd6c5
|
@ -1,5 +1,5 @@
|
|||
{{ $toc := (trim .TableOfContents " ") }}
|
||||
{{ $needTOC := .Params.toc | (ne $toc "") }}
|
||||
{{ $toc := partial "toc.html" (dict "page" .) }}
|
||||
{{ $needTOC := .Scratch.Get "needTOC" }}
|
||||
|
||||
</main>
|
||||
|
||||
|
@ -33,7 +33,7 @@
|
|||
<nav class="toc">
|
||||
<div class="spacer"></div>
|
||||
<div id="toc" class="directory" role="directory">
|
||||
{{ .TableOfContents }}
|
||||
{{ $toc }}
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
{{ $toc := partial "toc.html" (dict "page" .) }}
|
||||
{{ $needTOC := .Scratch.Get "needTOC" }}
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row row-offcanvas">
|
||||
<div class="col-0 col-md-3 col-xl-2 sidebar-offcanvas">
|
||||
|
@ -10,9 +13,6 @@
|
|||
{{ end }}
|
||||
</div>
|
||||
|
||||
{{ $toc := (trim .TableOfContents " ") }}
|
||||
{{ $needTOC := .Params.toc | (ne $toc "") }}
|
||||
|
||||
{{ if and $needTOC (ne .Params.force_inline_toc true) }}
|
||||
<div class="col-12 col-md-9 col-xl-8">
|
||||
{{ else }}
|
||||
|
@ -44,8 +44,7 @@
|
|||
{{ if $needTOC }}
|
||||
<nav class="toc-inlined d-xl-none d-print-none" {{ if .Params.force_inline_toc }}style="display:block!important" {{ end }}>
|
||||
<div class="directory" role="directory">
|
||||
{{ $t := replace .TableOfContents "TableOfContents" "InlinedTableOfContents" }}
|
||||
{{ safeHTML $t }}
|
||||
{{ replace $toc "TableOfContents" "InlinedTableOfContents" | safeHTML }}
|
||||
</div>
|
||||
</nav>
|
||||
{{ end }}
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
{{ $page := .page }}
|
||||
{{ $toc := (trim $page.TableOfContents " ") }}
|
||||
{{ $page.Scratch.Set "needTOC" false }}
|
||||
|
||||
{{ if (eq $toc "") }}
|
||||
{{ $headers := findRE "<h[23456].*?id=\".*?\".*?>.*?</h[23456]>" $page.Content }}
|
||||
{{ $len := len $headers }}
|
||||
|
||||
{{ if gt $len 0 }}
|
||||
{{ $page.Scratch.Set "needTOC" true }}
|
||||
<nav id="TableOfContents">
|
||||
<ul>
|
||||
{{ $page.Scratch.Set "level" 50 }}
|
||||
{{ range $h := $headers }}
|
||||
{{ $level := index (index (findRE "<h[23456].*?" $h) 0) 2 | int }}
|
||||
{{ $id := replaceRE "<h[23456].*?id=\"(.*?)\".*?>.*?</h[23456]>" "$1" $h }}
|
||||
{{ $title := replaceRE "<h[23456].*?>(.*?)</h[23456]>" "$1" $h }}
|
||||
{{ $current := $page.Scratch.Get "level" | int }}
|
||||
|
||||
{{ if gt $level $current }}
|
||||
<ul>
|
||||
{{ else if lt $level $current }}
|
||||
{{ $delta := sub ($page.Scratch.Get "level") $level }}
|
||||
{{ range $index, $num := (seq $delta) }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<li><a href="#{{ $id }}">{{ $title }}</a></li>
|
||||
|
||||
{{ $page.Scratch.Set "level" $level }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
</nav>
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ $page.Scratch.Set "needTOC" true }}
|
||||
{{ safeHTML $toc }}
|
||||
{{ end }}
|
Loading…
Reference in New Issue