带有Folder/file.md
当jekyll生成索引时,该文件的链接仍为folder/file.md
,因此不会连接到生成的file.html
。 jekyll可以将markdown中的链接替换为相应的html文件吗?
我真的想维护我的文件夹结构(大约7个子文件夹,每个子文件夹都有3个降价文件)。
答案 0 :(得分:5)
答案since December 2016是使用jekyll-relative-links插件。
这是white-listed plugin if you are hosting on GitHub pages所以你可能已经拥有它了。
如果您不使用GitHub页面,则需要以下安装说明(from the README):
1.将以下内容添加到您网站的Gemfile:
gem 'jekyll-relative-links'
2.将以下内容添加到您网站的配置文件中:
gems:
- jekyll-relative-links
答案 1 :(得分:2)
我已经写了一个简单的插件来解决这个问题。把它放在_plugins/
中,并使链接引用*.md
文件(所以github渲染链接工作);如果你使用jekyll构建它(当你能够运行插件时)链接将更改为*.html
。由于github没有运行插件,因此不适用。
module ChangeLocalMdLinksToHtml
class Generator < Jekyll::Generator
def generate(site)
site.pages.each { |p| rewrite_links(site, p) }
end
def rewrite_links(site, page)
page.content = page.content.gsub(/(\[[^\]]*\]\([^:\)]*)\.md\)/, '\1.html)')
end
end
end
它并不完美(我确定你可以欺骗正则表达式)但它已经足够我的目的了。
答案 2 :(得分:1)
您正在寻找的标签是{% link %}
,它于2016年到货。
如果您有{% link _funkyCollection/banjo.md %}
,它会生成输出文件funkyCollection/banjo.html
或funkyCollection/banjo/index.html
或其他任何地方的正确路径。
答案 3 :(得分:1)
这就是我用jekyll 3.8.5解决此问题的方法。
对于根目录中的链接:/file.md
---
layout: page
title: Root File
permalink: /file/
---
This file is in root directory.
对于子目录中的链接:/folder/file.md
---
layout: page
title: SubDir File
permalink: /folder/file/
---
This file is in sub-directory.
现在链接这些文件:
[Root File]({{site.baseurl}}/file/))
[Sub Dir File]({{site.baseurl}}/folder/file/)
希望这对某人有帮助。
答案 4 :(得分:0)
Folder/file.md
页面将导致创建_site/Folder/file.html
页面。
因此,当您指向此页面的链接时,[Link to page]({{site.baseurl}}/Folder/file.html)
不是[Link to page]({{site.baseurl}}/Folder/file.md)
。
Jekyll永远不会在网址中将file.md
重写为file.html
。所以你必须自己设置链接目标到结果page.url
,这通常是一个html文件,但可以是css,je,json,......
如果您在任何file.md中使用permalink: /folder/folder/
,它将生成一个/folder/folder/index.html文件,可以使用[Link to page]({{site.baseurl}}/folder/folder/)
答案 5 :(得分:0)
我遇到了这个和written a basic Jekyll/Kramdown plugin。它比正则表达方法更不容易打破。
只要您的链接不以http://
或类似内容开头,并以.md
结尾,它就会将链接转换为其小写和带连字符的名称。
当然,您可以随时修改行为以满足您的需求。