2016-12-21 5 views
1

Jekyll pagination позволяет вам размещать сообщения аккуратно на страницах. Я хотел бы поставить диапазон дат в подсказке по ссылкам на страницы, так же, как:Доступ к сообщениям с другой страницы в jekyll pagination

<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 pagination? Что-то вроде 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_page и paginator.next_page дать вам номер страницы, соответственно предыдущей и следующей страницы постраничной или nil если страница не существует.
  • paginator.per_page дает вам количество сообщений на странице.
  • paginator.total_posts дает общее количество сообщений на сайте.
  • site.posts дает вам обратный хронологический список всех сообщений.

Поэтому, учитывая текущий paginator объект, обеспечивающий paginator.next_page != nil, вы знаете сообщения от следующей страницы постраничной индексируются в site.posts от a до b (включительно) с:

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

or:

{% 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 '. –

Смежные вопросы