Как сделать массив в 3 столбца в жидкости по статусу - PullRequest
0 голосов
/ 18 февраля 2019

Я хочу выстроить свою коллекцию в 3 столбца, для 3 разных статусов.И если там нет ни одного концерта / элемента с таким статусом, он должен сказать «Нет проектов»

Я пробовал это:

<div class="col-sm">
    <h2>Up next</h2>
    {% assign next = site.gigs | gig.status == 'Next' | sort: gig.date %}
    {% if next.gigs.size == 0 %}
      No projects
    {% else %}
      {% for gig in next %}
        {{ gig.title }}
      {% endfor %}
    {% endif %}
</div>
<div class="col-sm">
    <h2>Working on</h2>
    {% assign on = site.gigs | gig.status == 'On' | sort: gig.date %}
    {% if on.gigs.size == 0 %}
      No projects
    {% else %}
      {% for gig in on %}
        {{ gig.title }}
      {% endfor %}
    {% endif %}
</div>
<div class="col-sm">
    <h2>Done</h2>
    {% assign done = site.gigs | gig.status == 'Done' | sort: gig.date %}
    {% if done.gigs.size == 0 %}
      No projects
    {% else %}
      {% for gig in done %}
        {{ gig.title }}
      {% endfor %}
    {% endif %}
</div>

Но он просто объединяет все концерты/ items: (

Может быть, это можно сделать более простым способом. Я не знаю, можно ли сделать один компактный ликвидный код и массив из 3 столбцов путем подсчета количества различных состояний.

Помощь!

1 Ответ

0 голосов
/ 19 февраля 2019

Заказ

Нашими статусами являются «Далее», «Вкл» и «Готово».Они должны быть заказаны в таком порядке.Поскольку это не алфавитный порядок сортировки, нам нужно определить этот порядок самим.

In _config.yml :

status-order:
  -
   name: "Next"        ### status as it is set on gigs (!!! Case-Sensitive !!!)
   display: "Up Next"  ### status column header to display
  -
   name: "On"
   display: "Working On"
  -
   name: "Done"
   display: "Done"

Теперь мы можем перебрать site.status-order и получите наши концерты в нужном порядке статуса.

{% for status in site.status-order %}
  {{ status.name }} - {{ status.display }}
{% endfor %}

Представление

Поскольку ваш текущий код немного повторяется, мы можем разложить его так:

{% for status in site.status-order %}
  {% assign items = site.gigs | where: 'status', status.name | sort: date %}
  <div class="col-sm">
    <h2>{{ status.display }} ({{ items.size }})</h2>
    {% if items.size > 0 %}
      <ul>
      {% for item in items %}
        <li><a href="{{ site.baseurl }}{{ item.url }}">{{ item.title }}</a></li>
      {% endfor %}
      </ul>
    {% else %}
      No project
    {% endif %}
</div>
{% endfor %}

Примечание

Вы должны обязательно установить статус в правильном регистре (например: «Далее», а не «далее»).

И правильный тип.Если вы установите status: On, то это будет логическое значение true, а не string «on».В этом случае правильное выражение статуса - status: "On".Он должен быть заключен в кавычки или двойные кавычки, чтобы понимать их как строку «Вкл».

Любой элемент с неправильно набранным или набранным выражением статуса не будет отображаться в нашем списке.

...