Nur ein Artikel in der Kategorie?

Der Wunsch ist doch nicht so “exotisch”, wie ich zunächst dachte: Inzwischen hatte ich mehrere Anfragen, ob es nicht eine Möglichkeit gibt, in xt:Commerce direkt zum Produkt weiter zu leiten, wenn die Kategorie nur ein einziges Produkt enthält.

Jawoll, es geht.

Ein Live-Beispiel dazu ist bei » Rb-HairCompany.de zu sehen. Die Kategorien “Colors” und “Strähnenfarben” enthalten dort nur einen Artikel - Und da kann man den Besuchern einen zusätzlichen Klick “ersparen”, indem gleich dieser Artikel gezeigt wird. Muss ja nicht sein, dass man eine Produkt-”Liste” mit nur einem Eintrag zu sehen bekommt, man kann ohnehin nur zu diesem einen Artikel weiternavigieren.

Nicht direkt weitergeleitet werden sollte in den Fällen, in denen die Kategorie zwar nur ein Produkt, dafür aber weitere Unterkategorien enthält. Je nachdem, wie die Kategorien-Navigation aufgebaut ist, könnte man unter Umständen die weiteren Kategorien “rauskicken”.

Die Unterkategorien würden sich dann zwar in der Detail-Ansicht des “Einzel-Produktes” weiter ausklappen, aber sonderlich schick ist das nicht. Und bei (als “Verlinkung”) duplizierten Artikeln kann man nicht davon ausgehen, dass sich genau der Pfad “ausklappt”, den man gerne hätte.

 

Automatisch weiterleiten:

Damit der Vorgang ohne weiteres Zutun automatisch laufen kann, müssen - wenn man sich in einer “Kategorie” befindet - also drei Dinge passieren:

  1. Prüfung: Hat die Kategorie weitere Unterkategorien?
  2. Wenn nein, Prüfung: Gibt es mehr als ein (aktives und für die jeweilige Kundengruppe zugelassenes) Produkt in dieser Kategorie?
  3. Wenn ja: Produkt-Link ermitteln - und dorthin weiterleiten

 

Download - redirectToSingleProd:

Meinen Lösungsvorschlag zu diesem Thema können Sie » hier kostenlos downloaden.

Alle Funktionen laufen innerhalb des Templates ab, System-Dateien müssen (in den meisten Fällen*) nicht geändert werden.

 

Installation:

1. Upload:

ZIP-Archiv » runterladen und entpacken, Upload von “gunnart_redirectToSingleProd.inc.php” in den Template-Ordner “meinShop.de/templates/meinTemplate/source/inc”

2. Datei “include”n / “require”n …

Dazu in der “boxes.php” des Templates Folgendes eintragen:


define('DIR_TPL_INCLUDES',DIR_FS_CATALOG.'templates/'.CURRENT_TEMPLATE. '/source/inc/');
require_once(DIR_TPL_INCLUDES . 'gunnart_redirectToSingleProd.inc.php');
		

… die Konstante DIR_TPL_INCLUDES kann man natürlich auch für weitere Template-Extras benutzen.

Ist nur ein “Benennungs-Vorschlag” - Ich persönlich lege meine “Extras” jedenfalls immer im “inc”-Ordner des Templates ab. Wenn Sie Ihre Shop-Erweiterungen anders organisiert haben, sollten Sie der Übersicht halber bei Ihrem System bleiben.

3. Funktion aufrufen

In die “boxes.php” (nach dem require, is klar) einfach ein redirectToSingleProd(); setzen, und das sollte es gewesen sein.

:-)

4. Es klappt nicht?

*Ja, das kann passieren: Wenn bei Ihnen Fehlermeldungen à la “headers already sent” auftauchen, dann muss der Funktions-Aufruf “weiter vorne” passieren (also bevor eine HTML-Ausgabe stattfindet) - In dem Fall kommt man dann doch nicht um eine Änderung an System-Dateien herum.

Glücklicherweise ist es nur eine: Und zwar die “header.php”, zu finden im Ordner “meinShop.de/includes”.

Damit es keine Fehlermeldungen gibt, falls Sie mal das Template wechseln, prüfen Sie am besten nach, ob es die Funktion redirectToSingleProd(); an der Stelle überhaupt schon gibt.

Also gleich an den Anfang Folgendes schreiben:

if(function_exists('redirectToSingleProd')) {
	redirectToSingleProd();
}

 

 

Und wie immer: Bitte nicht gleich an einem Live-Shop ausprobieren!