2017-09-13 74 views
1

我有一個集合_colletion。有一個文件_collection/path/topic.md和一個文件夾_collection/path/topic/,其中包含大量帶有內容的.md文件。這些文件的永久鏈接是/path/topic/path/topic/file-x - 因此,父頁面中包含具有相同名稱並具有多個隨機頁面的文件夾。輸出鏈接到「父頁面」?

現在我要輸出在所有這些.md文件與topic.md標題作爲鏈接文本鏈接到/path/topic

--- 
title: This is the page title defined in topic.md 
--- 

應該成爲 <a href="/path/topic">This is the page title defined in topic.md</a>

如何做到這一點最容易?

我可以以某種方式訪問​​該文件夾的名稱.md文件topic,並用它來閱讀topic.md和輸出它的title,還可以生成一個鏈接到它?

+1

是不是page.url的 '主題' 的一部分? – JoostS

+0

是的,'file-x.md'會將'/ path/topic/file-x'作爲它的'page.url'。我希望能夠以某種方式從此轉到'topic',然後轉到'topic.md'的'title'和URL,以便我可以鏈接到那裏。 – janpio

+1

如果topic.md被稱爲index.md ... – JoostS

回答

1

我當前的手動「解決方案」(或解決方法):

添加parent進入所有頁面的frontmatter在/topic/包含該topic.md標題和相對URL:

parent: ['Topic Title', '../topic'] 

在頁的模板:

{% if page.parent %} 
    <p>« <a href="{{ page.parent[1] }}">{{ page.parent[0] }}</a></p> 
{% endif %} 

工程,但當然重複此信息n次和必須手動維護。

+0

不是非常乾燥,但是具有可接受的構建時間的解決方案。 – JoostS

1

這個怎麼樣(選項1)?

{% assign pageurl_array = page.url | split: "/" %} 
{% assign path = pageurl_array[0] %} 
{% assign topic = pageurl_array[1] %} 
<p>« <a href="{{ path }}/{{ topic }}/{{ topic }}.html"> 
    {{ topic | capitalize | replace: "-", " " }} 
</a></p> 

如果你不介意瘋狂的生成時間,做這個(選項2):

{% assign pageurl_array = page.url | split: "/" %} 
{% assign path = pageurl_array[0] %} 
{% assign topic = pageurl_array[1] %} 
{% capture parent_url %}{{ path }}/{{ topic }}/{{ topic }}.html{% endcapture %} 
<p>« <a href="{{ parent_url }}"> 
    {% for i in site.pages %} 
    {% if i.url == parent_url %} 
     {{ i.title }} 
    {% endif %} 
    {% endfor %} 
</a></p> 

我會去的第一個選項(快得多),並使用這個JavaScript來獲得資金和特殊字符右:

$('a').each(function() { 
    var str = $(this).html(); 
    str = str.replace('Topic from url', 'Topic from URL'); 
    $(this).html(str); 
}); 

我承認JavaScript解決方案是遠遠漂亮,但它解決了建造時間問題非常好。

請注意,Jekyll相當緩慢。如果您需要更快的構建時間,我會建議您深入研究Hugo。

+0

哦,非常手動;)看起來像href可以適應('/ {{path}}/{{topic}}'就足夠了我的情況),並取代我的「解決方法」的一部分。但我想自動從'topic.md'中自動獲得實際的'title'屬性...(所以鏈接文本不應該是「主題」,而是「這是在主題中定義的頁面標題,md」) – janpio

+1

可以遍歷site.pages並匹配網址來找到這個標題......但是這會(顯着)增加構建時間。我不會這樣做,因爲它對我來說似乎不是真的有必要。 – JoostS

+0

是的,我希望有一個(性能)「給我這個文件/頁面的標題」功能,我不知道。 – janpio

1

在對我的問題和其他答案的評論進行討論期間,我注意到我想要構建的實際上是一件很常見的事情:麪包屑導航!只是一個非常「小」的,只有一個級別。

有了這個新發現的知識,我可以谷歌「麪包屑」插件傑奇:

該解決方案使用頁面的路徑來提取「麪包屑」:

它使用鏈接文本的文件夾名稱。

另一個類似的實現:

還有一句:

因此,在所有O否title鏈接文本f這些。


這種解決方案實際上讀取title的頁面,但也可以從網頁讀取breadcrumb frontmatter,並使用這些作爲鏈接文字:

This on e可能是一個有效的解決方案。


也有真正的插件(即不幸的是不與Github上頁工作):