themes/hugo-coder/layouts/partials/pagination.html
728a456cf7a5c0858c15de1d69851753ee640106
· 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 }}">«</a></li> |
| 11 | {{ end }} |
| 12 | <li class="hidden"><a href="{{ $paginator.Prev.URL }}">‹</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 }}">›</a></li> |
| 43 | {{ if ne $paginator.PageNumber $paginator.TotalPages }} |
| 44 | <li><a href="{{ $paginator.Last.URL }}">»</a></li> |
| 45 | {{ end }} |
| 46 | {{ end }} |
| 47 | </ul> |
| 48 | {{ end }} |