diff options
author | amzrk2 | 2020-04-18 18:08:13 +0800 |
---|---|---|
committer | amzrk2 | 2020-04-18 18:08:13 +0800 |
commit | d53b6ab5ec8d5648201efc6308306e0c222b65fd (patch) | |
tree | 7a13f40a2df9a7d8e9210445f5b5bac45e76df31 /layouts/_default | |
parent | b8a0c1dacdbffbb8f9d3f9fdb92bebf2655d59df (diff) | |
download | hugo-theme-fuji-d53b6ab5ec8d5648201efc6308306e0c222b65fd.tar.gz hugo-theme-fuji-d53b6ab5ec8d5648201efc6308306e0c222b65fd.tar.bz2 hugo-theme-fuji-d53b6ab5ec8d5648201efc6308306e0c222b65fd.zip |
Smart pagination
Diffstat (limited to 'layouts/_default')
-rw-r--r-- | layouts/_default/archives.html | 58 | ||||
-rw-r--r-- | layouts/_default/list.html | 58 | ||||
-rw-r--r-- | layouts/_default/tag.html | 63 |
3 files changed, 168 insertions, 11 deletions
diff --git a/layouts/_default/archives.html b/layouts/_default/archives.html index d4459ff..dab458f 100644 --- a/layouts/_default/archives.html +++ b/layouts/_default/archives.html @@ -14,9 +14,61 @@ </div> </div> {{ end }} +<!-- custom smart pagination --> +{{ $offsetLinks := 2 }} +{{ $maxLinks := (add (mul $offsetLinks 2) 1) }} +{{ $lowerLimit := (add $offsetLinks 1) }} +{{ $upperLimit := (sub $paginator.TotalPages $offsetLinks) }} {{ if gt $paginator.TotalPages 1 }} -<div id="pagination"> - {{ template "_internal/pagination.html" . }} -</div> +<ul id="pagination"> + {{ if ne $paginator.PageNumber 1 }} + <li class="pag-first"> + <a href="{{ $paginator.First.URL }}">{{ partial "fas/fa-angle-double-left" . }}</a> + </li> + {{ end }} + {{ if $paginator.HasPrev }} + <li class="pag-previous"> + <a href="{{ $paginator.Prev.URL }}">{{ partial "fas/fa-angle-left" . }}</a> + </li> + {{ end }} + + {{ range $paginator.Pagers }} + {{ $.Scratch.Set "pageNumFlag" false }} + {{ if gt $paginator.TotalPages $maxLinks }} + {{ if le $paginator.PageNumber $lowerLimit }} + {{ if le .PageNumber $maxLinks }} + {{ $.Scratch.Set "pageNumFlag" true }} + {{ end }} + {{ else if ge $paginator.PageNumber $upperLimit }} + {{ if gt .PageNumber (sub $paginator.TotalPages $maxLinks) }} + {{ $.Scratch.Set "pageNumFlag" true }} + {{ end }} + {{ else }} + {{ if and ( ge .PageNumber (sub $paginator.PageNumber $offsetLinks) ) ( le .PageNumber (add $paginator.PageNumber $offsetLinks) ) }} + {{ $.Scratch.Set "pageNumFlag" true }} + {{ end }} + {{ end }} + {{ else }} + {{ $.Scratch.Set "pageNumFlag" true }} + {{ end }} + {{ if eq ($.Scratch.Get "pageNumFlag") true }} + <li class="pag-item{{ if eq . $paginator }} pag-current{{ end }}"> + <a href="{{ .URL }}">{{ .PageNumber }}</a> + </li> + {{ end }} + {{ end }} + + {{ if $paginator.HasNext }} + <li class="pag-next"> + <a href="{{ $paginator.Next.URL }}">{{ partial "fas/fa-angle-right" . }}</a> + </li> + {{ end }} + {{ if ne $paginator.PageNumber $paginator.TotalPages }} + <li class="pag-last"> + <a href="{{ $paginator.Last.URL }}">{{ partial "fas/fa-angle-double-right" . }}</a> + </li> + {{ end }} +</ul> {{ end }} + {{ end }}
\ No newline at end of file diff --git a/layouts/_default/list.html b/layouts/_default/list.html index e459763..567e577 100644 --- a/layouts/_default/list.html +++ b/layouts/_default/list.html @@ -17,9 +17,61 @@ </div> </div> {{ end }} +<!-- custom smart pagination --> +{{ $offsetLinks := 2 }} +{{ $maxLinks := (add (mul $offsetLinks 2) 1) }} +{{ $lowerLimit := (add $offsetLinks 1) }} +{{ $upperLimit := (sub $paginator.TotalPages $offsetLinks) }} {{ if gt $paginator.TotalPages 1 }} -<div id="pagination"> - {{ template "_internal/pagination.html" . }} -</div> +<ul id="pagination"> + {{ if ne $paginator.PageNumber 1 }} + <li class="pag-first"> + <a href="{{ $paginator.First.URL }}">{{ partial "fas/fa-angle-double-left" . }}</a> + </li> + {{ end }} + {{ if $paginator.HasPrev }} + <li class="pag-previous"> + <a href="{{ $paginator.Prev.URL }}">{{ partial "fas/fa-angle-left" . }}</a> + </li> + {{ end }} + + {{ range $paginator.Pagers }} + {{ $.Scratch.Set "pageNumFlag" false }} + {{ if gt $paginator.TotalPages $maxLinks }} + {{ if le $paginator.PageNumber $lowerLimit }} + {{ if le .PageNumber $maxLinks }} + {{ $.Scratch.Set "pageNumFlag" true }} + {{ end }} + {{ else if ge $paginator.PageNumber $upperLimit }} + {{ if gt .PageNumber (sub $paginator.TotalPages $maxLinks) }} + {{ $.Scratch.Set "pageNumFlag" true }} + {{ end }} + {{ else }} + {{ if and ( ge .PageNumber (sub $paginator.PageNumber $offsetLinks) ) ( le .PageNumber (add $paginator.PageNumber $offsetLinks) ) }} + {{ $.Scratch.Set "pageNumFlag" true }} + {{ end }} + {{ end }} + {{ else }} + {{ $.Scratch.Set "pageNumFlag" true }} + {{ end }} + {{ if eq ($.Scratch.Get "pageNumFlag") true }} + <li class="pag-item{{ if eq . $paginator }} pag-current{{ end }}"> + <a href="{{ .URL }}">{{ .PageNumber }}</a> + </li> + {{ end }} + {{ end }} + + {{ if $paginator.HasNext }} + <li class="pag-next"> + <a href="{{ $paginator.Next.URL }}">{{ partial "fas/fa-angle-right" . }}</a> + </li> + {{ end }} + {{ if ne $paginator.PageNumber $paginator.TotalPages }} + <li class="pag-last"> + <a href="{{ $paginator.Last.URL }}">{{ partial "fas/fa-angle-double-right" . }}</a> + </li> + {{ end }} +</ul> {{ end }} + {{ end }}
\ No newline at end of file diff --git a/layouts/_default/tag.html b/layouts/_default/tag.html index 4373558..dd15f58 100644 --- a/layouts/_default/tag.html +++ b/layouts/_default/tag.html @@ -3,7 +3,8 @@ <span>{{ i18n "tagsCurrentTag" . }}</span> </div> <!-- tags page range in posts --> -{{ range .Paginator.Pages }} +{{ $paginator := .Paginator }} +{{ range $paginator.Pages }} <div id="post"> <h2 id="post-title"> <a href="{{ .Permalink }}">{{ .Title }}</a> @@ -19,9 +20,61 @@ </div> </div> {{ end }} -{{ if gt .Paginator.TotalPages 1 }} -<div id="pagination"> - {{ template "_internal/pagination.html" . }} -</div> +<!-- custom smart pagination --> +{{ $offsetLinks := 2 }} +{{ $maxLinks := (add (mul $offsetLinks 2) 1) }} +{{ $lowerLimit := (add $offsetLinks 1) }} +{{ $upperLimit := (sub $paginator.TotalPages $offsetLinks) }} +{{ if gt $paginator.TotalPages 1 }} +<ul id="pagination"> + {{ if ne $paginator.PageNumber 1 }} + <li class="pag-first"> + <a href="{{ $paginator.First.URL }}">{{ partial "fas/fa-angle-double-left" . }}</a> + </li> + {{ end }} + {{ if $paginator.HasPrev }} + <li class="pag-previous"> + <a href="{{ $paginator.Prev.URL }}">{{ partial "fas/fa-angle-left" . }}</a> + </li> + {{ end }} + + {{ range $paginator.Pagers }} + {{ $.Scratch.Set "pageNumFlag" false }} + {{ if gt $paginator.TotalPages $maxLinks }} + {{ if le $paginator.PageNumber $lowerLimit }} + {{ if le .PageNumber $maxLinks }} + {{ $.Scratch.Set "pageNumFlag" true }} + {{ end }} + {{ else if ge $paginator.PageNumber $upperLimit }} + {{ if gt .PageNumber (sub $paginator.TotalPages $maxLinks) }} + {{ $.Scratch.Set "pageNumFlag" true }} + {{ end }} + {{ else }} + {{ if and ( ge .PageNumber (sub $paginator.PageNumber $offsetLinks) ) ( le .PageNumber (add $paginator.PageNumber $offsetLinks) ) }} + {{ $.Scratch.Set "pageNumFlag" true }} + {{ end }} + {{ end }} + {{ else }} + {{ $.Scratch.Set "pageNumFlag" true }} + {{ end }} + {{ if eq ($.Scratch.Get "pageNumFlag") true }} + <li class="pag-item{{ if eq . $paginator }} pag-current{{ end }}"> + <a href="{{ .URL }}">{{ .PageNumber }}</a> + </li> + {{ end }} + {{ end }} + + {{ if $paginator.HasNext }} + <li class="pag-next"> + <a href="{{ $paginator.Next.URL }}">{{ partial "fas/fa-angle-right" . }}</a> + </li> + {{ end }} + {{ if ne $paginator.PageNumber $paginator.TotalPages }} + <li class="pag-last"> + <a href="{{ $paginator.Last.URL }}">{{ partial "fas/fa-angle-double-right" . }}</a> + </li> + {{ end }} +</ul> {{ end }} + {{ end }}
\ No newline at end of file |