17. September 2013

Shopware-Kategorie: Sortierung und Anzahl der Artikel

Shopware erlaubt, die standardmäßige Sortierung der Artikel festzulegen. Unter Grundeinstellungen -> Storefront -> Kategorien / Listing wird im Punkt Standardsortierung Listing die gewünschte Standardsortierung angegeben. Welche Werte erlaubt sind, kann diesem Tutorial entnommen werden: Kategorien / Listen. Durch die Umstellung werden die Artikel tatsächlich umsortiert, die angezeigte Sortierungsart dagegen wird nicht angepasst. Das hat zur Folge, dass die Artikel beispielsweise nach dem Preis sortiert wurden, oben jedoch das Erscheinungsdatum als Kriterium angezeigt wird.
Shopware-Kategorien-Artikel-Sortierung
Um diesen Wert ebenfalls auf die neue Sortierung zu setzen, bedarf es eines Eingriffs in die Datei /frontend/listing/listing_actions.tpl im aktuell aktiven Template-Verzeichnis (optimalerweise ein Custom Template, um die Standard Dateien im Orginalzustand zu lassen). Hier widmen wir uns dem Block frontend_listing_actions_sorts und schreiben diesen wie folgt um:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 {block name='frontend_listing_actions_sort'} <form method="get" action="{url controller=cat sCategory=$sCategoryContent.id}"> <input type="hidden" name="sPage" value="1">   <div class="sort-filter"> <label>{s name='ListingLabelSort'}{/s}</label> <select name="sSort" class="auto_submit"> <option value="1"{if !isset($sSort) || $sSort eq 1} selected="selected"{/if}>{s name='ListingSortRelease'}{/s}</option> <option value="2"{if $sSort eq 2} selected="selected"{/if}>{s name='ListingSortRating'}{/s}</option> <option value="3"{if $sSort eq 3} selected="selected"{/if}>{s name='ListingSortPriceLowest'}{/s}</option> <option value="4"{if $sSort eq 4} selected="selected"{/if}>{s name='ListingSortPriceHighest'}{/s}</option> <option value="5"{if $sSort eq 5} selected="selected"{/if}>{s name='ListingSortName'}{/s}</option> {block name='frontend_listing_actions_sort_values'}{/block} </select> </div> </form> {/block}
Die relevante Änderung gegenüber dem Orignalzustand ist die Erweiterung des gewünschten option Tags. In meinem Beispiel wird die Smarty if – Abfrage des  Tags option mit dem value=“3″ durch {if !$sSort || $sSort eq 3} ersetzt. Da beim ersten Aufruf der $sSort Parameter nicht bekannt ist, nimmt das Template den  Wert vom ersten option-Tag an (Erscheinungsdatum). Durch diese Anpassung sorgen wir dafür, dass wenn der Parameter nicht gesetzt wurde, das abgeänderte option-Tag vorausgewählt wird. Leider impliziert die Lösung, dass eine erneute Anpassung erfolgen muss, wenn man im Backend die Sortierung wieder ändert. Solange die Änderung jedoch nicht standardmäßig übergeben wird, erfüllt die Template-Anpassung ihren Zweck.

Anzahl der Artikel pro Seite

Wenn wir uns schon in der listing_actions.tpl befinden, gibt es noch eine Kleinigkeit, die ich gern umstelle.
Auf der Kategorie Listing-Seite befindet sich oben rechts die Auswahlliste, mit der man festlegt, wie viele Artikel pro Seite angezeigt werden sollen.
Artikel-Seite-Filter
Aus meiner Sicht macht diese Liste dann Sinn, wenn es mehr als eine Auswahl gibt. Dies ist standardmäßig der Fall. Man kann aber im Backend unter Grundeinstellungen -> Storefront -> Kategorien / Listing die Vorauswahl auf nur einen Wert beschränken, z.B. auf 12. Daher entferne ich auch diese gern. Damit die Liste aber auch nur angezeigt wird, wenn wir mehr als einen Wert haben, ist ein kleiner Eingriff in den Block frontend_listing_actions_items_per_page notwendig:
1 2 3 {block name='frontend_listing_actions_items_per_page'} {if $sPerPage|@count gt 1} ...
Die relevante Änderung befindet sich in der dritten Zeile: {if $sPerPage|@count gt 1}. Sie bewirkt dass die Auswahlliste nur dann angezeigt wird, wenn die Anzahl der Listenelemente größer als 1 ist. Ganz simple Geschichte, die jedoch dafür sorgt, dass dem Nutzer nicht eine Auswahlmöglichkeit suggeriert wird, wo es keine gibt. Dies ist meiner Meinung nach auch konsequent im Hinblick auf die Usability und Konsistenz des Online-Shops, zumal auch die Felder Blättern und Seite ausgeblendet werden, wenn nur eine Seite vorhanden ist. Wenn ihr Verbesserungsvorschläge und Anregungen habt, bzw. eure Meinung dazu loswerden möchtet, würde ich mich über eure Kommentare freuen! Bis demnächst!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Marken schenken uns ihr Vertrauen

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram