xt:Commerce - Ungewollte Pfadwechsel bei Produkten in mehreren Unterkategorien
Problem:
Wird das selbe Produkt in mehreren Unterkategorien eines XTC-Shops aufgelistet, so kommt es zu einer fehlerhaften Darstellung des Kategorie-Pfades. Klickt man in der Unterkategorie auf die Produktbeschreibung so wird der Pfadverlauf einer anderen Unterkategorie, in der sich das Produkt auch befindet, angezeigt.
Lösung für xt:Commerce VEYTON (4)
Die Lösung des Problems bei neueren XTC-Versionen behebe ich gerne gegen Bezahlung für Sie. Wie Sie mich erreichen können erfahren Sie unter Kontakt.
Lösung für xt:Commerce 3.x:
Behoben werden kann dieser Fehler durch eine Anpassung der Funktion "buildDataArray()" in der Datei "product.php" im Verzeichnis "includes/classes/".
Die Funktion liefert einen Array zurück, bei dem ein Feld des Arrays verändert werden muss.
Die Originalzeile lautet:
'PRODUCTS_LINK' => xtc_href_link( FILENAME_PRODUCT_INFO, xtc_product_link( $array['products_id'], $array['products_name'] ) ),
Diese muss ersetzt werden durch:
'PRODUCTS_LINK' => str_replace( "?", "?cPath=".$_GET["cPath"]."&", xtc_href_link( FILENAME_PRODUCT_INFO, xtc_product_link( $array['products_id'], $array['products_name'] ) ) ),
Durch diese Änderung wird im Produktlink der Parameter "cPath" ergänzt und die bisherigen Produktkategorien als Wert übergeben. Entsprechend ändert sich der Produktlink
von "product_info.php?info=p7_beispiel.html"
zu "product_info.php?cPath=5_7&info=p7_beispiel.html".
Dieser Bugfix löst soweit bekannt jedoch nicht das Problem mit den xtc-internen "Weiter"- und "Zurück"-Buttons.
Fehlerhafte Lösungen:
Die im Internet kursierende Lösung
'PRODUCTS_LINK' => xtc_href_link( FILENAME_PRODUCT_INFO, xtc_product_link( $array['products_id'].'&cPath='.$_GET['cPath'] ) ),
ist fehlerhaft und zerschießt den Parameter "info". Wenn im Produktnamen Zahlen vorkommen, die einer Kategorie-ID entsprechen, dann werden diese Kategorien fälschlicher Weise ebenfalls im Kategorie-Pfad mit angezeigt.