在Jekyll支持的页面中,我有一组文件位于:
_includes/stuff/
我将这些文件放在那里,以便我可以{:1}使用其他Markdown页面include
使用:
{% include stuff/example.txt %}
这可以按预期工作。
但是,我还想将这些文件复制到生成的页面,以便我可以链接到它们,并且人们可以按照这些链接下载它们。但根据定义,存储在以下划线开头的目录中的东西不会被Jekyll复制。
另一种方法也不起作用。我把这些文件放在一个名为stuff
的顶级文件夹中。这会将文件夹复制到最终站点。但是,我无法在此文件夹中包含文件。似乎include_relative
只允许包含当前文件以下的文件。例如,以下内容不起作用:
{% include_relative stuff/example.txt %}
{% include_relative /stuff/example.txt %}
{% include_relative ../stuff/example.txt %}
我可以在同一时间实现包含和复制的任何想法吗?
答案 0 :(得分:3)
这适用于index.html
{% include_relative example.txt %} for example.txt
{% include_relative stuff/example.txt %} for stuff/example.txt
{% include_relative /stuff/example.txt %} for stuff/example.txt
<强>东西/ example.txt中强>
class Toto
def dototo
myvar = "toto"
end
end
<强>的index.html 强>
{% assign codeurl = "stuff/example.txt" %}
{% highlight ruby %}
{% include_relative {{codeurl}} %}
{% endhighlight %}
<a href="{{codeurl}}">link to code</a>
if codeurl == "/stuff/example.txt" this generates a link relative to site root
this may need {{site.baseurl}} prepended if your site is not at the root
of a domain (eg: user.github.io/repository)
<a href="{{site.baseurl}}{{codeurl}}">link to code</a>
出于安全原因,这不起作用:
{% include_relative ../stuff/example.txt %}
Just to avoid directory traversal
{% include_relative ../../../../../../../../../../../../etc/pwd %}
如果您想将文件放在 _includes / stuff 中,则需要在_config.yml中执行include: [ /_includes ]
,其中包含_includes中的所有文件作为静态文件。不是很干净,因为你不能过滤像include: [ /_includes/stuff ]
这样的子目录来只导入你的东西文件。
注意:一个脏技巧只允许您导入_includes/stuff/*.txt
,但我认为它真的很脏。
# _config.yml
include:
- "_includes"
- "stuff"
- "*.txt"
exclude:
- "_includes/*.*"