2016-03-29 1 views
0

Ich habe den folgenden Code in meiner Vorlage:Zugriff auf ein Array mit einer Variablen in Jekyll/Flüssig Templating

{% for post in site.posts %} 
    {% capture num_colors %}{{ site.colors | size }}{% endcapture %} 
    {% capture color_index %}{{ forloop.index0 | mod: num_colors }}{% endcapture %} 

    <a href="{{ post.url }}" class="post-box" rel="bookmark" title="{{ post.title }}"> 
     <div class="post-block {{ site.colors[color_index] }}"> 
     <div class="contents"> 
      <div class="cat-tag"> 
      {{ post.categories[0] | upcase }} 
      </div> 

      <h2>{{ post.title }}</h2> 
     </div> 
     </div> 
    </a> 
    {% endfor %} 

Das hat nichts hält Rückkehr: {{ site.colors[color_index] }} obwohl num_colors, color_index und site.colors werden alle richtigen Dinge zurückkehren wenn ich versuche, sie zu drucken.

Farben in meinem _config.yml wie folgt definiert:

colors: [light_blue, coral, yellow, teal, blue, deep_blue]

Ich bin ein Plugin-Modul zu erhalten. Im Grunde möchte ich nur eine Klasse für jeden Beitrag anhängen, der neu beginnt, wenn er über die Gesamtzahl der Farben hinausgeht. Das scheint einfach, also bin ich verwirrt.

+0

Ich denke, es liegt daran,'erfassen' Text in einer Variablen erfasst. Das funktioniert möglicherweise nicht für den Array-Zugriff. Können Sie versuchen, für den Index "zuweisen"? Aber es ist nur eine Vermutung, ich kann es im Moment selbst nicht für eine Antwort ausprobieren. – michaPau

+0

@michaPau das hat es geschafft! füge die Antwort hinzu und ich akzeptiere es – Evan

Antwort

0

ersetzen

{% capture num_colors %}{{ site.colors | size }}{% endcapture %} 
{% capture color_index %}{{ forloop.index0 | mod: num_colors }}{% endcapture %} 

von:

{% assign num_colors = site.colors | size %} 
{% assign color_index = forloop.index0 | modulo: num_colors %} 
Verwandte Themen