2012-12-24 23 views
5

Bazı sayfalar üzerinde çalışıyorum ve sadece 5 sayfayı gösterecek bir sıvı olup olmadığını anlamanın bir yolu olup olmadığını merak ediyorum. Aradığım çıktı yeri çalışmalarında 5 6 8 9 Son >>Sıvı ve Aritmetik

Şu anda var mantık İlk

< < ama hepsi 30 bazı sayfaları gösteriyor.

Ben 2 ve paginator.total_pages dinamik olması yapabilmek istiyorum

, ben denedim

{% for count in (2..paginator.total_pages) %} 
    {% if count == paginator.page %} 
     <span class="current">{{ count }}</span> 
    {% else %} 
     <a href="/page/{{ count }}/" class="pagenavi-page" title="{{ count }}">{{ count }}</a> 
    {% endif %} 
{% endfor %} 

{% for count in ((paginator.page - 2)..(paginator.page + 2)) %} 

Bu kod Ancak gerçekte, matematik yapmazsa paginator.page = 5 daha sonra döngü 5..5 ve beklenen sonuçları sağlamaz. Mantığı çözebilir, böylece negatif sayılara ulaşmaz ve beklendiği gibi çalışır, ancak matematik denklemlerini bu şekilde nasıl yapabilirim?

cevap

4

Aritmetik yapmak için paginator.total_pages üzerinde bir filtre kullanmanız ve ardından capture etiketini kullanarak sonucu bir değişkende yakalamanız gerekir. başlangıç ​​ve bitiş sayfalarını sahip olduktan sonra, her zamanki gibi for döngü yazabiliriz: Ben Jekyll bir blog inşa ediyorum

{% capture page_start %}{{ paginator.page | minus: 2 }}{% endcapture %} 
{% capture page_end %}{{ paginator.page | plus: 2 }}{% endcapture %} 

{% for count in (page_start..page_end) %} 
    {% comment %} ... do your thing ... {% endcomment %} 
{% endfor %} 
+0

Bu cevap için teşekkür ederiz, mantıklı. Ancak, kendi döngümümü kurmaya çalışırken kendimi başka bir hataya karşı buluyorum. Page_end'in toplam sayfalardan daha büyük olup olmadığını kontrol edebilmek için ihtiyacım var. {% PAGE_END> paginator.total_pages% if} {% PAGE_END = paginator.total_pages% atayabilirsiniz} {% endif%} Yukarıdaki kod bana aşağıdaki hatayı veriyor Sıvı İstisna: 37 ile dize karşılaştırılamadı index.html Bunu Sıvıda yapmak için bir yol var mı? –

+0

Bunu çözdüm, sadece Jekyll'de pagination.rb'yi genişletmek ve pager_start ve pager_end değişkenlerini ve hesaplamalarını eklemek zorunda kaldım –

+0

Ruby programlamayı içermeyen daha modern, GitHub Pages uyumlu bir yaklaşım arayan Google çalışanları için ] (http://stackoverflow.com/a/31972386/5195629). Açıklama: Ben cevabı yazdım. – Shadowen

1

ve ben benzer bir durumla karşı karşıya ettik. Liquid wiki'da bulduğum şeye göre, limit ve offset kullanarak belirli bir koleksiyonun bir alt kümesi üzerinde yinelemek mümkündür.

{% capture start %}{{ paginator.page | minus: 3 }}{% endcapture %} 

{% for i in (1..paginator.total_pages) limit: 5 offset: start %} 
    ... 
{% endfor %} 
0

bunun yerine Bootstrap kullanıyorum

{% if paginator.total_pages < 7 %} 
{% if paginator.page == 1 %} 
     <span class="current bold">1</span> 
{% else %} 
     <a href="{{ site.url }}/">1</a> 
{% endif %} 
{% for count in (2..paginator.total_pages) %} 
    {% if count == paginator.page %} 
     <span class="current bold">{{ count }}</span> 
    {% else %} 
     <a href="/page{{ count }}/" class="pagenavi-page" title="{{ count }}">{{ count }}</a> 
    {% endif %} 
{% endfor %} 
{% else %} 
{% assign page_start = paginator.page | minus: 2 %} 
{% assign page_end = paginator.page | plus: 2 %} 
{% if page_end > paginator.total_pages %} 
{% assign page_end = paginator.total_pages %} 
{% assign page_start = paginator.page | minus: 4 %} 
{% endif %} 
{% if page_start < 2 %} 
{% assign page_end = paginator.page | plus: 3 %} 
{% assign page_start = paginator.page | minus: 1 %} 
{% endif %} 
{% if page_start == 0 %} 
{% assign page_end = paginator.page | plus: 4 %} 
{% assign page_start = paginator.page %} 
{% endif %} 
{% if page_start == 1 %} 
{% assign page_end = paginator.page | plus: 4 %} 
{% assign page_start = 2 %} 
{% if paginator.page == 1 %} 
     <span class="current bold">1</span> 
{% else %} 
     <a href="{{ site.url }}/">1</a> 
{% endif %} 
{% endif %} 
{% for count in (page_start..page_end) %} 
    {% if count == paginator.page %} 
     <span class="current bold">{{ count }}</span> 
    {% else %} 
     <a href="/page{{ count }}/" class="pagenavi-page" title="{{ count }}">{{ count }}</a> 
    {% endif %} 
{% endfor %} 
{% endif %} 
1

bu deneyin:

Aşağıdaki örnek belirli durumda ve sonuncusu ilk gelen her sayfasında doğru eser gerektiğini yansıtır Web sitem için 3.0.3. Aşağıdaki kodu sayfalandırma için kullanıyorum. Aradığın aynı etkiye sahip. Yukarıda gönderdiğiniz kod, aradığınız şeydir, ancak yine de bootstrap sayfalama kodumu burada yayınlayacağım.

{% if paginator.total_pages != 1 %} 
{% if paginator.total_pages < 7 %} 
     <div class="page-body col-md-12"> 
      <ul class="pagination pagination-centered"> 
      {% if paginator.total_pages >= 10 %} 
      {% if paginator.previous_page %} 
       <li> 
        <a href="{{ site.url }}/">&laquo;&laquo;</a> 
       </li> 
      {% else %} 
       <li class="disabled"> 
       <a>&laquo;&laquo;</a> 
       </li> 
      {% endif %} 
      {% endif %} 
      {% if paginator.previous_page %} 
       {% if paginator.previous_page == 1 %} 
       <li> 
        <a href="{{ site.url }}/">&laquo;</a> 
       </li> 
       {% else %} 
       <li> 
        <a href="{{ site.url }}/page{{paginator.previous_page}}">&laquo;</a> 
       </li> 
       {% endif %} 
      {% else %} 
       <li class="disabled"> 
       <a>&laquo;</a> 
       </li> 
      {% endif %} 
      {% if paginator.page == 1 %} 
       <li class="active"> 
       <a>1</a> 
       </li> 
      {% else %} 
       <li> 
       <a href="{{ site.url }}/">1</a> 
       </li> 
      {% endif %} 
      {% for count in (2..paginator.total_pages) %} 
       {% if count == paginator.page %} 
       <li class="active"> 
        <a>{{count}}</a> 
       </li> 
       {% else %} 
       <li> 
        <a href="{{ site.url }}/page{{count}}">{{count}}</a> 
       </li> 
       {% endif %} 
      {% endfor %} 
      {% if paginator.next_page %} 
       <li> 
       <a href="{{ site.url }}/page{{paginator.next_page}}">&raquo;</a> 
       </li> 
      {% else %} 
       <li class="disabled"> 
       <a>&raquo;</a> 
       </li> 
      {% endif %} 
      {% if paginator.total_pages >= 10 %} 
      {% if paginator.next_page %} 
       <li> 
       <a href="{{ site.url }}/page{{paginator.total_pages}}">&raquo;&raquo;</a> 
       </li> 
      {% else %} 
       <li class="disabled"> 
       <a>&raquo;&raquo;</a> 
       </li> 
      {% endif %} 
      {% endif %} 
      </ul> 
     </div> 
{% else %} 

{% assign page_start = paginator.page | minus: 2 %} 
{% assign page_end = paginator.page | plus: 2 %} 
{% if page_end > paginator.total_pages %} 
{% assign page_end = paginator.total_pages %} 
{% assign page_start = paginator.page | minus: 4 %} 
{% endif %} 
{% if page_start < 2 %} 
{% assign page_end = paginator.page | plus: 3 %} 
{% assign page_start = paginator.page | minus: 1 %} 
{% endif %} 
{% if page_start == 0 %} 
{% assign page_end = paginator.page | plus: 4 %} 
{% assign page_start = paginator.page %} 
{% endif %} 

<div class="page-body col-md-12"> 
    <ul class="pagination pagination-centered"> 
    {% if paginator.total_pages > 5 %} 
    {% if paginator.previous_page %} 
     <li> 
      <a href="{{ site.url }}/">&laquo;&laquo;</a> 
     </li> 
    {% else %} 
     <li class="disabled"> 
     <a>&laquo;&laquo;</a> 
     </li> 
    {% endif %} 
    {% endif %} 
    {% if paginator.previous_page %} 
     {% if paginator.previous_page == 1 %} 
     <li> 
      <a href="/">&laquo;</a> 
     </li> 
     {% else %} 
     <li> 
      <a href="/page{{paginator.previous_page}}">&laquo;</a> 
     </li> 
     {% endif %} 
    {% else %} 
     <li class="disabled"> 
     <a href="#">&laquo;</a> 
     </li> 
    {% endif %} 
    {% if page_start == 1 %} 
    {% assign page_end = paginator.page | plus: 4 %} 
    {% assign page_start = 2 %} 
    {% if paginator.page == 1 %} 
     <li class="active"> 
     <a href="#">1</a> 
     </li> 
    {% else %} 
     <li> 
     <a href="/">1</a> 
     </li> 
    {% endif %} 
    {% endif %} 
    {% for count in (page_start..page_end) %} 
     {% if count == paginator.page %} 
     <li class="active"> 
      <a href="#">{{count}}</a> 
     </li> 
     {% else %} 
     <li> 
      <a href="/page{{count}}">{{count}}</a> 
     </li> 
     {% endif %} 
    {% endfor %} 
    {% if paginator.next_page %} 
     <li> 
     <a href="/page{{paginator.next_page}}">&raquo;</a> 
     </li> 
    {% else %} 
     <li class="disabled"> 
     <a href="#">&raquo;</a> 
     </li> 
    {% endif %} 
    {% if paginator.total_pages > 5 %} 
    {% if paginator.next_page %} 
     <li> 
     <a href="{{ site.url }}/page{{paginator.total_pages}}">&raquo;&raquo;</a> 
     </li> 
    {% else %} 
     <li class="disabled"> 
     <a>&raquo;&raquo;</a> 
     </li> 
    {% endif %} 
    {% endif %} 
    </ul> 
</div> 
{% endif %} 
{% endif %}