You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Jekyll的Liquid获取文件夹的向上完整家族树?

在Jekyll Liquid中获取文件夹的完整家族树

要实现获取目标文件夹的所有父级及祖先层级,我们可以通过Liquid的循环和层级迭代来完成,具体步骤如下:

1. 基础准备

假设你的Folders collection中,每个文件夹文档都有:

  • name字段:存储文件夹的名称(与children数组中的元素对应)
  • children字段:字符串数组,包含子文件夹的名称

目标文件夹名称我们用变量target_folder_name来定义,比如示例中的"Domestic Cats"。

2. 实现代码

{% assign target_folder_name = "Domestic Cats" %}
{% assign ancestors = "" | split: "" %}
{% assign current_level_parents = site.folders | where_exp: "folder", "folder.children contains target_folder_name" %}

<!-- 先收集直接父级 -->
{% for parent in current_level_parents %}
  {% assign ancestors = ancestors | push: parent %}
{% endfor %}

<!-- 迭代收集所有祖先层级 -->
{% assign current_level = current_level_parents %}
{% while current_level.size > 0 %}
  {% assign next_level = "" | split: "" %}
  {% for folder in current_level %}
    <!-- 找到当前文件夹的父级 -->
    {% assign grand_parents = site.folders | where_exp: "f", "f.children contains folder.name" %}
    {% for gp in grand_parents %}
      <!-- 去重,避免重复添加同一祖先 -->
      {% unless ancestors contains gp %}
        {% assign ancestors = ancestors | push: gp %}
        {% assign next_level = next_level | push: gp %}
      {% endunless %}
    {% endfor %}
  {% endfor %}
  {% assign current_level = next_level %}
{% endwhile %}

<!-- 输出结果 -->
{% if ancestors.size > 0 %}
  <h4>目标文件夹 "{{ target_folder_name }}" 的家族树:</h4>
  <ul>
    {% for ancestor in ancestors %}
      <li>{{ ancestor.name }}</li>
    {% endfor %}
  </ul>
{% else %}
  <p>未找到 "{{ target_folder_name }}" 的任何父级文件夹。</p>
{% endif %}

3. 代码说明

  • 初始化变量:ancestors用于存储所有找到的祖先文件夹,current_level_parents先筛选出目标文件夹的直接父级。
  • 直接父级收集:将所有直接父级加入ancestors数组。
  • 迭代查找祖先:通过while循环逐层向上查找,每次处理当前层级的文件夹,找到它们的父级,去重后加入ancestors,并更新下一层级的处理列表,直到没有更多父级为止。
  • 结果输出:遍历ancestors数组,展示所有父级及祖先文件夹的名称。

注意事项

  • 如果你的文件夹名称使用的是文档的slug而非name字段,只需将代码中的folder.name替换为folder.slug即可。
  • 确保site.folders能正确获取到你的collection数据(Jekyll中collection的访问方式为site.[collection_name],如果你的collection配置中output: true,则可以正常访问)。

内容的提问来源于stack exchange,提问作者alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 00:50:06