Жидкостный фильтрующий массив над свойством страницы - PullRequest
1 голос
/ 07 апреля 2019

У меня есть сайт Jekyll с двумя страницами (page1.html и page2.html), они обе используют один и тот же макет.Этот макет печатает некоторую информацию о некоторых других страницах в данном подкаталоге.Например,

  • / _ layouts / test.html
{% for p in site.pages %}
    {{ p.title }}
{% endfor %}
  • / page1.html
---
layout: test
---
this page lists the title of my books...

Это будетнапечатайте заголовок каждой страницы на моем сайте, но я хочу, чтобы он печатал только заголовок страниц в подкаталоге /books, поэтому я бы изменил макет страницы на

{% for p in site.pages | where: 'dir','/books/' %}
    {{ p.title }}
{% endfor %}

Это работает нормально, ноЯ хотел бы, чтобы другая страница использовала тот же макет и перечисляла содержимое моих комиксов (которые находятся внутри папки /comics) вместо моих книг, поэтому я бы изменила структуру своего сайта следующим образом:

  • / _ layouts / test.html
{% for p in site.pages | where: 'dir','/{{ page.directory_to_scan }}/' %}
    {{ p.title }}
{% endfor %}
  • / page1.html
---
layout: test
directory_to_scan: books
---
this page lists the title of my books...
  • / page2.html
---
layout: test
directory_to_scan: comics
---
this page lists the title of my comics...

Однако это не работает и заголовок не печатается вообще.

Ответы [ 2 ]

1 голос
/ 07 апреля 2019

Нельзя смешивать теги и фильтры (кроме assign).Более того, нет необходимости заключать переменные в filter в двойных скобках:

---
directory_to_scan: '/comics/'
---

И макет будет использовать:

{% assign my_pages = site.pages | where: 'dir', page.directory_to_scan %}
{% for p in my_pages %}
  {{ p.title }}
{% endfor %}
0 голосов
/ 13 апреля 2019

Итак, я в конечном итоге решил собрать строку перед циклом, используя фильтр append.

{% assign d = '/' | append: page.directory_to_scan | append: '/' %}
{% for p in site.pages | where: 'dir',d %}
    {{ p.title }}
{% endfor %}
...