Neu Merkmalarray-Ausgabe mit | sort | join

  • Wenn Ihr uns das erste Mal besucht, lest euch bitte zuerst die Foren-Regeln durch.

nmueller

Sehr aktives Mitglied
5. April 2011
1.242
76
Saarland
#1
Kann mir bitte jemand einen Schlag auf den Hinterkopf geben? Ich steh gerade auf dem sprichwörtlichen Schlauch.

Code:
                        {% assign Merkmal = Vorgang.Artikel.Merkmale.AlleMerkmaleNachGruppen.AlleMerkmale.Deutsch %}
                        {% assign sortedM = (Merkmal | sort: 'MerkmalName' | join: ', ') %}
                        {% for item in sortedM  %}
                        <tr>
                            <td>{{ item.MerkmalName }}</td>
                            <td>{{ item.Wert }}</td>
                        </tr>
                        {% endfor %}
Ausgeben werden soll das Merkmalarray in nach Merkmalname sortierter Reihenfolge, Ergebnisse gruppiert per Komma. Also

Material: Baumwolle, Polyester

Ausgegeben wird alles, nur eben nicht sortiert und nicht gruppiert.

ausgabe.jpg
 

nmueller

Sehr aktives Mitglied
5. April 2011
1.242
76
Saarland
#7
ok, was nun funktioniert ist eine alphabetische Ausgabe - das ist schon mal schön.

Code:
{% assign Test = Vorgang.Artikel.Merkmale.AlleMerkmaleNachGruppen.AlleMerkmale | SelectLanguage: Sprache | Sort:'MerkmalName' %}

{% for feld in Test -%}
{% assign MName = feld.MerkmalName %}
{% assign MWert = feld.Wert %}
                    <span>{{ MName }}:</span>
                    <span>{{ MWert }} </span><br>
{% endfor -%}
ergibt brav:

Altersgruppe: Erwachsene
Ausschnitt: Rundhals
Farbe: blau
Genre: Comic
Geschlecht: Damen
Material: Polyester
Material: Baumwolle

Textilpflege: Maschinenwäsche

Nun gibt es die Möglichkeit, Ergebnisse mit uniq und group_by zusammen zu fassen, aber weder das eine, noch das andere will mir gelingen.

Uniq scheint grundsätzlich nicht zu funktionieren, denn mein Test

Code:
{% assign my_array = 'ants, bugs, bees, bugs, ants' | Split: ', ' %}
{{ my_array | Uniq | Join: ', ' }}
soll eigentlich ausgeben: "ants, bugs, bees", er gibt aber "ants, bugs, bees, bugs, ants" aus.

group_by bekomme ich leider auch nicht zum laufen:

http://v1.siteleaf.com/blog/advanced-liquid-group-by/

Code:
{% assign Test2 = Vorgang.Artikel.Merkmale.AlleMerkmaleNachGruppen.AlleMerkmale | SelectLanguage: Sprache | Group_by:'MerkmalName' | Sort:'MerkmalName' %}

{% for feld in Test2 -%}
{% assign MName = feld.MerkmalName %}
{% assign MWert = feld.Wert %}
        <span>{{ MName }}:</span>
        {% for item in MWert %}<span>{{ item }}</span>{% endfor %}
        <br>
{% endfor -%}
Da wird nix gruppiert - immer noch 2x Material untereinander und die {{ item }} Ausgabe gibt einzelne Buchstaben wider.
Ich wäre echt froh, mir würde hier jemand auf die Sprünge helfen, damit ich bei identischen Merkmalnamen die Werte gruppieren kann.. :(
 
Zuletzt bearbeitet:

McAvity

Gut bekanntes Mitglied
7. September 2016
100
12
#8
Hi,

vielleicht steh ich ja gedanklich auf dem Schlauch, aber ist "MerkmalName" in "Group_by" und "Sort" nicht doppelt?

Probier es mal so:

Code:
{% assign Test2 = Vorgang.Artikel.Merkmale.AlleMerkmaleNachGruppen.AlleMerkmale | SelectLanguage: Sprache | Group_by:'MerkmalName' | Sort:'Wert' %}
 {% for feld in Test2 -%}
 {% assign MName = feld.MerkmalName %}
 {% assign MWert = feld.Wert %}
 <span>{{ MName }}:</span>
 {% for item in MWert %}<span>{{ item }}</span>{% endfor %}
 <br>
 {% endfor -%
MfG

McAvity
 

nmueller

Sehr aktives Mitglied
5. April 2011
1.242
76
Saarland
#9
Group By sorgt dafür, das die Werte bei den selben Merkmale zusammen gefasst werden (zitat: "As the name suggests, this filter allows you to group your content by a certain property. "), sort sortiert alphabetisch.
Sort nach Wert ergibt also eine alphabetische Auflistung der Werte, nicht aber eine alphabetische Auflistung von MerkmalName mit gruppierten Werten.

Group_By:'MerkmalName' | Sort:'Wert':

Code:
Material: Baumwolle
Farbe: blau
Genre: Comic
Geschlecht: Damen
Altersgruppe: Erwachsene
Textilpflege: Maschinenwäsche
Material: Polyester
Ausschnitt: Rundhals
Group_By:'MerkmalName' | Sort:'MerkmalName':

Code:
Altersgruppe: Erwachsene
Ausschnitt: Rundhals
Farbe: blau
Genre: Comic
Geschlecht: Damen
Material: Polyester
Material: Baumwolle
Textilpflege: Maschinenwäsche
Sort greift immer brav, Group_By jedoch aus mir unerfindlichen Gründen nicht.
 

McAvity

Gut bekanntes Mitglied
7. September 2016
100
12
#10
Hallo,

nur mal so Interesse halber, kannst Du denn Inhalt der Variable Test bzw. Test2 posten?
Nicht das Du versuchst etwas zu gruppieren was "gar nicht da ist" (ist jetzt sicherlich etwas unglücklich ausgedrückt, aber schau Dir mal die Beispiele zu "Group posts by author" an. Gruppiert wird nach "author", welches aber im zurückgegebenen Array nicht enthalten ist, sortiert wird dann nach "name", was im Array enthalten ist. Mir scheint das so, dass das "group_by" direkt die Rückgabe von "Vorgang.Artikel.Merkmale.AlleMerkmaleNachGruppen.AlleMerkmale" beeinflusst, wo "MerkmalName" vielleicht (noch) nicht definiert ist bzw. kein zu Verfügung stehender Wert ist. Würde zumindest erklären warum "Sort" funktioniert, "group_by" aber nicht).

MfG

McAvity
 

Ähnliche Themen