2016-09-27 31 views
9

之外我在傑奇的網站叫/patterns一個目錄,其結構通常一般是這樣的:傑基爾:包括從目錄中的文件_includes

_includes _layouts _site /patterns index.html

我需要保持/patterns目錄外_includes原因很多,但主要是因爲我需要將/patterns中的文件放入iframe中以顯示在模式庫中)。

我想在我的Jekyll頁面中包含來自/patterns的文件,但使用{% include /patterns/file.html %} doesn't work as it points to the _includes folder. How would I go about including a file from a directory that isn't _includes`?

回答

2

在你_config.yml,您可以添加額外的目錄,像這樣:

includes: 
- patterns 

就像這麼簡單!

在這裏的行動在我的傑奇網站:https://github.com/pschfr/pschfr.github.io/blob/master/_config.yml

+1

太棒了!如果我設置了這個選項,'/ patterns'仍然會編譯並顯示在'/ _site'中? –

+0

如果你在'/ patterns'中放置了一個index.html,我相信! – Paul

+0

嗯,這是當我將我的建議添加到我的'_config.yml'時:'LiquidException:包含的文件'_includes/patterns/file-name.html'not found'。 要清楚,我試圖包含這樣的文件:'{%include /patterns/file-name.html%}'也許我做錯了嗎? –

1

我認爲collections會做你的需要。它們可以包含並呈現爲公共html。

這是一個example project這樣做。

+0

謝謝!我可能會誤解,但我認爲用'_'作爲前綴的目錄意味着在編譯時,Jekyll不會在'_site'中包含該目錄。對於我的用例,我需要在'/ _site'中包含'/ patterns',因爲我在iframe中引用了這些文件。 –

+1

通常對於下劃線是正確的,但是集合有一個特別的選項來寫出可公開訪問的html。我鼓勵你下載示例項目並運行'jekyll build'來看看它是如何工作的。 –

+1

另外,如果你打開index.html文件,你可以看到如何將它包含在液體和iframe中。 –

3

您可以在_config.yml中更改include標籤使用的目錄includes_dir。它看起來不像可以設置多個路徑(來源:https://jekyllrb.com/docs/configuration/)。

在任何情況下,_includes中的文件都不會輸出。您可以將特定於模式的內容分爲_includes/patterns/,但唯一對您的實際站點有影響的內容是包含這些文件的位置。

0

我把一個符號鏈接代替指向我想要的_includes目錄,因爲includes_dir似乎不喜歡../指定一個相對路徑(一個或多個目錄更高)。