【问题标题】:In Jekyll, can we group multiple collections inside the same folder?在 Jekyll 中,我们可以将多个集合分组到同一个文件夹中吗?
【发布时间】:2016-04-25 21:35:18
【问题描述】:

在 config.yml 中,我这样定义我的集合:

collections:
  music:
    output: false
  dancing:
    output: false

问题是我会有很多收藏,它们会弄乱我的 Jekyll 根文件夹。

有没有办法将所有集合分组到一个文件夹中,例如命名为 _collections?

所以,我会:

_collections
     _dancing
     _music
     ....

【问题讨论】:

  • 嘿丹尼,你会考虑接受一个答案吗? Jussi's one 对我很有启发

标签: collections jekyll


【解决方案1】:

这现在是可能的(我正在运行 Jekyll 3.7.2,我不确定这是在哪个版本中实现的)。

操作方法如下:在您的_config.yml 中,您可以定义您的收藏以及收藏的文件夹。让我们看一个我正在开发的客户网站上的示例:

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 查看该文件夹中的收藏。我在开发中的文件夹结构如下:

pages/
  ...
  _events/
  _work/
  _jobs/
  _cases/

在编译后的站点中如下:

...
events/
jobs/
work/ (contains both "work" and "cases" collections)

还有一件事没有被问到,但我发现它很有用,那就是您能够将不同的集合输出到同一个文件夹中。就我而言,我有一个客户网站,上面有两种类型的工作样本:客户案例和一般示例。我们想将它们分开以便更好地维护,但也将它们显示在同一个文件夹中。为此,您可以简单地为该集合定义一个永久链接。在我们的案例中,我们将永久链接放置在 work 文件夹 (permalink: /work/:name) 中。

希望这会有所帮助!

这也出现在Jekyll documentation

【讨论】:

    【解决方案2】:

    由于this issue 已合并,现在可以实现。

    用户配置为:

    collections_dir: my_collections
    

    然后我们在 my_collections/_pizza 中查找披萨系列,在 my_collections/_lasagna 中查找千层面系列。

    【讨论】:

    • 更正:这将在 3.7.0 版本中实现。 '收集你的收藏3.7.0 你可以选择指定一个目录来存储你所有的收藏在同一个地方与 collections_dir: my_collections 然后 Jekyll 将在 my_collections/_books 中查找书籍集合,并在 my_collections/_recipes 中查找食谱集合。或访问:jekyllrb.com/docs/collections
    • 这是否会影响两个“默认”集合,即_pages 和_posts?
    • @iBug 是的。来自文档:“确保将草稿和帖子移动到自定义集合目录中。如果您指定一个目录以将所有集合存储在与 collections_dir: my_collections 相同的位置,那么您将需要移动您的 _drafts 和 _posts my_collections/_drafts 和 my_collections/_posts 的目录。"
    【解决方案3】:

    没有什么可以阻止您使用收藏中的子文件夹。 (注意:这不是您问题的答案,而是一种可能的解决方法)

    因此,作为一种解决方法,您可以只拥有一个集合:例如 _arts 并组织您的文件夹,例如:

    _arts
         dancing
         music
         concerts
         .....
    

    要单独列出它们,您可以使用:

    1. 文件中的 FrontMatter 变量category: dancing当您有输出时并检查此变量是否仅用于跳舞列表。

      {% for project in site.arts %}
      {% if project.category == 'dancing' %}
      ....
      {% endif %}
      {% endfor %}
      
    2. 或者当你有没有输出集合时检查路径

      {% for project in site.arts %}
      {% if project.url contains 'dancing' %}
      ....
      {% endif %}
      {% endfor %}
      

    如果里面有成百上千的项目,这可能会减慢您的构建速度。

    【讨论】:

      【解决方案4】:

      答案是否定的。您的收藏文件夹必须位于根文件夹的根目录下。

      即使你命名你在 _collections/_music 文件夹中创建一个收藏,并像这样设置它:

      collections:
      
        collections/_music folder:
          output: true
      

      由于路径清理过程,Jekyll 最终会在 _collections_music folder(没有任何斜线)中寻找您的收藏。

      查看collection.rb、site.rb和jekyll.rb中的jekyll代码

      【讨论】:

        猜你喜欢
        • 2016-09-21
        • 2011-07-02
        • 2012-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-05
        • 1970-01-01
        相关资源
        最近更新 更多