2016-09-13 2 views
0

Я знаю {{page.previous.url}} и {{page.next.url}} доступен для сообщений, но, к сожалению, Я использую структуру страницы для этих страниц проектов в своем блоге.в Jekyll RB & GH Pages, отображающий следующую и предыдущую страницу (не сообщение)

В конце каждого проекта, я хотел бы иметь подвал, который имеет

[ < - Previous Project (if available)] [ Home ] [ Next Project -> (if available) ] 

док структуры

root 
-- project1/ 
    - /img 
    - /index.md 
-- project2/ 
    - /img 
    - /index.md 
-- project3/ 
    - /img 
    - /index.md 
index.html 

Возможно ли это ж/Jekyll без каких-либо плагинов?

Update

Потому что нет «индекса» доступен на текущей странице вы находитесь, я думаю, что я буду иметь Переберите site.pages, сопоставьте site.page.title с page.title, а затем добавить и вычесть forloop.index для next и previous ссылок.

Является ли это единственным способом или я чрезмерным?

пример кода, что я имею в виду ниже:

{% for entry in site.pages %} 
     {% if entry.title == page.title %} 
      index is: {{ forloop.index }} <br /> 

      sites.pages is {{ site.pages[forloop.index].url }} <br /> 
      {% assign prev = forloop.index | minus:1 %} 
      {% assign next = forloop.index | plus:1 %} 

      {% assign prevUrl = site.pages[prev].url %} 
      {% assign nextvUrl = site.pages[next].url %} 

      {% assign currentURL = site.pages[forloop.index].url %} 

      previous page is: <em>{{ prevUrl }}</em> <br /> 
      current page is: <em>{{ currentUrl }}</em> <br /> 
      next page is: <em>{{ nextUrl }}</em> 
     {% endif %} 
    {% endfor %} 

EDIT ответ 2

JoostS был отправной точкой я нуждался. Я пошел вперед и включил свой код, потому что то, что мне нужно, немного отличается от их (в него был включен main.css, а также несколько других страниц, которые не должны были быть включены в Loop). Спасибо за тонну за помощь!

, чтобы построить массив ж/Project-Only Страницы

{% assign sorted_pages2 = site.pages %} 

{% assign sorted_pages = "" | split: "" %} 
{% for item in sorted_pages2 %} 
    {% if item.type == "project" %} 
     {% assign sorted_pages = sorted_pages | push: item %} 
    {% endif %} 
{% endfor %} 

{% for item in sorted_pages %} 
    {% if item.url == page.url %} 
     {% assign this_i = forloop.index0 %} 
     {% assign num_of_pages = forloop.length %} 
     {% assign last_i = forloop.length | minus: 1 %} 
     {% assign next_i = forloop.index0 | plus: 1 %} 
     {% assign prev_i = forloop.index0 | minus: 1 %} 
    {% endif %} 
{% endfor %} 

Для отображения Следующая и предыдущая УСЛОВНО

<div class="flex f-row project-footer"> 
     <div> 
       {% if prev_i < 0 %} 
        <!-- Sorted_Last{{ sorted_pages[last_i].url }} --> 
       {% else %} 
        <a href="{{ sorted_pages[prev_i].url }}"> 
         <span>Previous Project</span> 
        </a> 
      {% endif %} 
     </div> 
     <div> 
      <a href="/"> 
        <span>Home</span> 
      </a> 
     </div> 
     <div> 
      {% if num_of_pages > next_i %} 
       <a href="{{ sorted_pages[next_i].url }}"> 
        <span>Next Project</span> 
       </a> 
      {% endif %} 
     </div> 
    </div> 

Конечный результат End Result

+0

Да, вы можете запросить все страницы. См. Jekyll Docs. – JoostS

+0

Вы можете использовать 'site.pages' для этого. – JoostS

+0

Вы можете пропустить их, да, но нет места страницы.индекса для «текущей страницы». Я добавил код, чтобы объяснить, что я думаю, может быть, решение. –

ответ

1

Вот код, который я использую в моем веб-сайте:

{% if page.layout != 'post' %} 
{% assign sorted_pages2 = site.pages | sort: 'order' %} 
{% else %} 
{% assign sorted_pages2 = site.posts reversed %} 
{% endif %} 

{% assign sorted_pages = "" | split: "" %} 
{% for item in sorted_pages2 %} 
    {% if item.url != "/404.html" %}  
     {% assign sorted_pages = sorted_pages | push: item %} 
    {% endif %} 
{% endfor %} 

{% for item in sorted_pages %} 
    {% if item.url == page.url %} 
     {% assign this_i = forloop.index0 %} 
     {% assign num_of_pages = forloop.length %} 
     {% assign last_i = forloop.length | minus: 1 %} 
     {% assign next_i = forloop.index0 | plus: 1 %} 
     {% assign prev_i = forloop.index0 | minus: 1 %} 
    {% endif %} 
{% endfor %} 

И потом:

function next() { 
    document.location.href='{% if num_of_pages > next_i %}{{ sorted_pages[next_i].url }}{% else %}{{ sorted_pages[0].url }}{% endif %}'; 
} 
function prev() { 
    document.location.href='{% if prev_i < 0 %}{{ sorted_pages[last_i].url }}{% else %}{{ sorted_pages[prev_i].url }}{% endif %}'; 
} 

Это перебирает страницы или через почту. См .: http://www.usecue.com/

+0

Это начало, в котором я нуждался. Благодаря JoostS! –

+0

Добро пожаловать! – JoostS