2016-12-21 32 views
1

Jekyll分頁使您可以整齊地在頁面上安排帖子。我想提出的日期範圍爲對鏈接到頁面的提示,就像:從傑基爾分頁中的其他頁面訪問帖子

<li class="pager-item"> 
    <a href="page-2" title="News from Sep 24 to Sep 29">Page 2</a> 
</li> 

明顯的方法這樣做將是採取第一和上一個帖子的最後日期頁。不幸的是,jekyll-pagination只能通過paginator.posts發佈當前頁面的帖子列表。

也許我只是不能在documentation找到它,所以我問你:是否有可能從jekyll分頁的其他頁面訪問帖子列表?像paginator.pages.2.posts

另一種方法是構建我自己的paginaton,這應該沒有問題,但我寧願使用內置函數。

回答

0

我目前的做法是這樣的:

{% if include.page > 0 and include.page <= paginator.total_pages %} 
    {% assign first = include.page | minus:1 | times:paginator.per_page %} 
    {% assign last = paginator.per_page | times:include.page | minus:1 %} 
    {% if last > paginator.total_posts %} 
     {% assign last = paginator.total_posts | minus:1 %} 
    {% endif %} 
    {{ site.posts[first].date | date: "%d.%m.%Y" }} bis {{ site.posts[last].date | date: "%d.%m.%Y" }} 
{% else %} 
    OUT_OF_RANGE 
{% endif %} 

我真的不喜歡,液 - 語法:d

1

你可以得到間接的信息:

  • paginator.previous_pagepaginator.next_page給你分別比頁碼和下一個分頁頁面,或nil如果頁面不存在。
  • paginator.per_page爲您提供每頁文章的數量。
  • paginator.total_posts爲您提供該網站的帖子總數。
  • site.posts爲您提供了所有帖子的反向按時間順序列表。

所以,鑑於目前paginator對象,確保paginator.next_page != nil,你知道,從下一個分頁頁面site.posts被索引從ab(包括)與職位:

a = (paginator.next_page) * paginator.per_page 
b = a + paginator.per_page - 1 

末分頁頁面可能不完成:記得檢查b < paginator.total_posts

確保paginator.previous_page != nil,這同樣適用於以前的分頁頁面:

a = (paginator.previous_page) * paginator.per_page 
b = a + paginator.per_page - 1 
0

或者:

{% comment %} NOTE : shortcut "p" for "paginator" {% endcomment %} 
{% assign p = paginator %} 

{% comment %} date formating (see shorthand formats in Ruby's documentation : http://ruby-doc.org/core-2.3.3/Time.html#method-i-strftime) {% endcomment %} 
{% assign dateFormat = "%y %b %d" %} 

<ul> 
{% for post in p.posts %}<li><a href="{{ post.url }}">{{ post.title }} - {{ post.date | date: dateFormat }}</a></li> 
{% endfor %} 
</ul> 

{% comment %}++++++++++ if previous page == newest posts {% endcomment %} 
{% if paginator.previous_page %} 
    {% assign prevPage = p.page | minus: 1 %} 
    {% assign prevPageLastIndex = prevPage | times: p.per_page | minus: 1 %} 
    {% assign prevPageFirstIndex = prevPageLastIndex | minus: p.per_page | plus: 1 %} 
    {% assign prevPagefirstPostDate = site.posts[prevPageFirstIndex].date | date: dateFormat %} 
    {% assign prevPagenextPageLastPostDate = site.posts[prevPageLastIndex].date | date: dateFormat %} 

    {% capture prevPageLink %} 
    <p><a href="{{ paginator.previous_page_path }}"></p> 
    Newest posts from 
    {% if prevPagefirstPostDate != prevPagenextPageLastPostDate %} 
     {{ prevPagenextPageLastPostDate }} to {{ prevPagefirstPostDate }} 
    {% else %} 
     {{ prevPagenextPageLastPostDate }} 
    {% endif %} 
    </a> 
    {% endcapture %} 

{% endif %} 

{% comment %} ++++++++++ if next page = oldest posts {% endcomment %} 
{% if paginator.next_page %} 
    {% assign nextPage = p.page | plus: 1 %} 
    {% assign nextPageFirstIndex = p.page | times: p.per_page %} 

    {% comment %}>>Next page is not the last page = normal computing {% endcomment %} 
    {% if nextPage != p.total_pages %} 
    {% assign nextPageLastIndex = nextPageFirstIndex | plus: p.per_page | minus: 1 %} 

    {% comment %}>>Next page is the last page compute index from p.total_posts{% endcomment %} 
    {% else %} 
    {% assign nextPageLastIndex = p.total_posts | minus: 1 %} 

    {% endif %} 

    {% assign nextPagefirstPostDate = site.posts[nextPageFirstIndex].date | date: dateFormat %} 
    {% assign nextPageLastPostDate = site.posts[nextPageLastIndex].date | date: dateFormat %} 

    {% capture nextPageLink %} 
    <p><a href="{{ paginator.next_page_path }}"></p> 
    Previous posts from 
    {% if nextPagefirstPostDate != nextPageLastPostDate %} 
     {{ nextPageLastPostDate }} to {{ nextPagefirstPostDate }} 
    {% else %} 
     {{ nextPageLastPostDate }} 
    {% endif %} 
    </a> 
    {% endcapture %} 

{% endif %} 

{{ prevPageLink }} 
{{ nextPageLink }} 
+0

我必須承認,我只是表面看了你的建議。但據我所知,它只給出了上一頁和下一頁的日期。我想訪問任何頁面。但還是謝謝你和節日快樂。 – Obererpel

+0

這個解決方案可以很容易地擴展和因式分解來呈現所有頁面鏈接的日期。但是,根據經驗,如果你有很多帖子,我認爲一個好的插件比「巧妙」的液體黑客更節省資源。祝你有一個燦爛的17'。 –