带有指向Folder/file.md
的链接的md文件。
当jekyll生成索引时,文件的链接仍然是folder/file.md
,因此无法连接到生成的file.html
。jekyll能否用它们对应的html文件替换markdown中的链接?
我真的想保持我的文件夹结构(大约7个子文件夹,每个子文件夹都有3个markdown文件)。
答案自2016年12月以来是使用jekyll-relative-links插件。
如果您正在GitHub页面上托管,它是一个{{link3:白名单插件},所以您可能已经拥有它了。
gem 'jekyll-relative-links'
2.将以下内容添加到您网站的配置文件中:
gems:
- jekyll-relative-links
.md
文件都应该有一个默认的永久链接,而不需要.md
,这样[foo](bar)
就可以工作了。然后[[bar]]
也可以工作!你有什么想法吗? - cregox---
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/)
site.baseurl
吗?另外,你有没有想过是否可能将 [file](/file)
链接到一些更短的“维基”样式,比如 [[file]]
? - cregox_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
虽然不完美(我相信你可以欺骗正则表达式),但它已经足够满足我的需求。
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
重写为url中的file.html
。因此,您必须自己设置链接目标到生成的page.url
,这通常是一个html文件,但也可以是css、je、json等。
如果您在任何file.md
中使用permalink: /folder/folder/
,它将生成一个可通过[Link to page]({{site.baseurl}}/folder/folder/)
访问的/folder/folder/index.html
文件。
site.baseurl
,它也可以工作,@james。 - cregox我遇到了这个问题,编写了一个基本的Jekyll/Kramdown插件。它比正则表达式方法更不容易出错。
只要你的链接不以http://
或类似的方式开头,并以.md
结尾,它就会将链接转换为它们的小写和连字符名称。
当然,你也可以根据自己的需要修改这种行为。