2016-12-21 6 views
1

ジキルページネーションでは、ページにきれいに投稿を配置することができます。最初と最後の投稿の日付を取ることであろうそうするジキルページネーションの他のページからの投稿にアクセスする

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

明白な方法:私は同じように、ページへのリンク上のツールチップとして日付の範囲を入れたいですページ。不幸にもジキルページネーションは、現在のページの投稿一覧をpaginator.posts経由で配信しているようです。

多分私はdocumentationでそれを見つけることができませんので、私は尋ねます:あなたはジキルページネーションの別のページからの投稿のリストにアクセスできますか? paginator.pages.2.postsのようなもの?

別の方法として、私自身のページネーションを作成することができます。これは問題ありませんが、組み込み関数を使用することをお勧めします。

答えて

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は1ページあたりの投稿数を示します。
  • paginator.total_postsには、サイト内の投稿の総数が表示されます。
  • site.postsには、すべての投稿の逆の年代順のリストが表示されます。

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

    最後のページネーションページがない場合がありますので、あなたが次のページネーションページからの投稿がに(付属)baからsite.postsにインデックス化されている知っている、paginator.next_page != nilを確保し、現在のpaginatorオブジェクトを与え

完了してください: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 'を願っています。 –

関連する問題