#43, Update tree menu rendering to support multiple sections
This commit is contained in:
+2
-2
@@ -6,7 +6,7 @@
|
||||
{{ partial "docs/html-head" . }}
|
||||
{{ partial "docs/inject/head" . }}
|
||||
</head>
|
||||
{{- $content := `
|
||||
{{ $content := `
|
||||
# Hugo Book Theme
|
||||
|
||||
This is a placeholder for home page.
|
||||
@@ -14,7 +14,7 @@ You can override this page in:
|
||||
|
||||
- `/content/_index.md`
|
||||
- `/layouts/home.html`
|
||||
` -}}
|
||||
` }}
|
||||
<body>
|
||||
<main class="flex justify-center">
|
||||
<div class="book-page markdown">
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<div class="align-center book-git-footer {{ if not .GitInfo }}justify-end{{ else }}justify-between{{ end }}">
|
||||
{{ with .GitInfo }}
|
||||
<div>
|
||||
{{- $date := .AuthorDate.Local.Format (default "January 2, 2006" $.Site.Params.BookDateFormat) -}}
|
||||
{{ $date := .AuthorDate.Local.Format (default "January 2, 2006" $.Site.Params.BookDateFormat) }}
|
||||
<a href="{{ $.Site.Params.BookRepo }}/commit/{{ .Hash }}" title='Last modified {{ $date }} by {{ .AuthorName }}' target="_blank" rel="noopener">
|
||||
<img src="{{ "svg/code-merge.svg" | relURL }}" /> {{ $date }}
|
||||
</a>
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
{{- template "hrefhack" . -}}
|
||||
{{ template "hrefhack" . }}
|
||||
{{ with .Site.GetPage .Site.Params.BookMenuBundle }}
|
||||
{{- .Content -}}
|
||||
{{ end }}
|
||||
{{ if .Site.Params.BookEnableJS }}
|
||||
{{- template "jsmenu" . -}}
|
||||
{{ end }}
|
||||
@@ -1,47 +1,59 @@
|
||||
<!-- Put configured sections list to .Scratch -->
|
||||
{{ template "book-get-root-section" . }}
|
||||
{{ $bookSection := default "docs" .Site.Params.BookSection }}
|
||||
{{ if eq $bookSection "*" }}
|
||||
{{ .Scratch.Set "BookSections" .Site.Sections }}
|
||||
{{ else }}
|
||||
{{ $bookSections := where .Site.Sections "Section" $bookSection }}
|
||||
{{ .Scratch.Set "BookSections" $bookSections }}
|
||||
{{ end }}
|
||||
|
||||
{{- range .Scratch.Get "BookSections" -}}
|
||||
{{ template "book-section" (dict "Section" . "CurrentPage" $.Permalink) }}
|
||||
{{- end -}}
|
||||
|
||||
{{ define "book-section" }} <!-- Single section of menu (recursive) -->
|
||||
{{ $sections := .Scratch.Get "BookSections" }}
|
||||
{{/* If there is only one section to render then render its children, else render all sections */}}
|
||||
{{ if eq (len $sections) 1 }}
|
||||
{{ with index $sections 0 }}
|
||||
{{ template "book-section-children" (dict "Section" . "CurrentPage" $.Permalink) }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
<ul>
|
||||
{{ range .Section.Sections }}
|
||||
<li {{- if .Params.bookflatsection}} class="flat-section" {{ end }}>
|
||||
{{- if .Content -}}
|
||||
{{ template "book-page-link" (dict "Page" . "CurrentPage" $.CurrentPage) }}
|
||||
{{- else -}}
|
||||
{{- template "title" . -}}
|
||||
{{- end -}}
|
||||
{{ range $sections }}
|
||||
{{ template "book-section" (dict "Section" . "CurrentPage" $.Permalink) }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
|
||||
{{ template "book-section" (dict "Section" . "CurrentPage" $.CurrentPage) }}
|
||||
</li>
|
||||
{{ define "book-section" }}
|
||||
{{ with .Section }}
|
||||
<li {{ if .Params.bookFlatSection}} class="book-section-flat" {{ end }}>
|
||||
{{ if .Content }}
|
||||
{{ template "book-page-link" (dict "Page" . "CurrentPage" $.CurrentPage) }}
|
||||
{{ else }}
|
||||
<span>{{ template "title" . }}</span>
|
||||
{{ end }}
|
||||
|
||||
{{ range .Section.Pages }}
|
||||
{{ template "book-section-children" (dict "Section" . "CurrentPage" $.CurrentPage) }}
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ define "book-section-children" }}
|
||||
{{ with .Section }}
|
||||
<ul>
|
||||
{{ range .Sections }}
|
||||
{{ template "book-section" (dict "Section" . "CurrentPage" $.CurrentPage) }}
|
||||
{{ end }}
|
||||
{{ range .Pages }}
|
||||
<li>
|
||||
{{ template "book-page-link" (dict "Page" . "CurrentPage" $.CurrentPage) }}
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
|
||||
{{ define "book-page-link" }}
|
||||
{{- with .Page -}}
|
||||
<a href="{{ .RelPermalink }}" {{- if eq $.CurrentPage .Permalink }} class="active"{{ end }}>
|
||||
{{- template "title" . -}}
|
||||
</a>
|
||||
{{- end -}}
|
||||
{{ end }}
|
||||
|
||||
{{ define "book-get-root-section" }}
|
||||
<!-- Complex logic to guess page title without .Title specified -->
|
||||
{{ $bookSection := default "docs" .Site.Params.BookSection }}
|
||||
{{ if eq $bookSection "*" }}
|
||||
{{ .Scratch.Set "BookSections" .Site.Sections }}
|
||||
{{ else }}
|
||||
{{ $bookSections := where .Site.Sections "Section" $bookSection }}
|
||||
{{ .Scratch.Set "BookSections" $bookSections }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ define "book-page-link" }}
|
||||
{{ with .Page }}
|
||||
<a href="{{ .RelPermalink }}" {{ if eq $.CurrentPage .Permalink }} class="active"{{ end }}>
|
||||
{{ template "title" . }}
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
@@ -9,4 +9,8 @@
|
||||
{{ end }}
|
||||
|
||||
{{ partial "docs/inject/menu-after" . }}
|
||||
</nav>
|
||||
</nav>
|
||||
|
||||
{{ if .Site.Params.BookEnableJS }}
|
||||
{{ template "jsmenu" . }}
|
||||
{{ end }}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
{{/*These templates contains some more complex logic and shared between partials*/}}
|
||||
{{- define "title" -}}
|
||||
{{- if and .File .Pages -}}
|
||||
{{ define "title" }}
|
||||
{{ if and .File .Pages }}
|
||||
{{ $sections := split (trim .File.Dir "/") "/" }}
|
||||
{{ $title := index ($sections | last 1) 0 | humanize | title }}
|
||||
{{- default $title .Title -}}
|
||||
{{- else if .File -}}
|
||||
{{ $title := .File | humanize | title }}
|
||||
{{- default $title .Title -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{ default $title .Title }}
|
||||
{{ else if .File }}
|
||||
{{ $title := .File.BaseFileName | humanize | title }}
|
||||
{{ default $title .Title }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{- define "hrefhack" -}}
|
||||
{{ define "hrefhack" }}
|
||||
{{ $attrEq := "$=" }}
|
||||
{{ $attrVal := .RelPermalink }}
|
||||
{{ if eq .RelPermalink "/" }}
|
||||
@@ -23,17 +23,16 @@
|
||||
color: {{ default "#004ed0" .Site.Params.BookMenuBundleActiveLinkColor }};
|
||||
}
|
||||
</style>
|
||||
{{- end -}}
|
||||
{{ end }}
|
||||
|
||||
{{- define "jsmenu" -}}
|
||||
{{ define "jsmenu" }}
|
||||
<script>
|
||||
(function() {
|
||||
var menu = document.querySelector('aside.book-menu nav')
|
||||
addEventListener('beforeunload', function(event) {
|
||||
localStorage.setItem('menu.scrollTop', menu.scrollTop)
|
||||
});
|
||||
|
||||
menu.scrollTop = localStorage.getItem('menu.scrollTop')
|
||||
})()
|
||||
</script>
|
||||
{{- end -}}
|
||||
{{ end }}
|
||||
@@ -1,15 +1,15 @@
|
||||
{{ define "main" }}
|
||||
{{- $dateFormat := default "January 2, 2006" .Site.Params.BookDateFormat -}}
|
||||
{{ $dateFormat := default "January 2, 2006" .Site.Params.BookDateFormat }}
|
||||
{{ $paginator := .Paginate (where .Pages "Params.hidden" "ne" true) }}
|
||||
{{ range sort .Paginator.Pages }}
|
||||
<article>
|
||||
<article class="markdown">
|
||||
<h2>
|
||||
<a href="{{ .RelPermalink }}">{{ .Title }}</a>
|
||||
</h2>
|
||||
<h5>
|
||||
<strong>{{ .Date.Format $dateFormat }}</strong>
|
||||
</h5>
|
||||
<p class="markdown">
|
||||
<p>
|
||||
{{- .Summary -}}
|
||||
{{ if .Truncated }}
|
||||
<a href="{{ .RelPermalink }}">...</a>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{{ define "main" }}
|
||||
{{- $dateFormat := default "January 2, 2006" .Site.Params.BookDateFormat -}}
|
||||
<header>
|
||||
{{ $dateFormat := default "January 2, 2006" .Site.Params.BookDateFormat }}
|
||||
<header class="markdown">
|
||||
<h1>{{ .Title }}</h1>
|
||||
<h5>
|
||||
<strong>{{ .Date.Format $dateFormat }}</strong>
|
||||
|
||||
Reference in New Issue
Block a user