{{ $pag := .Paginator }} {{- /* The minimum pages starting from the first page */ -}} {{ $minimumPage := .minimumPage | default 1 }} {{- /* The number of pages to be shown with the active page. */ -}} {{ $activeNumberOfPages := .activeNumberOfPages | default 2 }} {{- /* Since the active page is also included when adding the in-between pages of the active page, we need to increment it to mitigate against it. */ -}} {{ $midpointPages := add $activeNumberOfPages 1 }} {{ if gt $pag.TotalPages 1 -}} <ul class="pagination"> {{- $ellipsed := false -}} {{- $shouldEllipse := false -}} {{- range $pag.Pagers -}} {{ $minimumActivePage := sub $pag.PageNumber $activeNumberOfPages }} {{ $maximumActivePage := add $pag.PageNumber $activeNumberOfPages }} {{- /* Make all of the given number of pages starting from both ends to be visible */ -}} {{- $showNumber := or (le .PageNumber $minimumPage) (lt (sub .TotalPages .PageNumber) $minimumPage) -}} {{- /* Make all of the given number of pages between the active page number visible */ -}} {{- $showNumber := or $showNumber (and (gt .PageNumber (sub $pag.PageNumber $midpointPages)) (lt .PageNumber (add $pag.PageNumber $midpointPages))) -}} {{- /* Make all of the page number that is just before/after the minimum page threshold to be visible. This is applied to those situations where there's only one number remaining before the end */ -}} {{ if eq .PageNumber (sub $minimumActivePage 1) }} {{ $showNumber = or $showNumber (eq (sub $minimumActivePage $minimumPage) (add $pag.First.PageNumber 1)) }} {{ else if eq .PageNumber (add $maximumActivePage 1) }} {{ $showNumber = or $showNumber (eq (add $maximumActivePage 1) (sub $pag.Last.PageNumber $minimumPage)) }} {{ end }} {{- if $showNumber -}} {{- $ellipsed = false -}} {{- $shouldEllipse = false -}} {{- else -}} {{- $shouldEllipse = not $ellipsed -}} {{- $ellipsed = true -}} {{- end -}} {{- if $showNumber }} <li> <a class="page-link{{ if eq . $pag }}--active{{ end }}" href="{{ .URL }}" {{- if eq (sub $pag.PageNumber .PageNumber) 1 }} rel="prev" aria-label="Previous" {{- else if (eq (sub $pag.PageNumber .PageNumber) -1) }} rel="next" aria-label="Next" {{- else if (eq $pag.PageNumber .PageNumber) }} aria-label="Current" aria-current="page" {{- end -}} >{{ .PageNumber }}</a> </li> {{- else if $shouldEllipse }} <li class="page-item disabled"> <span aria-hidden="true"> … </span> </li> {{- end -}} {{- end }} </ul> {{ end }}