2015-05-29 2 views
1

Я хотел бы показать меню, которое отображает только отдельные категории.Показать меню с различными категориями, используя Jekyll

Представьте себе, чтобы иметь следующую структуру:

_folder1

  1. com1.html
  2. com2.html
  3. com3.html

Теперь, позвольте мне сосредоточиться только три файла.

Для каждого файла, содержащегося в _folder1 у вас есть следующий YAML ВЕЩЕСТВА

Название: 1file
типа: у
проекта: 1

НАЗВАНИЕ: 2File
типа: у
проекта : 1

НАЗВАНИЕ: 3File
Тип: у
проекта: 2

Теперь я хотел бы показать следующий список:

Проекты

и я дону 't хотите иметь двойной 1.

Что такое b чтобы достичь этого в Джекилле?

ответ

1

Возможно, но вам нужно очень уродливых манипуляций с манипуляциями строк для его достижения.

Насколько я знаю, в Liquid нет подходящего способа для создания массивов.
Таким образом, 90% следующего решения состоит из злоупотребления строками для создания массивов.

<!-- Step 1: create an array with all projects (with duplicates) --> 

{% for page in site.pages %} 
    {% if page.project %} 
     {% capture tmp %}{{ tmp }}#{{ page.project }}{% endcapture %} 
    {% endif %} 
{% endfor %} 

{% assign allprojects = tmp | remove_first: '#' | split: '#' | sort %} 


<!-- Step 2: create an array of unique projects (without duplicates) --> 

{% for project in allprojects %} 
    {% unless tmp2 contains project %} 
     {% capture tmp2 %}{{ tmp2 }}#{{ project | strip }}{% endcapture %} 
    {% endunless %} 
{% endfor %} 

{% assign uniqueprojects = tmp2 | remove_first: '#' | split: '#' | sort %} 


<!-- Step 3: display unique projects --> 

<h1>Projects:</h1> 
<ul> 
{% for project in uniqueprojects %} 
    <li>{{project}}</li> 
{% endfor %} 
</ul> 

В конце концов, шаг 3 будет генерировать следующий HTML ... точно в соответствии с просьбой:

<h1>Projects:</h1> 
<ul> 
    <li>1</li> 
    <li>2</li> 
</ul> 
Смежные вопросы