summaryrefslogtreecommitdiffstats
path: root/layouts/_default
diff options
context:
space:
mode:
authoramzrk22020-04-18 18:08:13 +0800
committeramzrk22020-04-18 18:08:13 +0800
commitd53b6ab5ec8d5648201efc6308306e0c222b65fd (patch)
tree7a13f40a2df9a7d8e9210445f5b5bac45e76df31 /layouts/_default
parentb8a0c1dacdbffbb8f9d3f9fdb92bebf2655d59df (diff)
downloadhugo-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.html58
-rw-r--r--layouts/_default/list.html58
-rw-r--r--layouts/_default/tag.html63
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