2017-08-28 1 views
1

Ich habe einen Ordner mit Bildern, die ich auf einer Seite rendern möchte. Ich möchte, dass diese Bilder auf eine bestimmte Weise sortiert/gefiltert werden. Um das zu tun, verstehe ich, dass die Bilder zuerst in einem Array zusammen sein müssen.Wie erstelle ich ein Array aus einer Forloop?

I daher mit einem leeren Array starten:

{% assign my_array = "" %} 

I dann die Schleife durch den Bildordner, und versuchen, verschiedene Arten der jedes Bild inmy_array schieben. Beispiel:

{% for image in site.static_files %} 
    {% if image.path contains "assets/images/target-folder" %} 
    <!-- Push image into array --> 
    {{ my_array | push: image }} 
    {% endif %} 
{% endfor %} 

Idealerweise kann ich dann diesen Array verwenden, wie beabsichtigt:

{% for image in my_array | sort:"date" | reverse %} 
    <!-- show image --> 
{% endfor %} 

Ich bin mir bewusst, dass ich eine Datendatei mit den Bildern machen könnte, aber ich würde gerne vermeiden benötigen um diesen zusätzlichen Schritt zu machen. Danke fürs Lesen.

Antwort

5

Sie sind fast da, die Art und Weise, wie Sie das Array erstellen, ist es die einzige Sache zu beheben.

Diese {% assign my_array = "" %} erstellt eine leere Zeichenfolge. Eine einfache Möglichkeit, ein Array in Liquid zu schaffen, ist zu spalten die oben:

{% assign my_array = "" | split: ',' %} 

Jetzt Sie Elemente in das Array innerhalb einer for-Schleife in der folgenden Art und Weise drücken können:

{% for image in site.static_files %} 
    {% if image.path contains "assets/images/target-folder" %} 
    <!-- Push image into array --> 
    {% assign my_array = my_array | push: image %} 
    {% endif %} 
{% endfor %} 
+1

großen Werke, danke . Ich habe Ihre Korrektur verwendet, um dieses Array später zu sortieren und dann durchzuschleifen. Wie folgt: '{% assign sorted_my_array = my_array | umgekehrtes%} '. – dwhite

Verwandte Themen