Извършване на цикъл с използване на 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="/bg#<%=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='/bg#{{ 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="/bg#<%=docu.url%>"><%=docu.title%></a></li>
        <% end %>
        </ul>
        </li>
    <% end %>
    
person Lukasz Gornicki    schedule 01.04.2014