Tutorial - Artikel Sortierung manuell festlegen

Wer in Shopware die Auflistung der Artikel einer Kategorie selbst festlegen möchte kann nach meiner Anleitung vorgehen. Vielleicht ist es für den Ein oder Anderen hilfreich, umgesetzt habe ich es in einer Shopware CE 4.0.3. Version. 1.) Ein Feld für die Sortiernummer hinzufügen Damit wir die Reihenfolge eines Artikels festlegen können benötigen wir ein Eingabefeld in welches wir die Nummer eintragen (1,2,3,4,5,…usw.). Dazu unter Einstellungen -> Grundeinstellungen -> Artikel -> Artikel-Freitextfelder mit [+ Hinzufügen] ein neues Feldanlegen. Bei Name wird attr20, bei Feldtyp Nummerfeld und bei Feldbezeichnung Sortierung angegeben. Danach [Speichern]. 2.) Standard Sortierung festlegen Unter Einstellungen -> Grundeinstellungen -> Storefront -> Kategorien / Listen im Feld Standardsortierung Listings folgendes eingeben: (aAttributes.attr20 IS NULL OR aAttributes.attr20 = ‚‘) ASC, LPAD (aAttributes.attr20,10,0) ASC Danach [Speichern]. 3.) Ausklappmenü anpassen (optional) Wer die Möglichkeit zur Auswahl einer „Standard“ Sortierung anbieten möchte muss noch das entsprechende Template abändern. Dazu die Datei /frontend/listing/listing_actions.tpl aus dem verwendeten Template Ordner öffnen. Sollte im Template Ordner keine Datei zu finden sein (bei den emotion Templates ist dies der Fall) einfach die Datei aus dem Ordner /default/… suchen und in das Template Verzeichnis welches aktiviert ist kopieren. Gegebenfalls muss auch das Unterverzeichnisse listing/ erzeugt werden. In der Datei listing_actions.tpl nach der Zeile <select name="sSort" class="auto_submit">
folgende Zeile (Option) hinzufügen:

<option value="7" eq selected>{s name='ListingSortDefault'}{/s}</option>

Im Übrigen können hier auch die einzelne Sortieroptionen gelöscht oder verändert werden.

Jetzt müssen wir noch den Textbaustein für die neue Sortieroption festlegen. Dazu unter Einstellungen -> Textbausteine im Namespaces Menü unter Namespaces/frontend/listing/listing-actions einen neuen Textbaustein einfügen, als Name ListingSortDefault und als Wert Sortierung eingeben und danach [Speichern]. Bei Bedarf müssen noch die Werte für andere Sprachen eingegeben werden.

4.) Cache leeren
Den Shopcache unter Einstellungen -> Shopcache [Alle markieren] und dann [Cache leeren] auswählen.

5.) Artikel sortieren
Nun kann man bei jedem Artikel am Ende der Stammdaten unter Zusatzfelder in der Zeile Sortierung die Nummer der Reihenfolge festlegen.

HINWEIS:
Es müssen nicht alle Artikel einer Kategorie mit Nummern versehen werden, Artikel bei denen das Feld leer gelassen wird werden unsortiert nach den sortierten Artikeln angezeigt. Somit muss man nur jene Artikel bearbeiten welche man in einer bestimmten Reihenfolge anzeigen will.
Das hilft bei Kategorien in denen sehr viele Artikel vorhanden sind, man aber nur wenige ausgesuchte Artikel sortiert am Anfang ausgeben will. Das erledigt die Eingabe unter Punkt 2.) in der Standardsortierung welche zuerst alle leeren und NULL Einträge sortiert und danach die Einträge in denen Positionsnummern vorhanden sind.

Danke - das hat mir weitergeholfen Gruß Wolfgang

Danke! Ich frage mich warum solche Sachen nicht sowieso in Tutorials seitens Shopware erklärt werden.

Danke! Super Tutorial, einfach und verständlich :thumbup: Und vor allem: Es funktioniert :slight_smile:

Leider klappt es bei mir nicht… ich bekomme folgende Fehlermeldung… :-/ SQLSTATE[42000]: Syntax error or access violation: 1582 Incorrect parameter count in the call to native function ‘LPAD’ in Zend/Db/Statement/Pdo.php on line 234 Stack trace: #0 Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array) #1 Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array) #2 Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query(’???SELECT???..’, Array) #3 Enlight/Components/Db/Adapter/Pdo/Mysql.php(75): Zend_Db_Adapter_Pdo_Abstract->query(’???SELECT???..’, Array) #4 Zend/Db/Adapter/Abstract.php(775): Enlight_Components_Db_Adapter_Pdo_Mysql->query(’???SELECT???..’, Array) #5 engine/core/class/sArticles.php(996): Zend_Db_Adapter_Abstract->fetchAssoc(’???SELECT???..’) #6 Shopware/Controllers/Frontend/Listing.php(126): sArticles->sGetArticlesByCategory(84) #7 Enlight/Controller/Action.php(135): Shopware_Controllers_Frontend_Listing->indexAction() #8 Enlight/Controller/Dispatcher/Default.php(521): Enlight_Controller_Action->dispatch(‘indexAction’) #9 Enlight/Controller/Front.php(214): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp)) #10 Shopware/Bootstrap.php(79): Enlight_Controller_Front->dispatch() #11 Enlight/Application.php(192): Shopware_Bootstrap->run() #12 shopware.php(74): Enlight_Application->run() #13 {main} Reicht eine kleine Änderung in der Sortierung? Besten Dank

Hallo, welche Shopware Version wird denn verwendet? Ist in der Zeile (aAttributes.attr20 IS NULL OR aAttributes.attr20 = ‚‘) ASC, LPAD (aAttributes.attr20,10,0) ASC alles korrekt? Ich werde mal versuchen deinen Fehler bei zu reproduzieren. Lg

Ich habe den Fehler gefunden. Bitte bei der Listung Grundeinstellungen-Storefront-Kategorien/Listen in der Standard-Sortierung das hier eingeben! Komplett ersetzen mit: CAST(aAttributes.attr20 AS SIGNED) DESC Dann sollte es auch in der 4.0.6 etc laufen. Zudem nur ein Tipp, ändert in der listing_actions.tpl die options-reihenfolge <option value="7" eq selected>{s name='ListingSortRelease'}{/s}</option><option value="2" eq selected>{s name='ListingSortRating'}{/s}</option><option value="3" eq selected>{s name='ListingSortPriceLowest'}{/s}</option><option value="4" eq selected>{s name='ListingSortPriceHighest'}{/s}</option><option value="5" eq selected>{s name='ListingSortName'}{/s}</option><option value="1" eq selected>{s name='ListingSortDefault'}{/s}</option> Dann wird alles so angezeigt wie es soll :slight_smile: Beitrag ergänzend dazu und zu Dieser Beitrag Besten Gruß Lars Gruwi IT

1 „Gefällt mir“

Moin, ich habe den Fehler gefunden. Version 4.0.6 und die Standardsortierung war falsch. Schreibt man Sie um zu: CAST(aAttributes.attr20 AS SIGNED) DESC und ändert in der Listing_actions.tpl noch die Sortierung der Darstellung, dann wird alles so angezeigt wie es soll :slight_smile: Besten Dank trotzdem :slight_smile:

Hat alles wunderbar funktioniert. Doch, wie bekomme ich im Backend unter Artikelübersicht in den Kategorien eine Spalte mit dieser Sortierung, damit man schon in der Übersicht sieht welcher Artikel welche Sortierungsnummer hat und somit auch nach Sortierungsnummer einstellen kann?

Super! Vielen Dank für die tolle und hilfreiche Anleitung! :thumbup: :slight_smile: :slight_smile:

Klasse, habe ich mich noch vor kurzem gewundert. Die Sortierung ist bei meinen Produkten sehr Wichtig. Danke noch mal an dieser Stelle :thumbup: Doch, wie bekomme ich im Backend unter Artikelübersicht in den Kategorien eine Spalte mit dieser Sortierung, damit man schon in der Übersicht sieht welcher Artikel welche Sortierungsnummer hat und somit auch nach Sortierungsnummer einstellen kann? Ja, währe für die Übersicht nicht schlecht. Habe aber noch ne andere Frage. Da ich ja meine Produkte über die WaWi Amicron in den Shop schiebe, währe es jetzt natürlich interessant zu wissen wie ich diese Pos. Nummer über die Schnittstelle übergeben bekomme…sofern das überhaupt möglich ist.

Hallo, das ist ja alles recht einfach und verständlich, nur wie kann ich den Default Sort Key setzen? Will natürlich möglichst wenig redundant ersetzen und am liebsten nur den eigenen Key ergänzen: {block name='frontend\_listing\_actions\_sort\_values' append}<option value="7" eq selected>{s name='ListingSortDefault'}{/s}</option>{/block} Kann ich sSort irgendwie beeinflussen ohne das per Plugin machen zu müssen? Gruß, Michael

Weitere Frage: Die Beschreibung hier fügt ja die Standardsortierung hinzu. Ich möchte nun aber neben den Sortiermöglichkeiten und der Standard-Sortierung eine weitere Option hinzufügen, die nach einem Freitextfeld Sortiert wird. Wie weise ich das ganze denn zu, ohne die bisherige Standardsortierung zu überschreiben?

Super, vielen Dank!! Ein Tipp noch: Falls man bei der Sortierung mehr als nur eine Ziffer zwischen 0 und 9 verwenden möchte, sollte man das Feld s_articles_attributes.attr20 in der Datenbank in ein nummerisches Feld umwandeln. Ansonsten würde der Wert 33 vor 9 sortiert. Und ggf. auch einen Index auf das Sortierfeld?

[quote=“jox”]Hat alles wunderbar funktioniert. Doch, wie bekomme ich im Backend unter Artikelübersicht in den Kategorien eine Spalte mit dieser Sortierung, damit man schon in der Übersicht sieht welcher Artikel welche Sortierungsnummer hat und somit auch nach Sortierungsnummer einstellen kann?[/quote] Finde ich auch sehr wichtig, wie kann das realisiert werden? Gruß

[quote=“georgy93”]Super, vielen Dank!! Ein Tipp noch: Falls man bei der Sortierung mehr als nur eine Ziffer zwischen 0 und 9 verwenden möchte, sollte man das Feld s_articles_attributes.attr20 in der Datenbank in ein nummerisches Feld umwandeln. Ansonsten würde der Wert 33 vor 9 sortiert. Und ggf. auch einen Index auf das Sortierfeld?[/quote] Genau das möchte ich gerne - leider reichen meine Kenntnisse nicht dafür, dies ohne weitere Hilfe umzusetzen. Wo finde ich die Datenbank und wie wandle ich das Feld dann um? Vielen Dank vorab :slight_smile:

Herzlichen Dank für Deine Mühe. Hat mir sehr weitergeholfen!

Hallo, das Thema ist zwar schon älter, hat mir jedoch auch sehr geholfen. Ich möchte die Frage von jox nochmals aufgreifen. [quote=„jox“]Hat alles wunderbar funktioniert. Doch, wie bekomme ich im Backend unter Artikelübersicht in den Kategorien eine Spalte mit dieser Sortierung, damit man schon in der Übersicht sieht welcher Artikel welche Sortierungsnummer hat und somit auch nach Sortierungsnummer einstellen kann?[/quote] Es würde wäre für mich schon aussreichend, wenn ich das Freitextfeld angezeigt würde, optimal wäre natürlich wenn man die Artikel danach gleich noch in einer Kategorieübersicht sortieren könnte. Danke für n Tipp und Gruß Stefanie

Vielleicht hilft dieses Plugin: http://store.shopware.com/esc01620/kate … erung.html Sent from my iPad using Tapatalk