Jekyll中生成文件的自定义文件名

时间:2017-05-07 14:50:48

标签: jekyll

在我的_config.yml文件中,我定义了永久链接,如permalink: /posts/:title/(注意结束斜杠)。

对于_posts/my_first_post/2017-05-06-my_first_post.markdown中的帖子,生成的文件为_site/posts/my_first_post/index.html

如何将文件名从index.html更改为something.htm之类的任意内容?

编辑1:

不想这样做,但我最终不得不看看Jekyll的源代码:

lib/jekyll/page.rb中有这样的:

def destination(dest)
  path = site.in_dest_dir(dest, URL.unescape_path(url))
  path = File.join(path, "index") if url.end_with?("/")
  path << output_ext unless path.end_with? output_ext
  path
end

lib/jekyll/document.rb中有这样的:

def destination(base_directory)
  dest = site.in_dest_dir(base_directory)
  path = site.in_dest_dir(dest, URL.unescape_path(url))
  if url.end_with? "/"
    path = File.join(path, "index.html")
  else
    path << output_ext unless path.end_with? output_ext
  end
  path
end

因此 index.html 部分是硬编码的。这个问题无法回答......除非有一个插件能够满足我的需求。

2 个答案:

答案 0 :(得分:1)

您可以根据具体要求调整Jekyll的代码。

在jekyll文件夹中打开lib\jekyll\Page.rb并更新目标方法:

module Jekyll
  class Page
    def destination(dest)
      path = site.in_dest_dir(dest, URL.unescape_path(url))
      path = File.join(path, "index") if url.end_with?("/")
      path << output_ext unless path.end_with? output_ext

      # replace index with title
      path.sub! 'index',  data['title'] if data['title']

      path
    end
  end
end

在返回destination

之前,还要使用相同的行更新lib\jekyll\Document.rb中的path方法

答案 1 :(得分:0)

您可以在permalink: /posts/:title/something:output_ext或前置事项

中使用_config.yml