xhShop - Sortierung

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
Post Reply
frase
Posts: 2343
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

xhShop - Sortierung

Post by frase » Fri Nov 23, 2018 8:52 am

Ich möchte nicht gleich auf Github Alarm schlagen - lieber erstmal hier fragen.

1. Wunsch (schon ziemlich wichtig) :
Backend -> Artikelübersicht -> Artikel neu sortieren (alphabetisch, ...?)
- Man kann zwar die einzelnen Artikel gut verschieben, das ist aber bei vielen Artikeln mühselig.
Alternative: Evtl. neue Artikel gleich alphabetisch einsortieren und nicht nach Eingabedatum.
Ob andere Sortier-Kriterien gewünscht/sinnvoll sind ... ?

2. Wunsch (nicht ganz so wichtig):
Frontend -> Artikelübersicht -> Artikel sortiert anzeigen: 1. alphabetisch, 2. nach Preis (ab- und auf)

Wie sähen die Umsetzungs-Möglichkeiten aus?

frase
Posts: 2343
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: xhShop - Sortierung

Post by frase » Fri Nov 23, 2018 9:09 am

Noch ein Nachtrag zum vorherigen Post 1.:

Code: Select all

$plugin_cf['xhshop']['categories_allow_show_all']= ...
... sollte nur für das Frontend gelten.
Im Backend sollte die Anzeige aller Artikel in der Übersicht immer möglich sein.

cmb
Posts: 12940
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE
Contact:

Re: xhShop - Sortierung

Post by cmb » Fri Nov 23, 2018 10:05 am

frase wrote:
Fri Nov 23, 2018 8:52 am
1. Wunsch (schon ziemlich wichtig) :
Backend -> Artikelübersicht -> Artikel neu sortieren (alphabetisch, ...?)
Und da beginnen die Probleme, weil die Standard-Zeichenketten-Vergleichsfunktionen von PHP es nicht so mit der richtigen Sortierung von Texten haben; z.B. ist 'ä' > 'z' (zumindest bei UTF-8 und ISO-8859-?). Das liegt vermutlich daran, dass man die Sortierung traditionell der Datenbank überlassen hat. Die Intl-Extension bietet gute Unterstützung für die richtige Sortierung, aber die ist wohl häufig gar nicht verfügbar. Okay, da gibt es noch die Standardfunktion strcoll, aber diese berücksichtigt Groß-/Kleinschreibung (was beim Sortieren i.d.R. nicht gewünscht ist), und dürfte unter Windows für UTF-8 nicht korrekt funktionieren.

JavaScript's .localeCompare wäre vielleicht ein Workaround. Schau ich mir nachher mal genauer an.
Christoph M. Becker –Plugins for CMSimple_XH

frase
Posts: 2343
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: xhShop - Sortierung

Post by frase » Fri Nov 23, 2018 10:16 am

cmb wrote:
Fri Nov 23, 2018 10:05 am
Und da beginnen die Probleme, weil die Standard-Zeichenketten-Vergleichsfunktionen von PHP es nicht so mit der richtigen Sortierung von Texten haben; z.B. ist 'ä' > 'z' (zumindest bei UTF-8 und ISO-8859-?).
Damit könnte man evtl. leben.
cmb wrote:
Fri Nov 23, 2018 10:05 am
Die Intl-Extension bietet gute Unterstützung für die richtige Sortierung, aber die ist wohl häufig gar nicht verfügbar.
Meine Erfahrungen diesbezüglich: Auf gut gepflegten Servern mit aktuellen PHP-Versionen ist sie drin.

Leider tauchen solche Wünsche erst in der Praxis auf.
Danke, dass du drüber nachdenkst ;-)

cmb
Posts: 12940
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE
Contact:

Re: xhShop - Sortierung

Post by cmb » Fri Nov 23, 2018 1:07 pm

Okay, mal ein schneller Entwurf für eine (temporäre) alphabetische Artikelsortierung im Frontend. Dazu folgende Zeilen vor dieser Zeile einfügen:

Code: Select all

	function XHS_sortArticles(direction = 1) {
		var overview = document.getElementById("xhsOverview");
		var articles;
		if (overview) {
			articles = Array.from(overview.getElementsByTagName("article"));
			articles.sort(function (a, b) {
				var titleA = a.getElementsByClassName("xhsProdTitle")[0].textContent;
				var titleB = b.getElementsByClassName("xhsProdTitle")[0].textContent;
				return direction * titleA.localeCompare(titleB);
			});
			articles.forEach(function (article) {
				overview.appendChild(article);
			});
		}
	}
Um dann tatsächlich zu sortieren Browserkonsole öffnen, und dort eingeben:

Code: Select all

XHS_sortArticles()
oder

Code: Select all

XHS_sortArticles(-1)
Das erste sortiert aufsteigen, das zweite absteigend. Wenn das so nützlich ist, könnte man halt entsprechend einen Button (oder was auch immer) im Katalog-Kopf ergänzen, der die Funktion aufruft.

Entspechendes Sortieren nach Preis wäre etwas aufwendiger, weil die Preise im Frontend lokalisiert dargestellt werden, JS aber kein Dezimalkomma mag. Man könnte den Preis so wie er in catalog.php steht noch als data-* Attribut ergänzen, und gemäß dem Wert dieses Attributs sortieren.

Und ja, Sortieren im Frontend ist wohl sehr sinnvoll. Das nur per JS anzubieten vielleicht auch akzeptabel.

Dauerhafte Sortierung per Backend wird auf jeden Fall aufwendiger …
Christoph M. Becker –Plugins for CMSimple_XH

frase
Posts: 2343
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: xhShop - Sortierung

Post by frase » Fri Nov 23, 2018 1:22 pm

Chapeau!
Die alphabetische Sortierung im Frontend funktioniert hervorragend!
Und schön schnell - ohne Seitenwechsel.
cmb wrote:
Fri Nov 23, 2018 1:07 pm
Und ja, Sortieren im Frontend ist wohl sehr sinnvoll. Das nur per JS anzubieten vielleicht auch akzeptabel.
Auf jeden Fall!
Wobei die Preis-Sortierung wohl noch wichtiger wäre :cry:
cmb wrote:
Fri Nov 23, 2018 1:07 pm
Dauerhafte Sortierung per Backend wird auf jeden Fall aufwendiger …
Ja - aber genau das wäre für die Artikelpflege noch wichtiger :cry: :cry:

Vielleicht fällt uns DIR da noch was ein.

cmb
Posts: 12940
Joined: Tue Jun 21, 2011 11:04 am
Location: Mü-Sa, RLP, DE
Contact:

Re: xhShop - Sortierung

Post by cmb » Fri Nov 23, 2018 5:30 pm

frase wrote:
Fri Nov 23, 2018 1:22 pm
Wobei die Preis-Sortierung wohl noch wichtiger wäre :cry:
Stimmt, denn Geiz ist geil!
frase wrote:
Fri Nov 23, 2018 1:22 pm
Ja - aber genau das wäre für die Artikelpflege noch wichtiger :cry: :cry:
Ich weiß, denn ich bin doch nicht blöd!
frase wrote:
Fri Nov 23, 2018 1:22 pm
Vielleicht fällt uns DIR da noch was ein.
Bestimmt. Vorher schreibe ich aber noch eine kleine Migrationsanleitung für das Bamphp.

So, mal Spaß gehabt. Jetzt geht's weiter. :)
Christoph M. Becker –Plugins for CMSimple_XH

Post Reply