Varianten: Reihenfolge der Optionen im Pulldownmenü

Hallo, wir haben im Shop technische Artikel welche es immer z.B. in vielen verschienden Durchmessern gibt. Bei Auswahl der Varianten im Konfigurator habe ich alle per Drag&Drop in Reihenfolge gebracht, Varianten erstellt, gespeichert und es hat geklappt. Am nächsten Tag den Shop wieder aufgerufen und alle sind wieder durcheinander (s. Bild) Wie werde ich hier Herr der Lage. Würde das gerne jetzt Anpassen bevor ich später hunderte Artikel wieder ändern muss. Danke Gruß Lars

Hi Lars, ich habe Versucht das Verhalten nach zustellen, kann dies jedoch nicht nachvollziehen. Momentan gibt es Backend seitig keine Sortierung (ist aber bereits in Planung). Du könntest die Varianten neu generieren und überschreiben auswählen, dann würden diese wieder korrekt im Frontend angezeigt. Es sollte eigentlich nicht der Fall sein, dass sich diese dann wieder verschieben. Schau auch einmal nach ob du die aktuellste Shopware Version installiert hast. Gruß Dennis

Hallo! Ich kämpfe auch mit dem Problem, das teilweise die Variaten durcheinander geworfen werden. Ich korrigiere diese durch einen CSV export, dann die ordernummern richtig einstellen und artikel neu importieren. Freue mich sehr wenn eine Sortierungsmöglichkeit fuer das Backend kommt!

Habe bereits mehrmals die Varianten neu generiert - am nächsten Arbeitstag sind sie wieder durcheinander. Ich prüfe mal die Version - eine Sortierung wäre schon sinnvoll.

Hallo Dennis, habe die Version 4.0.5 installiert - die neueste habe ich geladen. Wie gehe ich am besten vor um den kompletten Datenbestand in die neue Installation zu bekommen ? Danke Gruß Lars

Sorry, hat sich erledigt - hatte die Updates nicht gesehen…:oops:

So, das Update auf die 4.0.6 ist drauf - leider immer noch das selbe Problem. Konnte das Problem aber etwas eingrenzen. - Wenn ich einen Artikel mit Optionen “Innendurchmesser” anlege/ändere und abspeichere ist er soweit von der Reihenfolge ok. - Ändere ich nun danch einen anderen Artikel mit “Innendurchmesser” so ist der vorherige wieder durcheinander. Gruß Lars

In Tabelle: “s_article_configurator_options” die Positionsnummer eintragen und dein Problem ist gelöst.

[quote=“astextildruck”]In Tabelle: “s_article_configurator_options” die Positionsnummer eintragen und dein Problem ist gelöst.[/quote] Danke für den Tipp - sieht schonmal gut aus. Frage: Wenn ich mir nun die Mühe mache und alle in Reihenfolge bringe - was passiert beim nächsten Anlegen eines Artikels? Nach einem kurzen Test werden die Nummern anscheinend dann wieder überschrieben!?

Wir werden dem vorbeugen und eine Liste mit sämtlichen Optionen anlegen. Bei uns werden die Farben alphabetisch sowie die Größen manuell sortiert (S, M, L, XL, …) was wir über die „Position“ abdecken können. Kommen neue Artikel bzw. neue Optionen dazu, werden wir diese erst in der Liste ergänzen (Duplikate entfernen), neu sortieren und anschließend importieren. Erst danach werden neue Artikel angelegt bzw. importiert. Ohne Gewähr- wir operieren damit auch erst seit heute an unserer Testumgebung rum- scheint aber so zu funktionieren.

1 Like

:thumbup: Danke - bin auch noch im Aufbau, das wird vorerst für mich funktionieren bis eine Sortierung integriert worden ist. Gruß Lars

Viel Erfolg dabei! Für einen Austausch bei neuen Erkenntnissen bin ich offen.

Hy, ich habe mal das Smarty etwas erweitert um diese Funktion des sortierens ins Smarty verwenden zu können. Dazu erstellt ihr eine Datei Names : modifier.sortby.php im Ordner : /engine/Library/Smarty/plugins/ Mit dem Datei-Inhalt: [code]<?php #

sorts an array of named arrays by the supplied fields

For Shopware 4 from : sven-goessling.de

function array_sort_by_fields(&$data, $sortby){
static $sort_funcs = array();

if (empty($sort_funcs[$sortby]))
{
    $code = "\$c=0;";
    foreach (split(',', $sortby) as $key)
    {
       $d = '1';
          if (substr($key, 0, 1) == '-')
          {
             $d = '-1';
             $key = substr($key, 1);
          }
          if (substr($key, 0, 1) == '#')
          {
             $key = substr($key, 1);
           $code .= "if ( ( \$c = (\$a['$key'] - \$b['$key'])) != 0 ) return $d * \$c;\n";
          }
          else
          {
          // $code .= "if ( (\$c = strcasecmp(\$a['$key'],\$b['$key'])) != 0 ) return $d * \$c;\n";
		   $code .= "if ( \$a['$key'] > \$b['$key']) return $d \* 1;\n"; $code .= "if ( \$a['$key'] \< \$b['$key']) return $d \* -1;\n"; } } $code .= 'return $c;'; $sort\_func = $sort\_funcs[$sortby] = create\_function('$a, $b', $code); } else { $sort\_func = $sort\_funcs[$sortby]; } uasort($data, $sort\_func); } # # Modifier: sortby - allows arrays of named arrays to be sorted by a given field # function smarty\_modifier\_sortby($arrData,$sortfields) { array\_sort\_by\_fields($arrData,$sortfields); return $arrData; } //$smarty-\>register\_modifier( "sortby", "smarty\_modifier\_sortby" ); ?\>[/code] Nun könnt ihr in Smarty mit sortby arbeiten. Ich habe dies mal Anhand der Varianten-Auswahl eingebaut. Datei : [code]/templates/\_default/frontend/detail/config\_step.tpl[/code] Hier sucht ihr die Zeile: [code]{foreach from=$sConfigurator.values item=configValue name=option key=optionID}[/code] und ändert diese in : [code]{foreach from=$sConfigurator.values|@sortby:"#optionname" item=configValue name=option key=optionID}[/code] Und schon werden die Varianten alphabetisch geordnet. Viel Spass damit!

@kadis: Danke fuer den Code. Ich hab ihn wie angegeben eingetragen, aber es scheint bei mri nicht zu funktionieren. DIe Varianten sind immer noch in einer falschen Reihenfolge. Ich habe anschliessend noch den Smarty-Template-Cache geloescht. mUss ich sonst noch etwas beachten?

[quote=“kadis”]Hy, ich habe mal das Smarty etwas erweitert um diese Funktion des sortierens ins Smarty verwenden zu können. Dazu erstellt ihr eine Datei Names : modifier.sortby.php im Ordner : /engine/Library/Smarty/plugins/ Mit dem Datei-Inhalt: [code]<?php #

sorts an array of named arrays by the supplied fields

For Shopware 4 from : sven-goessling.de

function array_sort_by_fields(&$data, $sortby){
static $sort_funcs = array();

if (empty($sort_funcs[$sortby]))
{
    $code = "\$c=0;";
    foreach (split(',', $sortby) as $key)
    {
       $d = '1';
          if (substr($key, 0, 1) == '-')
          {
             $d = '-1';
             $key = substr($key, 1);
          }
          if (substr($key, 0, 1) == '#')
          {
             $key = substr($key, 1);
           $code .= "if ( ( \$c = (\$a['$key'] - \$b['$key'])) != 0 ) return $d * \$c;\n";
          }
          else
          {
          // $code .= "if ( (\$c = strcasecmp(\$a['$key'],\$b['$key'])) != 0 ) return $d * \$c;\n";
		   $code .= "if ( \$a['$key'] > \$b['$key']) return $d \* 1;\n"; $code .= "if ( \$a['$key'] \< \$b['$key']) return $d \* -1;\n"; } } $code .= 'return $c;'; $sort\_func = $sort\_funcs[$sortby] = create\_function('$a, $b', $code); } else { $sort\_func = $sort\_funcs[$sortby]; } uasort($data, $sort\_func); } # # Modifier: sortby - allows arrays of named arrays to be sorted by a given field # function smarty\_modifier\_sortby($arrData,$sortfields) { array\_sort\_by\_fields($arrData,$sortfields); return $arrData; } //$smarty-\>register\_modifier( "sortby", "smarty\_modifier\_sortby" ); ?\>[/code] Nun könnt ihr in Smarty mit sortby arbeiten. Ich habe dies mal Anhand der Varianten-Auswahl eingebaut. Datei : [code]/templates/\_default/frontend/detail/config\_step.tpl[/code] Hier sucht ihr die Zeile: [code]{foreach from=$sConfigurator.values item=configValue name=option key=optionID}[/code] und ändert diese in : [code]{foreach from=$sConfigurator.values|@sortby:"#optionname" item=configValue name=option key=optionID}[/code] Und schon werden die Varianten alphabetisch geordnet. Viel Spass damit![/quote] Wie kann man denn die Varianten nach Preis sortieren? :) Danke!

[quote=“exx”] Wie kann man denn die Varianten nach Preis sortieren? :slight_smile: Danke![/quote] Leider gar nicht, das ist verbuggt, siehe Thread => administration-f55/varianten-loschen-sortieren-fehlerhaft-t18741.html. Leider sagt Shopware nicht, ob und wann das jemals gelöst werden wird.

1 Like

Leider steht auf der Website etwas anderes als hier im Forum: http://sven-goessling.de/12/04/2013/sho … -12-04-13/ |@sortby:"optionname" |@sortby:"#optionname" Welche Variante ist denn nun die Richtige? :slight_smile: Danke und LG!