admin Đăng lúc 2024-9-6 19:30:31

Custom - Phân trang danh sách bài viết

- Thêm code sau vào file '_functions'


{% macro paging(trang,p,max,b) %}
{% spaceless %}
{% if max > 1 %}
    <center><div class="pagination">
      {% set a=' <a class="pagenav" href="/'~trang~'' %}
      {% if p>max %}{% set p=max %}a{% endif %}
      {% if p>1 %}
              {{a|raw}}{{p-1}}{{b}}">«</a>
      {% endif %}
      {% if p>3 %}
              {{a|raw}}1{{b}}">1</a>
      {% endif %}
      {% if p>4 %}
             <span>...</span>
      {% endif %}
      {% if p>2 %}
              {{a|raw}}{{p-2}}{{b}}">{{p-2}}</a>
      {% endif %}
      {% if p>1 %}
              {{a|raw}}{{p-1}}{{b}}">{{p-1}}</a>
      {% endif %}
      <span class="currentpage"><b>{{p}}</b></span>
      {% if p<max-1 %}
              {{a|raw}}{{p+1}}{{b}}">{{p+1}}</a>
      {% endif %}
      {% if p<max-2 %}
              {{a|raw}}{{p+2}}{{b}}">{{p+2}}</a>
      {% endif %}
      {% if p<max-3 %}
              <span>...</span>
      {% endif %}
      {% if p<max %}
              {{a|raw}}{{max}}{{b}}" class="next">{{max}}</a>
      {% endif %}
      {% if p<max %}
              {{a|raw}}{{p+1}}{{b}}">»</a>
      {% endif %}
    </div></center>
{% endif %}
{% endspaceless %}
{% endmacro %}

CSS
.pagination{text-align:center}.currentpage{background-color:#4E342E;padding:3px 11px;margin:2px;border-radius:50px;color:#fff!important;box-shadow:0 0 7px rgba(0,0,0,0.2),0 0 0 1px rgba(188,188,188,0.1)}.pagenav,a.pagenav{background-color:#00B7FF;color:#fff!important;text-decoration:none!important;padding:3px 11px;margin:2px;border-radius:50px;box-shadow:0 0 7px rgba(0,0,0,0.2),0 0 0 1px rgba(188,188,188,0.1);animation:namedcolors 3s infinite alternate}.pagevav:hover,a.pagenav:hover{background-color:#54a3c6;color:#fff!important}

- Cách sử dụng:
{% from '_functions' import paging %}

{% set total = count(query_select_table(table_name)) %}
{% set per = '10' %}
{% set page_max = total//per %}
{% if total//per != total/per %}{% set page_max = total//per+1 %}{% endif %}
{% set p = GET['page']|default(1) %}
{% if p matches '/|%/' or p < 1 %}{% set p = 1 %}{% endif %}
{% if p > page_max %}{% set p = page_max %}{% endif %}
{% set st=p*per-per %}

{% if total_blog == 0 %}
<p class="highlight">Chưa có bài viết nào!</p>
{% else %}
{% set list = query_select_table(table_name,'*','ORDER BY id DESC LIMIT '~st~','~per) %}
{% for data in list %}
    {{data.column}}
{% endfor %}
{% endif %}
<p>{{paging('?page=',p,page_max)|replace({'/=':'/','/?':'?'})|raw}}</p>
Trang: [1]
Phiên bản đầy đủ: Custom - Phân trang danh sách bài viết