从 jekyll 分页中的其他页面访问帖子
Access posts from other page in jekyll pagination
Jekyll 分页使您能够在页面上整齐地排列 post。我想将日期范围作为工具提示放在页面链接上,就像:
<li class="pager-item">
<a href="page-2" title="News from Sep 24 to Sep 29">Page 2</a>
</li>
这样做的明显方法是获取页面上第一个和最后一个 post 的日期。不幸的是,jekyll-pagination 似乎只能通过 paginator.posts
.
为当前页面提供 post 的列表
可能是我在documentation里面找不到,所以请问你:在jekyll分页中是否可以从另一个页面访问post的列表?类似于 paginator.pages.2.posts
?
另一种方法是构建我自己的分页,这应该没问题,但我更愿意使用内置函数。
您可以间接获取信息:
paginator.previous_page
和 paginator.next_page
分别为您提供上一页和下一页的页码,如果该页不存在,则为 nil
。
paginator.per_page
给出每页的帖子数。
paginator.total_posts
为您提供站点中的帖子总数。
site.posts
为您提供所有帖子的倒序列表。
因此给定当前 paginator
对象,确保 paginator.next_page != nil
,您知道下一个分页页面的帖子在 site.posts
中从 a
到 [=22] 编入索引=](包括)与:
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
我目前的做法是这样的:
{% 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 %}
我真的不喜欢 Liquid-Syntax :D
或:
{% 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 }}
Jekyll 分页使您能够在页面上整齐地排列 post。我想将日期范围作为工具提示放在页面链接上,就像:
<li class="pager-item">
<a href="page-2" title="News from Sep 24 to Sep 29">Page 2</a>
</li>
这样做的明显方法是获取页面上第一个和最后一个 post 的日期。不幸的是,jekyll-pagination 似乎只能通过 paginator.posts
.
可能是我在documentation里面找不到,所以请问你:在jekyll分页中是否可以从另一个页面访问post的列表?类似于 paginator.pages.2.posts
?
另一种方法是构建我自己的分页,这应该没问题,但我更愿意使用内置函数。
您可以间接获取信息:
paginator.previous_page
和paginator.next_page
分别为您提供上一页和下一页的页码,如果该页不存在,则为nil
。paginator.per_page
给出每页的帖子数。paginator.total_posts
为您提供站点中的帖子总数。site.posts
为您提供所有帖子的倒序列表。
因此给定当前 paginator
对象,确保 paginator.next_page != nil
,您知道下一个分页页面的帖子在 site.posts
中从 a
到 [=22] 编入索引=](包括)与:
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
我目前的做法是这样的:
{% 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 %}
我真的不喜欢 Liquid-Syntax :D
或:
{% 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 }}