[英]Jekyll : Using links to internal markdown files
帶有Folder/file.md
鏈接的md文件
當jekyll生成索引時,該文件的鏈接仍然是folder/file.md
,因此不會連接到生成的file.html
。 jekyll可以用相應的html文件替換markdown中的鏈接嗎?
我真的想要維護我的文件夾結構(大約7個子文件夾,每個子文件夾有3個降價文件)。
自2016年12月以來的答案是使用jekyll-relative-links插件。
如果你在GitHub頁面上托管它是一個白名單插件,所以你可能已經擁有它。
如果您不使用GitHub頁面,則需要以下安裝說明( 來自README ):
1.將以下內容添加到您網站的Gemfile中:
gem 'jekyll-relative-links'
2.將以下內容添加到您站點的配置文件中:
gems:
- jekyll-relative-links
我寫了一個簡單的插件來解決這個問題。 把它放在_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
它並不完美(我敢肯定你可以欺騙正則表達式)但它已經足夠我的目的了。
您正在尋找的標簽是{% link %}
,它於2016年到貨。
如果您有{% link _funkyCollection/banjo.md %}
,它將生成輸出文件funkyCollection/banjo.html
或funkyCollection/banjo/index.html
的正確路徑,或者其他任何內容,無論它funkyCollection/banjo/index.html
。
這就是我用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/)
希望這有助於某人。
Folder/file.md
頁面將導致創建_site/Folder/file.html
頁面。
因此,當您鏈接到此頁面時,它是[Link to page]({{site.baseurl}}/Folder/file.html)
而不是[Link to page]({{site.baseurl}}/Folder/file.md)
。
傑奇絕不會重寫file.md
到file.html
的URL。 所以你必須自己設置你的鏈接目標到結果page.url
,它通常是一個html文件,但可以是css,je,json,...
如果您在任何file.md中使用permalink: /folder/folder/
,它將生成一個/folder/folder/index.html文件,可通過[Link to page]({{site.baseurl}}/folder/folder/)
我遇到了這個並編寫了一個基本的Jekyll / Kramdown插件 。 它比正則表達式方法更不容易破解。
只要你的鏈接不以http://
或類似的東西開頭,並以.md
結尾,它就會將鏈接轉換為它們的小寫和帶連字符的名稱。
當然,您可以隨時修改行為以滿足您的需求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.