2013-10-06 64 views
0

在Octopress中,我試圖通過擴展Jekyll:Post類來獲得帖子的完整文件路徑(如~/projects/site/source/_posts/2012-01-01-something.markdown)。在Jekyll/Octopress中獲取發佈完整路徑

module Jekyll 
    class Post 
     alias_method :original_to_liquid, :to_liquid 
     def to_liquid 
      # test if this function is actually called 
      puts "hello" 
      original_to_liquid.deep_merge({ 
       'full_path' => File.join(@base,@name) 
      }) 
     end 
    end 
end 

我命名這個文件作爲full_path.rb,並把它放在plugins文件夾中。奇怪的是,我的to_liquid函數永遠不會被調用,因爲hello消息沒有顯示出來。

更爲奇怪的,我找到隨Octopress的date.rb還定義的to_liquid方法class Post,所以我添加了full_path => File.join(@base,@name)線存在和它的作品!我很困惑。

所以我的問題是,爲什麼我的to_liquid方法沒有被調用?

UPDATE

從0.12.0升級傑基爾到1.2.1後,神奇地運行......

+0

什麼你要找的是已經存在的問題[如何獲得降價後的完整路徑(HTTP:/ /stackoverflow.com/questions/38406314/is-there-a-way-to-get-the-full-path-of-the-markdown-post-in-jekyll?s=2|1.2782) – SACn

回答

1

你可能需要看看Post#permalinkdocumentation。它應該做你想要的,而不必創建新的插件。

(如果我誤會了你,也許是containing_dir你要尋找的方法)

+0

'permalink'(例如'/ 2012/01/01/something/index.html')並不是我想要的。我需要在Linux中發佈文件的完整路徑。另外,對於'contains_dir',我沒有'source'和'dir'來傳入。 如果我可以訪問Post的'@ base'和'@ name',那就完美了,這正是我想要的。 –

+0

事情是,我正在寫一個Liquid標籤來顯示帖子文件的git歷史記錄。在'render'中,我只能得到帖子的液體散列,所以我想合併帖子數據散列中的完整路徑。 –

+0

最讓我困擾的是,我自己的'to_liquid'方法完全沒有效果。我只是不明白爲什麼...... –