themes/hugo-coder/layouts/partials/pagination.html

95733c179d29111bed167f3fa5d1299e63eee2ff · 1.8 KB · 48 lines raw

1 {{ $paginator := .Paginator }}
2 {{ $adjacent_links := 2 }}
3 {{ $max_links := (add (mul $adjacent_links 2) 1) }}
4 {{ $lower_limit := (add $adjacent_links 1) }}
5 {{ $upper_limit := (sub $paginator.TotalPages $adjacent_links) }}
6 {{ if gt $paginator.TotalPages 1 }}
7 <ul class="pagination">
8 {{ if $paginator.HasPrev }}
9 {{ if ne $paginator.PageNumber 1 }}
10 <li><a href="{{ $paginator.First.URL }}">&laquo;</a></li>
11 {{ end }}
12 <li class="hidden"><a href="{{ $paginator.Prev.URL }}">&lsaquo;</a></li>
13 {{ end }}
14 {{ range $paginator.Pagers }}
15 {{ $.Scratch.Set "page_number_flag" false }}
16 {{ if gt $paginator.TotalPages $max_links }}
17 {{ if le $paginator.PageNumber $lower_limit }}
18 {{ if le .PageNumber $max_links }}
19 {{ $.Scratch.Set "page_number_flag" true }}
20 {{ end }}
21 {{ else if ge $paginator.PageNumber $upper_limit }}
22 {{ if gt .PageNumber (sub $paginator.TotalPages $max_links) }}
23 {{ $.Scratch.Set "page_number_flag" true }}
24 {{ end }}
25 {{ else }}
26 {{ if and ( ge .PageNumber (sub $paginator.PageNumber $adjacent_links) ) ( le .PageNumber (add $paginator.PageNumber $adjacent_links) ) }}
27 {{ $.Scratch.Set "page_number_flag" true }}
28 {{ end }}
29 {{ end }}
30 {{ else }}
31 {{ $.Scratch.Set "page_number_flag" true }}
32 {{ end }}
33 {{ if eq ($.Scratch.Get "page_number_flag") true }}
34 {{ if eq . $paginator }}
35 <li>{{ .PageNumber }}</li>
36 {{ else }}
37 <li><a href="{{ .URL }}">{{ .PageNumber }}</a></li>
38 {{ end }}
39 {{ end }}
40 {{ end }}
41 {{ if $paginator.HasNext }}
42 <li class="hidden"><a href="{{ $paginator.Next.URL }}">&rsaquo;</a></li>
43 {{ if ne $paginator.PageNumber $paginator.TotalPages }}
44 <li><a href="{{ $paginator.Last.URL }}">&raquo;</a></li>
45 {{ end }}
46 {{ end }}
47 </ul>
48 {{ end }}