【问题标题】:In Jekyll, how can I programmatically modify permalinks for pages?在 Jekyll 中,如何以编程方式修改页面的永久链接?
【发布时间】:2015-02-23 19:14:59
【问题描述】:

在一个包含许多页面(不是博客文章)的 Jekyll 站点中,我想以编程方式调整每个页面的永久链接。我尝试了一个生成器插件,例如:

module MySite
  class MySiteGenerator < Jekyll::Generator
    def generate(site)
      site.pages.each do |page|
        page.data['permalink'] = '/foo' + page.url
        # real world manipulation of course more complicated
      end
    end
  end
end

但是虽然这会运行并设置 page.data['permalink'] 字段,但输出仍然相同。

我做错了什么,或者有完全不同的方法吗?谢谢!

【问题讨论】:

    标签: ruby jekyll jekyll-extensions


    【解决方案1】:

    用这样的东西覆盖页面类会更容易:

    module Jekyll
      class Page
        alias orig_permalink permalink
        def permalink
          permalink    = orig_permalink
          newPermalink = "foo/#{permalink}"
        end
      end
    end
    

    未测试。

    【讨论】:

    • 其实我那里太快了,没用。 :( 请参见github.com/skagedal/permalink_mod_test 的示例 - “主题”下有一个 index.html 页面和两个页面,但只有索引页面包含在生成的 _site 中。
    • 然而 - 如果一个页面已经在它的前面有一个“永久链接”,它会被包含在 _site 中,并且它的永久链接被正确修改。现在向 repo 添加了第三页来证明这一点。
    猜你喜欢
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 2015-05-17
    相关资源
    最近更新 更多