2016-09-13 63 views
0

我知道{{page.previous.url}} 和{{page.next.url}}可用於發佈,但不幸的是我在我的博客上爲這些項目頁面使用了Page結構。在Jekyll RB&GH頁面中,顯示上一頁和下一頁(不是發佈)

在每個項目結束時,我想有一個具有

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

文檔結構

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

頁腳這是可能的瓦特/傑奇沒有任何插件?

更新

因爲沒有「指標」提供的當前頁面你,我想我會通過site.pages有循環的,匹配與該site.page.title page.title然後加上和減去forloop.index爲下一個以前的鏈接。

這是唯一的方法還是我過於複雜?的什麼,我想下面

示例代碼:

{% 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以及一些其他不包含在循環中的頁面)。非常感謝您的幫助!

才能生成數組瓦特/項目 - 僅頁數

{% 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

您可以循環瀏覽它們,但是沒有「當前頁面」的page.index位置。我添加了一些代碼來解釋我在想什麼可能是解決方案。 –

回答

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

相關問題