Выполнение цикла for с использованием eco с использованием приращения и метаданных

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

Категория определяется в каждом документе уценки в метаинформации сверху. Например category:"tutorials"

Итак, у меня есть это:

<% for docu in @getFilesAtPath("document-repository").toJSON(): %>
<li><h2><%=cat=docu.category%></h2></li>
   <%for docu in @getFilesAtPath("document-repository",category:cat}).toJSON():%>
       <li><a href="#<%=docu.url%>"><%=docu.title%></a></li>
   <%end%>
<% end %>

Но, конечно, это плохо, так как зацикливается столько раз, сколько документов у меня есть. У меня есть только одна категория, и я хочу, чтобы она повторялась только один раз, когда печатается список ссылок.

С jekyll это было сделано так (часть _includes nav.html из https://github.com/devo-ps/carte):

{% for category in site.categories %}
  <li><h2>{{ category | first }}</h2>
    <ul>
    {% for posts in category %}
      {% for post in posts %}        
        <li class='{{ post.type }}'><a href='#{{ post.url }}'>{{ post.title }}</a></li>
      {% endfor %}
    {% endfor %}
    </ul>
  </li>
{% endfor %}

Каким-то образом он знает, сколько существует категорий. Я не знаю, как портировать его на docpad


person Lukasz Gornicki    schedule 31.03.2014    source источник


Ответы (1)


Я думаю, что лучший вопрос - это когда после вопроса вы найдете ответ :) Итак, я нашел «обходной путь», по крайней мере, я думаю, что это обходной путь, а не решение. Для меня идеально:

  1. Я добавил «категории» в файл docpad.coffee.

        templateData:
                site:
                categories: ['Tutorials','General']
    

    Теперь я всегда буду обновлять этот массив категориями, которые следует использовать в метаинформации каждого документа уценки.

  2. Моя петля теперь выглядит так....и работает!!!

     <% for category in @site.categories : %>
        <li><h2><%- category  %></h2>
        <ul>
        <%for docu in @getFilesAtPath("document-repository",[{filename: -1}]).findAll({category:category}).toJSON():%>
                <li><a href="#<%=docu.url%>"><%=docu.title%></a></li>
        <% end %>
        </ul>
        </li>
    <% end %>
    
person Lukasz Gornicki    schedule 01.04.2014