首页 > 解决方案 > 液体过滤器是否与项目相同?

问题描述

我是 Jekyll 和 Liquid 的新手,我一直在尝试使用一个有 100 多个页面的网站,分为 15 个模块。我需要导航仅反映到相关页面,但我坚持如何有效地做到这一点。例如,像这样的目录:

animal-species/
├── _docs/
│   ├── mammals/
│   │  ├── mam-page01.md
│   │  └── mam-page02.md
│   ├── reptiles/
│   │  ├── rep-page01.md
│   │  └── rep-page02.md

在页面中设置:

title: Mammals Overview
module: mammals
---

文档.yml:

- module: mammals
    title: Section Title
    docs:
     - mam-page01
     - mam-page02
- module: reptiles
    title: Section Title
    docs:
     - rep-page01
     - rep-page02

在我的 nav.html 文件中,我尝试过排序有{% for section in site.data.docs | where page.module == page.module %}page.module == section.module没有运气。我还尝试使用 3.7.0 和 创建嵌套集合collections_dir:,但也失败了。每个页面在所有导航中都可供彼此使用:

网站导航 在此处输入图像描述

如何将导航设置为仅显示相同模块的页面?我有 15 个模块,并且具有某种全局排序,而无需为所有子目录编写代码。

感谢您的帮助/耐心!我对此非常满意。

标签: sortingjekyllliquid

解决方案


我绕过了集合目录并进行了_config.yml重组,但通过分配输出添加了其他变量:

{% assign docs = site.data.docs[page.module] | map: 'docs' | join: ',' | split: ',' %}

{% for document in docs %}
  {% assign dir = page.module | prepend: "/" | append: "/" %}
  {% assign document_url = document | prepend: {{dir}} | append:"/" %}
  {% if document_url == page.url %}

“上一个”/“下一个”按钮只会链接到具有相同模块的项目。一个简单的解决方案,让我永远神往。


推荐阅读