2012-12-24 2 views
5

일부 페이지 매기기 작업 중이며 액체가 5 페이지 만 표시되도록하는 방법이 있는지 궁금합니다. 내가 찾고 있어요 출력은 장소의 작품 5 6 7 8 9 마지막 >>액체 및 산술

내가 현재 가지고있는 논리 먼저

< <이지만 모두 30 일부 페이지를 보이고있다.

나는 2 paginator.total_pages는 동적 할 수 있도록하고 싶습니다

, 나는 시도

{% 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)) %} 

이 코드 그러나 실제로 수학을하지 않는 경우 paginator.page = 5 루프는 5..5이며 예상 된 결과를 제공하지 않습니다. 논리를 알아 내서 음수를 맞추지 않고 예상대로 작동하지만 어떻게이 방정식을 수행 할 수 있습니까?

답변

4

paginator.total_pages에 필터를 사용하여 산술을 수행 한 다음 capture 태그를 사용하여 변수에 결과를 캡처해야합니다. 당신은 시작과 끝 페이지가되면, 당신은 당신이 평소대로 for 루프를 쓸 수 있습니다 : 내가 지킬와 블로그를 짓고 있어요

{% 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

답변 해 주셔서 감사합니다. 그러나 내 루핑을 설정하려고 할 때 다른 오류를 발견하게됩니다. page_end가 전체 페이지보다 큰지 확인할 수 있어야합니다. {% PAGE_END은> paginator.total_pages % 경우} {%가 PAGE_END = paginator.total_pages % 할당하며} 이 님 {% endif %} 위의 코드는 나에게 다음과 같은 오류를 제공 는 액체 예외 : 37 문자열의 비교는 실패 in index.html Liquid에서이 작업을 수행 할 수있는 방법이 있습니까? –

+0

나는 이것을 알아 냈다. Jakyll의 pagination.rb를 확장하고 pager_start 및 pager_end 변수 및 계산을 추가해야했다. –

+0

Google 직원이 Ruby 프로그래밍을 포함하지 않는보다 현대적인 GitHub Pages 호환 접근법을 찾고있는 경우 [this ] (http://stackoverflow.com/a/31972386/5195629). 공개 : 나는 그 해답을 썼다. – Shadowen

1

을 나는 비슷한 상황에 직면했습니다. Liquid wiki에서 찾은 것에 따르면 limitoffset을 사용하여 주어진 컬렉션의 하위 집합을 반복 할 수 있습니다.

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

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

대신 내가 부트 스트랩을 사용하고

{% 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

이 시도 :

다음 예제는 특정 케이스와 가 마지막에 처음부터 모든 페이지에서 제대로 작업,해야 반영 내 웹 사이트에 3.0.3. 페이지 매김에 다음 코드를 사용합니다. 당신이 찾고있는 것과 같은 효과가 있습니다. 위에 게시 한 코드는 사용자가 찾고있는 코드이지만 여기에 부트 스트랩 페이지 매김 코드를 게시합니다.

{% 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 %}