我的Jekyll网站中有一个名为/patterns
的目录,其结构通常看起来像这样:
_includes
_layouts
_site
/patterns
index.html
出于多种原因,我需要将/patterns
目录保留在_includes
之外,但主要是因为我需要将/patterns
中的文件拖到iframe中以显示在模式库中)。
我希望在我的Jekyll页面中包含/patterns
中的文件,但使用{% include /patterns/file.html %} doesn't work as it points to the
_包括folder. How would I go about including a file from a directory that isn't
_ includes`?
答案 0 :(得分:6)
您可以在include
中更改includes_dir
标记与_config.yml
使用的目录。看起来您可以设置多条路径(来源:https://jekyllrb.com/docs/configuration/)。
在任何情况下,_includes
中的文件都不会出现在您的输出中。您可以将特定于模式的包含分隔到_includes/patterns/
,但唯一能够对您的实际网站产生任何影响的是包含这些文件的位置。
答案 1 :(得分:2)
@Jeremy Lynch所指的我improved the plugin。这是文档:
include_absolute
Jekyll的内置include
标记不支持包含_includes
文件夹之外的文件。
该插件支持4种类型的包含:
/
开头)。.
或/
开头)。~
开头)。PATH
上的可执行文件名(以!
开头)。{% include_absolute path [ optionalParam1='yes' optionalParam2='green' ] %}
可选参数可以具有任何名称。 包含的文件将替换参数。
将include_absolute.rb
复制到/_plugins
中并重新启动Jekyll。
包括没有参数的文件;显示了所有四种类型的包含。
{% include_absolute '../../folder/outside/jekyll/site/foo.html' %}
{% include_absolute 'folder/within/jekyll/site/bar.js' %}
{% include_absolute '/etc/passwd' %}
{% include_absolute '~/.ssh/config' %}
包括文件并向其传递参数。
{% include_absolute '~/folder/under/home/directory/foo.html' param1='yes' param2='green' %}
答案 2 :(得分:1)
在_config.yml中,您可以添加其他目录,如下所示:
includes:
- patterns
就这么简单!
在我的Jekyll网站上采取行动:https://github.com/pschfr/pschfr.github.io/blob/master/_config.yml
答案 3 :(得分:1)
我认为collections会做你需要的。它们可以包含在内并作为公共HTML呈现。
这是example project就是这样做的。
答案 4 :(得分:1)
我放了一个符号链接来代替指向我想要的_includes
目录,因为includes_dir
似乎不喜欢../
指定一个亲戚(一个或多个)目录更高)路径。
答案 5 :(得分:1)
您可以使用include_relative
标记选择include file fragments relative to the current
file
/patterns/file.html
对于目录结构:
_includes
_layouts
_site
/patterns/file.html
index.html
在这种情况下,以下操作无效:
{% include /patterns/file.html %}
使用include_relative
作为/pattern
index.html
与current file
相关联 {/ 1}}
{% include_relative patterns/file.html %}
答案 6 :(得分:0)
我为此找到的唯一解决方案是使用此插件