2017-02-04 9 views
1

У меня есть структурированный набор страниц в коллекции, и структура выглядит следующим образом:Как получить доступ к метаданным при использовании «где» фильтр

chapter1 
    section1 
    section2 
    section3 
chapter2 
    section1 
    section2 
    section3 
chapter3 
    section1 
    section2 
    section3 

Каждая отдельная страница, которая делает его собственные Постоянная ссылка.

Скажите, что я хотел бы сделать ссылку на chapter3/section1, как бы я это сделал? Я бы хотел использовать фильтр Liquid where, но это, похоже, дает мне информацию , а не метаданные.

{% assign section_post = site.chapters | where:"url","chapter3/section1" %} 
{{ section_post }} 

Это дает мне правильную страницу, но не правильное содержание. Если бы я написал это в своем макете, я ничего не получил:

<a href="{{ section_post.permalink }}">{{ section_post.title }}</a> 

Что я делаю неправильно? Как получить метаданные с использованием фильтра где? Я получил кучу страниц, поэтому цикл через них очень неэффективен ...

ответ

1

Проблема заключается в том, что выражение where возвращает все объекты в массиве данного определенное условие.

[#<Jekyll::Document _chapters/chapter3/section1 collection=chapters>] 

В этом случае вы ожидаете, что этот список объектов просто возвращает один элемент, так что мы можем выбрать этот элемент с firstжидкого тегом (возвращает первый элемент массива).

{% assign ch3s1 = site.chapters | 
    where:"id","/chapters/chapter3/section1" | first%} 

    title: {{ch3s1.title}} 
    <br> 
    url: {{ch3s1.url}} 

будет выводить нужный раздел:

title: Chapter 3 section 1 
    url: /chapters/chapter3/section1 
+1

Отлично! Теперь мне просто нужно вернуться и реорганизовать все, что нужно для циклов! –