Jekyll:在_includes之外的目录中包含一个文件

时间:2016-09-27 20:53:38

标签: include jekyll

我的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`?

7 个答案:

答案 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种类型的包含:

  1. 绝对文件名(以/开头)。
  2. 相对于Jekyll网站顶级目录的文件名(请勿以./开头)。
  3. 相对于用户主目录的文件名(以~开头)。
  4. PATH上的可执行文件名(以!开头)。

语法:

{% include_absolute path [ optionalParam1='yes' optionalParam2='green' ] %}

可选参数可以具有任何名称。 包含的文件将替换参数。

安装

include_absolute.rb复制到/_plugins中并重新启动Jekyll。

示例

  1. 包括没有参数的文件;显示了所有四种类型的包含。

    {% include_absolute '../../folder/outside/jekyll/site/foo.html' %}
    {% include_absolute 'folder/within/jekyll/site/bar.js' %}
    {% include_absolute '/etc/passwd' %}
    {% include_absolute '~/.ssh/config' %}
    
  2. 包括文件并向其传递参数。

    {% 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)

我为此找到的唯一解决方案是使用此插件

https://github.com/tnhu/jekyll-include-absolute-plugin