【问题标题】:Get Post Full Path in Jekyll/Octopress在 Jekyll/Octopress 中获取发布完整路径
【发布时间】:2013-10-06 22:21:31
【问题描述】:

在 Octopress 中,我试图通过扩展 Jekyll:Post 类来获取帖子的完整文件路径(类似于 ~/projects/site/source/_posts/2012-01-01-something.markdown)。

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 还定义了class Postto_liquid 方法,所以我在其中添加了full_path => File.join(@base,@name) 行并且它可以工作!我很困惑。

所以我的问题是,为什么我的 to_liquid 方法没有被调用?

更新

将 jekyll 从 0.12.0 升级到 1.2.1 后,它神奇地工作了......

【问题讨论】:

标签: ruby jekyll liquid octopress


【解决方案1】:

你可以看看Post#permalinkdocumentation。它应该做你想做的事,而不必创建新的插件。

(如果我误解了你,也许containing_dir 是你要找的方法)

【讨论】:

  • permalink(例如/2012/01/01/something/index.html) 不是我想要的。我需要发布文件在 Linux 中的完整路径。另外,对于containing_dir,我没有sourcedir 可以传入。如果我可以访问Post 的@base@name,那就完美了,这正是我想要的。
  • 问题是,我正在编写一个 Liquid Tag,它显示了 post 文件的 git 历史记录。在render,我只能得到post的液体hash,所以我想在post的数据hash中合并全路径。
  • 最困扰我的是,我自己的to_liquid方法完全没有效果。我只是不明白为什么....
  • 嗯,您使用的是“古老”版本的 Jekyll,并且从他们开始改进它已经付出了很多努力。始终升级您的库! :P
  • 年,问题是,我正在使用 Octopress,它有点过时了......我正在考虑切换回纯 Jekyll。
猜你喜欢
  • 2017-03-16
  • 2011-12-11
  • 2014-12-14
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多