2014-03-29 59 views
3

目前我在靜態網站上工作,所以我使用jekyll來生成它。爲了有一個漂亮的結構和花哨的URL,我使用永久鏈接。jekyll中的動態鏈接

permalink: /impressum/ 

因此,例如,impressum.html呈現爲impressum/index.html。並在我的HTML我可以簡單地鏈接到該文件與

<a href="/impressum"> 

這對我很好。但是你知道,我是一名程序員。如果我想要例如將URL更改爲/ imprint /?那麼,我可以改變永久鏈接,沒有任何問題。但是,網站上的所有其他鏈接是什麼?是的,當然,我可以使用搜索&替換我的編輯器的功能來更改鏈接的URL並使用站點檢查器檢查整個站點是否存在斷開的鏈接,但這不是我想要的方式。這就是爲什麼我試圖用永久鏈接創建某種全局變量的原因。

_config.yml:

lnk_impressum: /impressum/ 

impressum.html

--- 
layout: layout 
title: Your New Jekyll Site 
permalink: {{ site.lnk_impressum }} 
--- 

但是,這並不工作。我得到這個錯誤:

Generating... error: no implicit conversion of Hash into String. Use --trace to view backtrace 

那麼有什麼問題或有更好的方法?

回答

0

根據this SO answer,似乎無法將Liquid標籤放置在YAML Frontmatter或_config文件中。

您可以嘗試的其他方法是基於documentation pages for Bootstrap使用的方法,該方法使用頁面變量,他們稱爲slug,它爲每個頁面提供了唯一的,不變的引用。

舉例來說,如果你想鏈接的地方,你的impressum.html頁面(其中永久可能會改變),可以將另一頁上的代碼,如index.html的:

{% for mypage in site.pages %} 
{% if mypage.slug == 'impressum' %} 
    <a href="{{ mypage.url }}">Link to Impressum page</a> 
{% endif %} 
{% endfor %} 

然後,在YAML frontmatter爲每個網頁,地點代碼類似於以下:

--- 
slug: impressum 
permalink: /my-permalink-to-impressum/ 
--- 

要改變你的永久鏈接在未來,你只想讓每個換到網頁變量permalink頁。只要slug變量保持不變,您的其他頁面中引用的URL將由Jekyll自動更新。