2013-02-19 56 views
2

我想在博文中包含HTML代碼片段,並將代碼放在一個地方。仔細閱讀框架後,我已經能夠得到這個工作:Octopress HTML包含參數

source 
    _includes 
    custom 
     foo.html 

{% include custom/foo.html %} 

我的問題:有沒有辦法,我可以傳遞參數到foo.html?我只是想傳遞一些字符串,並以格式化的方式輸出它們,並且無法弄清楚我錯過了什麼。

謝謝你的時間。

回答

1

你不行。但是你可以使用其他方式來喜歡做什麼主題。

首先,設置格式化你custom/foo.html想要的風格,例如,我添加了一個customfootersource/_includes/custom/footer.html

<p> 
    Copyright &copy; {{ site.time | date: "%Y" }} - {{ site.author }} - 
    <span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span> 
    {{ site:customfooter }} 
</p> 

然後,設置字符串要在_config.yml設置:

url: http://fann.im 
customfooter: My custom footer, bala bala. 

希望這會幫助你。

1

沒有辦法做到這一點,因爲Jekyll是靜態的。根據定義,任何可以從一個文件傳遞到另一個文件的內容都是已知的值,因爲它必須在網站生成時定義。由於您無法傳遞動態值,因此您可以將靜態值放在任何位置,因此這種間接性沒有意義。

如果您有例如生成10個大部分類似但稍有不同的輸出塊,然後使用插件完成使用變量隔離這些更改的任務。這爲您提供了一些靈活性,同時仍然將該值放入要用到的模板中。

下面是一個液體標籤的例子,該標籤用特定的hrefs分配生成twitter bootstrap導航標籤。

module Jekyll 
    class XmlJsonTabsTag < Liquid::Tag 
    def initialize(tag_name, markup, tokens) 
     @methodname = markup.strip 
     super 
    end 

    def render(context) 
     #wondering what this syntax is? google "here document" 
     <<-HTML 
     <ul class="nav nav-tabs"> 
      <li class="active"> 
       <a href="##{@methodname}-json" data-toggle="tab">JSON</a> 
      </li> 
      <li> 
       <a href="##{@methodname}-xml" data-toggle="tab">XML</a> 
      </li> 
     </ul> 
     HTML 
    end 
    end 
end 

Liquid::Template.register_tag('xmljsontabs', Jekyll::XmlJsonTabsTag) 

傳遞給液體標籤模板使用@methodname值:它輸出類似

<ul class="nav nav-tabs"> 
    <li class="active"> 
    <a href="#foo-json" data-toggle="tab">JSON</a> 
    </li> 
    <li> 
    <a href="#foo-xml" data-toggle="tab">XML</a> 
    </li> 
</ul> 
+1

正是我一直在尋找

{% xmljsontabs foo %} 

。感謝您的詳細解答。 – 2013-02-24 12:12:49