diff options
Diffstat (limited to '_includes/paginator.html')
-rw-r--r-- | _includes/paginator.html | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/_includes/paginator.html b/_includes/paginator.html new file mode 100644 index 0000000..5956481 --- /dev/null +++ b/_includes/paginator.html @@ -0,0 +1,98 @@ +{%- if paginator.total_pages > 1 -%} + <div class="pagination"> + + {%- include snippets/get-locale-string.html key='STATISTICS' -%} + {%- assign _locale_statistics = __return -%} + + {%- assign _post_count = site.posts | size -%} + {%- assign _page_count = paginator.total_pages -%} + <p>{{ _locale_statistics | replace: '[POST_COUNT]', _post_count | replace: '[PAGE_COUNT]', _page_count }}</p> + <div class="pagination__menu"> + <ul class="menu menu--nowrap"> + {%- assign _max_show = 5 -%} + {%- assign _max_show_modulo_two = _max_show | modulo: 2 -%} + {%- assign _length = paginator.total_pages -%} + {%- assign _length_mimus_one = _length | minus: 1 -%} + {%- assign _cur = paginator.page -%} + {%- assign _extra = _max_show | minus: 3 -%} + {%- assign _extra_half = _extra | divided_by: 2 -%} + + {%- if _max_show > 4 and _max_show_modulo_two == 1 and paginator.total_pages > _max_show -%} + {%- assign _condition0 = _extra | divided_by: 2 | plus: 1 -%} + {%- assign _condition1 = _length | minus: _extra_half -%} + {%- if _cur <= _condition0 -%} + {%- assign _n0 = 2 -%} + {%- assign _n1 = _extra | plus: 2 -%} + {%- elsif _cur >= _condition1 -%} + {%- assign _n0 = _length | minus: _extra | minus: 1 -%} + {%- assign _n1 = _length | minus: 1 -%} + {%- else -%} + {%- assign _n0 = _cur | minus: _extra_half -%} + {%- assign _n1 = _cur | plus: _extra_half -%} + {%- endif -%} + {%- endif -%} + + {%- if paginator.previous_page -%} + {%- include snippets/prepend-baseurl.html path=paginator.previous_page_path -%} + {%- assign _href = __return -%} + <li><a class="button button--secondary button--circle" href="{{ _href }}"> + <i class="fas fa-angle-left"></i> + </a></li> + {%- else -%} + <li><div class="button button--secondary button--circle disabled"> + <i class="fas fa-angle-left"></i> + </div></li> + {%- endif -%} + + {%- for page in (1.._length) -%} + {%- if page == _cur -%} + <li> + <div class="button button--primary button--circle focus"><span>{{ page }}</span></div> + </li> + + {%- elsif page == 1 -%} + {%- assign _home_path = site.paths.home | default: site.data.variables.default.paths.home -%} + {%- include snippets/prepend-baseurl.html path=_home_path -%} + {%- assign _href = __return -%} + <li> + <a class="button button--secondary button--circle" href="{{ _href }}"><span>{{ page }}</span></a> + </li> + + {%- else -%} + {%- if _n0 and _n1 -%} + {%- if page > 1 and page < _n0 -%} + {%- if page == 2 -%}<li><span class="pagination__omit"><i class="fas fa-ellipsis-h"></i></span></li>{%- endif -%} + {%- elsif page > _n1 and page < _length -%} + {%- if page == _length_mimus_one -%}<li><span class="pagination__omit"><i class="fas fa-ellipsis-h"></i></span></li>{%- endif -%} + {%- else -%} + {%- include snippets/prepend-baseurl.html path=site.paginate_path -%} + {%- assign _href = __return -%} + <li> + <a class="button button--secondary button--circle" href="{{ _href | replace: ':num', page }}"><span>{{ page }}</span></a> + </li> + {%- endif -%} + {%- else -%} + {%- include snippets/prepend-baseurl.html path=site.paginate_path -%} + {%- assign _href = __return -%} + <li> + <a class="button button--secondary button--circle" href="{{ _href | replace: ':num', page }}"><span>{{ page }}</span></a> + </li> + {%- endif -%} + {%- endif -%} + {%- endfor -%} + + {%- if paginator.next_page -%} + {%- include snippets/prepend-baseurl.html path=paginator.next_page_path -%} + {%- assign _href = __return -%} + <li><a class="button button--secondary button--circle" href="{{ _href }}"> + <i class="fas fa-angle-right"></i> + </a></li> + {%- else -%} + <li><div class="button button--secondary button--circle disabled"> + <i class="fas fa-angle-right"></i> + </div></li> + {%- endif -%} + </ul> + </div> + </div> +{%- endif -%} |