2017-06-05 1 views
2

Ich arbeite an jekyll Thema Design und ich habe .yml Datei die Daten gespeichert (Dateiname: games.yml) und verfügt über Daten wie folgtJekyll Front Ausgangszählrate egal

--- 
- name: NFS 
    year: 2015 
    id: NFS15 
    link: http://www.ecample.com/ 
    date: August 3-4, 2017 
    categories: Racing 

etc 

ich ausgeben versuchen die Kategorien in der Seitenleiste mit Anzahl der Anzahl in jeder Kategorie. Beispiel:

Racing (3) 
Shooter (6) 
Sports (5) 
etc 

Wie kann ich das erreichen?

Code Meine HTML-Ausgabe:

 <a href="javascript:;" class="categories-list-item" cate="All"> 
     All<span class="my-badge"> {{site.data.games | size}}</span> 
     </a> 
     {% for cat in site.data.games %} 
     <a href="javascript:;" class="categories-list-item" cate="{{ cat.categories}}"> 
      {{ cat.categories }} <span class="my-badge">{{ cat.categories | size }}</span> 
     </a> 
     {% endfor %} 

Jetzt bekomme ich das Ergebnis mit zB ganze Kategorieliste:

Racing 
Racing 
Racing 
Shooter 
Shooter 
Shooter... 

und so weiter jede

Antwort

1

Sie diese einfach mit dem group_by_exp nativen Filter aus Jekyll erreichen kann:

{% assign games = site.data.games | group_by_exp: "game", "game.categories" %} 
{% for category in games %} 
    <a href="javascript:;" class="categories-list-item" cate="{{ category.name }}"> 
    {{ category.name }} <span class="my-badge">{{ category.size }}</span> 
    </a> 
{% endfor %} 
+0

Ok lassen Sie mich diese Lösung versuchen Sie @ashmaroli –

+0

Vielen habe ich diesen Code versucht, aber es gibt immer noch die mehrere Doppel zB: Shooter (4), Shooter (4), Shooter (4), Shooter (4), Racing (3), Racing (3), Racing (3), und so weiter –

+1

Das sollte nicht passieren 'Spiele' Array von diesem Code wird keine Duplikate haben. Stellen Sie sicher, dass Sie 'for' auf dem' games' Array anstelle des 'site.data.games' Arrays aufrufen. Können Sie Ihren aktuellen Code auf die obige Frage stellen? Vielen Dank. – ashmaroli

1

mit den Kategorien zählen Erstellen Sie ein Array von Machen Sie dann eine For-Schleife mit allen Elementen, um nur zu zählen, wie oft die aktuelle Elementkategorie in jedem Element angezeigt wird, speichern Sie diese Information in einem Zähler und zeigen Sie sie am Ende an:

{% assign cats = ''|split:"" %} 
{% for game in site.data.games %} 
{% unless cats contains game.categories %} 
{% assign cats = cats | push: game.categories %} 
{% endunless %} 
{% endfor %} 

{% for cat in cats %} 
{% assign counter = 0 %} 
{% for item in site.data.games %} 
{% if cat == item.categories %} 
{% assign counter = counter | plus: 1%} 
{%endif%} 
{% endfor %} 

<a href="javascript:;" class="categories-list-item" cate="{{ cat }}"> 
    {{ cat }} <span class="my-badge">{{ counter }}</span> 
</a> 
{% endfor %} 

oder Gruppe sie durch Spielkategorien mit group_by:

{% assign games = site.data.games | group_by:"categories" %} 
{% for game in games %} 
<a href="javascript:;" class="categories-list-item" cate="{{ cat.categories}}"> 
    {{ game.name }} <span class="my-badge">{{ game.size }}</span> 
</a> 
{% endfor %} 

Erste Version in früheren Versionen von Jekyll arbeiten, die nicht group_by haben.