Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv
 

Auch wenn alle Produkte angelegt sind, werden Sie bestimmt in die Verlegenheit kommen, an den Produkteigenschaften zu arbeiten oder Bilder und Texte anzupassen. Bisher waren dazu mehrere Klicks notwendig: Produktliste aufrufen, Produktliste filtern, Produkt auswählen und bearbeiten, Änderungen abspeichern und zurück zur Liste. Einfacher gehen Sie zum nächsten Produkt, wenn Sie einen Forward-Button implementieren.

Produkt Forward Button Erweiterung

Wenn mehrere Hundert Artikel im Shop sind und nach dem Speichern und Schließen immer wieder zurück zur Produktliste gegangen werden muß, kostet es Zeit. So erschien es sinnvoll, das Menu im Bereich "Produkt bearbeiten" durch einen neuen Button "Forward" zu ergänzen. Der Einfachheit halber hat dieser Button nur die Funktion zum nächsten Produkt zu springen. Man kann also in der gefilterten Produktliste einfach komfortabel von einem Produkt zum nächsten navigieren.

produkt forward button

Am Ende der Liste wird wieder zur Produktübersicht gesprungen. Man bleibt also in der vorher ausgewählten Kategorie und kann ohne Unterbrechung alle Produkte bearbeiten. So gelangt man (nach dem Speichern der Änderung am aktuellen Produkt) über den Forward-Button einfach zum nächsten Produkt.

Schritt 1:

Anpassen der View-Helper Klasse. Dazu muss die Datei /html/administrator/components/com_jshopping/views/product_edit/view.html.php angepasst werden. Noch hält sich der Aufwand in Grenzen. Wir fügen einen Menu-Platzhalter und ein neues Forward-Symbol ein. Das Forward-Symbol wird durch den Namen "Forward" in Form eines grünen Pfeils ausgegeben und basiert auf Bilder aus dem Images-Ordner des aktuellen Administrator Templates. Anpassung an eigene Vorstellungen erfolgen über die css-Klasse icon-32-forward mit Link auf das Hintergrundbild in images/toolbar/icon-32-forward.png. Die css-Klasse icon-32-save befindet sich in der template.css des aktuellen Templates für den Administratorbereich. Damit erlernt man gleichzeitig die Vorgehensweise, selbst eigene Funktionen im Adminbereich zu ergänzen. Bei den übergebenen Parametern geben wir auch schon den Namen der PHP-Funktion an, die bei einem Klick auf das Forward-Symbol ausgelöst werden soll. Nennen wir die Forward-Funktion einfach "forward". Beim erneuten Aufrufen der Produktansicht erscheint nun neben dem Löschen-Symbol das neue Forward-Symbol. Noch passiert beim Klicken auf Forward nichts, da die Forward-Funktion im Controller noch angelegt werden muss.

Schritt 2:

Anpassen des Controllers für das Produkt. In der Datei /html/administrator/components/com_jshopping/controllers/products.php wird der Controller codiert. Hier müssen wir an zwei Stellen Änderungen vornehmen. In der Methode display(...) muß der Zustand der Variable category_id im UserState zwischengespeichert werden, damit beim Navigieren durch die Produktliste innerhalb einer gewählten Kategorie die Kategorie beibehalten wird und in der neuen Methode forward(...) auch abgerufen werden kann. Innerhalb der Methode forward(...) wird das nächste Produkt über die neue Methode getNextProductId(...) ermittelt. Es sollten die Zugriffsrechte auf das Produkt und auf das Vorhandensein des Produktes geprüft werden. Wenn das Produkt vorhanden ist, wird es nach Ausführen der Methode forward(...) angezeigt. Falls es kein weiteres Produkt in der Auflistung innerhalb der gewählten Kategorie gibt, wird auf die große Produktübersicht umgeleitet. Damit überhaupt festgestellt werden kann, welches Produkt (hier die Produkt-ID) als nächstes angezeigt werden soll, erfolgt im dritten Schritt eine Anpassung des Zugriffs auf die Produkt-Tabelle.

Schritt 3:

Erweiterung der Tabellen-Klasse Produkt. In der Datei /html/components/com_jshopping/tables/product.php wird das Verhalten der Klasse Produkt definiert. Wir erweitern diese Klasse um eine neue Methode getNextProductId($productId, $categoryId). Hier wird deutlich, warum wir die Kategorie-ID benötigen und nicht einfach die Produkt-ID um einen Zähler erhöhen. Ohne gewählte Kategorie wird die nächste Produkt-ID ermittelt. Falls jedoch eine Kategorie angegeben wurde, wird das nächste Produkt anhand der Produkt-Sortierung der Produkt-Kategorie Relation ermittelt.

Alternative:

Die Methode forward(...) speichert Änderungen am Produkt nicht, sondern bringt anhand der aktuellen Produkt-ID und gewählten Kategorie das nächste Produkt zur Anzeige. Hier könnte eine Anpassung bzw. Erweiterung zum Speichern der Produkteigenschaften eingefügt werden, falls zusammenhängend viele Produkte (innerhalb einer Kategorie) bearbeitet werden müssen.