yrzam-hugo-theme/layouts/partials/pagination.html
2024-06-08 22:47:06 +04:00

58 lines
2.4 KiB
HTML

{{- if gt $.Paginator.TotalPages 1 -}}
<nav class="paginator">
{{- $pag := .Paginator -}}
{{- $adjacent_links := default 2 .Site.Params.paginationAdjacentLinks -}}
{{- $padded_adjacent_links := add $adjacent_links 2 -}}
{{- $dynamic_range_start := sub $pag.PageNumber $padded_adjacent_links -}}
{{- $dynamic_range_end := add $pag.PageNumber $padded_adjacent_links -}}
{{- if gt $dynamic_range_end $pag.TotalPages -}}
{{- $dynamic_range_start = sub $dynamic_range_start (sub $dynamic_range_end $pag.TotalPages) -}}
{{- end -}}
{{- if lt $dynamic_range_start 1 -}}
{{- $dynamic_range_end = add $dynamic_range_end (sub 1 $dynamic_range_start) -}}
{{- end -}}
{{- $dynamic_range_start = add $dynamic_range_start (math.Min $dynamic_range_start 2) -}}
{{- $dynamic_range_end = sub $dynamic_range_end (math.Min (sub $pag.TotalPages $dynamic_range_end -1) 2 ) -}}
<!-- static start (if needed) -->
{{- if ge $dynamic_range_start 2 -}}
<a href="{{ $pag.First.URL }}" class="button">1</a>
{{- if eq $dynamic_range_start 3 -}}
<a href="{{ (index $pag.Pagers 2).URL }}" class="button">2</a>
{{- end -}}
{{- if gt $dynamic_range_start 3 -}}
{{- $mid := div (add $dynamic_range_start 1) 2 | math.Floor | int -}}
<a href="{{ (index $pag.Pagers (sub $mid 1)).URL }}" class="button">...</a>
{{- end -}}
{{- end -}}
<!-- dynamic range - show neighbours -->
{{- range $pag.Pagers -}}
{{- if and (ge .PageNumber $dynamic_range_start) (le .PageNumber $dynamic_range_end) -}}
{{- if eq . $pag -}}
<span class="button current">{{ .PageNumber }}</span>
{{- else -}}
<a href="{{ .URL }}" class="button">{{ .PageNumber }}</a>
{{- end -}}
{{- end -}}
{{- end -}}
<!-- static end (if needed) -->
{{- if ge (sub $pag.TotalPages $dynamic_range_end) 1 -}}
{{- if eq (sub $pag.TotalPages $dynamic_range_end) 2 -}}
<a href="{{ (index $pag.Pagers (sub $pag.TotalPages 1)).URL }}" class="button">ye</a>
{{- end -}}
{{- if gt (sub $pag.TotalPages $dynamic_range_end) 2 -}}
{{- $mid := div (add $pag.TotalPages $dynamic_range_end) 2 | math.Ceil | int -}}
<a href="{{ (index $pag.Pagers (sub $mid 1)).URL }}" class="button">...</a>
{{- end -}}
<a href="{{ $pag.Last.URL }}" class="button">{{ $pag.TotalPages }}</a>
{{- end -}}
</nav>
{{- end -}}
{{- /**/ -}}