Показывать страницы в одной папке в Jekyll?

Я думаю, что собственный способ управления страницами Jekyll, то есть создание файла / папки .md в корневой папке, немного запутан.

Таким образом, я хочу поместить каждую страницу, которую хочу показать, в папку с именем «страницы». Кроме того, я бы хотел, чтобы эти страницы имели каскадную структуру: скажем, если моя папка имеет структуру:

pages
 |-> parent1
      |-> index.html
      |-> son1.html
      |-> son2.html
 |-> parent2
      |-> index.html

Затем на странице списка страниц должно быть что-то вроде этого:

page listing
 * parent1
   * son1
   * son2
 * parent2

Кроме того, другие файлы *.html, которые не находятся в папке pages, не должны отображаться на этой странице со списком страниц.

Как мне это сделать?

Большое спасибо.


person songyy    schedule 22.06.2013    source источник


Ответы (1)


Вам ничто не мешает это сделать. В приведенном выше сценарии yourdomain.tld/pages/prent1/son1.html будет URL-адресом файла parent1/son1.

Однако создать вложенный список будет сложнее. Вы можете либо подчеркнуть эту структуру в YAML Front Matter, либо использовать посты.

pages
 |-> parent1
    |-> _posts/
      |-> index.html
      |-> son1.html
      |-> son2.html
 |-> parent2
    |->_posts
      |-> index.html

=> Таким образом, ваши файлы будут сообщениями в категориях parent1 и parent2, и вы сможете создать список, отображая категории и их содержимое.

Если вы действительно хотите отобразить древовидную структуру без использования постов и категорий, то вам потребуется больше черной магии. Но, к счастью, Liquid предлагает фильтр split, который вы можете использовать для разделения пути сайта на куски, например.

{% for page in site.pages %}            
    {{ page.url | split:'/' | join:'+'}}
{% endfor %}

Вместо того, чтобы присоединяться к ним (это чисто для демонстрации), вы хотите заполнить массив, который содержит древовидную структуру, а затем выполнить итерацию по этому массиву, чтобы отобразить дерево каталогов. Это возможно, но непросто. И я не думаю, что есть что-то легкодоступное.

Вероятно, написать плагин проще.

person Polygnome    schedule 22.06.2013