在 Jekyll 中,我们可以将多个 collections 分组在同一个文件夹中吗?
In Jekyll, can we group multiple collections inside the same folder?
在 config.yml 中,我这样定义 collections:
collections:
music:
output: false
dancing:
output: false
问题是我会有很多 collections,它们会弄乱我的根 Jekyll 文件夹。
有没有办法将所有 collections 分组到一个文件夹中,例如命名为 _collections?
所以,我会:
_collections
_dancing
_music
....
答案是否定的。您的 collections 文件夹必须位于根文件夹的根目录下。
即使你命名你在 _collections/_music 文件夹中创建一个 collection,并像这样设置它:
collections:
collections/_music folder:
output: true
由于路径清理过程,Jekyll 最终在 _collections_music folder
中寻找您的 collection(没有任何斜线)。
参见 collection.rb, site.rb and jekyll.rb
中的 jekyll 代码
没有什么能阻止您使用 collection 中的子文件夹。
(注意:这不是您问题的答案,而是一种可能的解决方法)
因此,作为一种解决方法,您可以只使用一个 collection:例如说 _arts
并组织您的文件夹,例如:
_arts
dancing
music
concerts
.....
要单独列出它们,您可以使用:
文件中的 FrontMatter 变量 category: dancing
当你有一个输出时 并检查它是否有一个仅跳舞的列表。
{% for project in site.arts %}
{% if project.category == 'dancing' %}
....
{% endif %}
{% endfor %}
或者在没有输出时检查路径collection
{% for project in site.arts %}
{% if project.url contains 'dancing' %}
....
{% endif %}
{% endfor %}
如果您的内部有成百上千个项目,这可能会减慢您的构建速度。
由于 this issue 已合并,现在可以实现了。
User configures as:
collections_dir: my_collections
Then we look in my_collections/_pizza for the pizza collection, and my_collections/_lasagna for the lasagna collection.
这个现在可以实现(我是运行 Jekyll 3.7.2,我不确定这是在哪个版本实现的)。
操作方法如下:在您的 _config.yml
中,您可以定义 collection 以及 collection 的文件夹。让我们看一下我正在处理的客户站点上的示例:
collections:
events:
output: true
work:
output: true
jobs:
output: true
cases:
output: true
permalink: /work/:name
collections_dir: pages
collections_dir: [your_folder_here]
会告诉 Jekyll 查看该文件夹 collections。我在开发中的文件夹结构如下:
pages/
...
_events/
_work/
_jobs/
_cases/
并且在编译后的站点中是这样的:
...
events/
jobs/
work/ (contains both "work" and "cases" collections)
还有一件事没有被问到,但我发现它很有用,那就是你能够将 不同的 collection 输出到同一个文件夹中 .就我而言,我有一个客户网站,上面有两种类型的工作样本:客户案例和一般示例。我们想将它们分开以便更好地维护,但也将它们显示在同一文件夹中。为此,您可以简单地为 collection 定义一个永久链接。在我们的例子中,我们将案例的永久链接放在 work
文件夹中 (permalink: /work/:name
).
希望对您有所帮助!
这也存在于 Jekyll documentation
在 config.yml 中,我这样定义 collections:
collections:
music:
output: false
dancing:
output: false
问题是我会有很多 collections,它们会弄乱我的根 Jekyll 文件夹。
有没有办法将所有 collections 分组到一个文件夹中,例如命名为 _collections?
所以,我会:
_collections
_dancing
_music
....
答案是否定的。您的 collections 文件夹必须位于根文件夹的根目录下。
即使你命名你在 _collections/_music 文件夹中创建一个 collection,并像这样设置它:
collections:
collections/_music folder:
output: true
由于路径清理过程,Jekyll 最终在 _collections_music folder
中寻找您的 collection(没有任何斜线)。
参见 collection.rb, site.rb and jekyll.rb
中的 jekyll 代码没有什么能阻止您使用 collection 中的子文件夹。 (注意:这不是您问题的答案,而是一种可能的解决方法)
因此,作为一种解决方法,您可以只使用一个 collection:例如说 _arts
并组织您的文件夹,例如:
_arts
dancing
music
concerts
.....
要单独列出它们,您可以使用:
文件中的 FrontMatter 变量
category: dancing
当你有一个输出时 并检查它是否有一个仅跳舞的列表。{% for project in site.arts %} {% if project.category == 'dancing' %} .... {% endif %} {% endfor %}
或者在没有输出时检查路径collection
{% for project in site.arts %} {% if project.url contains 'dancing' %} .... {% endif %} {% endfor %}
如果您的内部有成百上千个项目,这可能会减慢您的构建速度。
由于 this issue 已合并,现在可以实现了。
User configures as:
collections_dir: my_collections
Then we look in my_collections/_pizza for the pizza collection, and my_collections/_lasagna for the lasagna collection.
这个现在可以实现(我是运行 Jekyll 3.7.2,我不确定这是在哪个版本实现的)。
操作方法如下:在您的 _config.yml
中,您可以定义 collection 以及 collection 的文件夹。让我们看一下我正在处理的客户站点上的示例:
collections:
events:
output: true
work:
output: true
jobs:
output: true
cases:
output: true
permalink: /work/:name
collections_dir: pages
collections_dir: [your_folder_here]
会告诉 Jekyll 查看该文件夹 collections。我在开发中的文件夹结构如下:
pages/
...
_events/
_work/
_jobs/
_cases/
并且在编译后的站点中是这样的:
...
events/
jobs/
work/ (contains both "work" and "cases" collections)
还有一件事没有被问到,但我发现它很有用,那就是你能够将 不同的 collection 输出到同一个文件夹中 .就我而言,我有一个客户网站,上面有两种类型的工作样本:客户案例和一般示例。我们想将它们分开以便更好地维护,但也将它们显示在同一文件夹中。为此,您可以简单地为 collection 定义一个永久链接。在我们的例子中,我们将案例的永久链接放在 work
文件夹中 (permalink: /work/:name
).
希望对您有所帮助!
这也存在于 Jekyll documentation