Sonntag, 24. Mai 2009 Druck-Ansicht
Bei xtc-load.de ist eine praktische Erweiterung für die xt:Commerce-Suche zu finden:
» Ajax SearchSuggest - Nach erfolgreicher Installation werden dem “Suchenden” je nach den bereits eingegebenen Buchstaben passende Artikel vorgeschlagen.
Das Ding läuft soweit ganz ordentlich, aber drei Änderungen möchte ich empfehlen:
1. JavaScript auslagern
Im Installations-Paket wird eine Datei “general.js.php” mitgeliefert. Um deren Inhalt soll die Original “general.js.php” ergänzt werden.
Das gefällt mir nicht so - immerhin wird dadurch der Header-Bereich um (unnötige) 100 Zeilen aufgebläht. Mein Vorschlag:
*in dem Fall müsste der Code dazu in etwa so aussehen:
<script type="text/javascript" src="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/javascript/AjaxSuggest.js"></script>
2. Mehrsprachigkeit beachten
Zusätzlich zu den vorgeschlagenen Artikelnamen wird deren Kategorie im Ajax-Fenster ausgegeben. Bei den Artikelnamen passt alles, bei den Kategorienamen jedoch fehlt in der Datenbank-Abfrage der Abgleich mit der aktuell eingestellten Sprache.
Also nehmen wir uns die Datei “searchSuggest.php” und fügen an den passenden Stellen nach dem “WHERE”-Statement (es sind zwei) Folgendes ein:
AND cd.language_id = '".(int) $_SESSION['languages_id']."'
3. Suchmaschinenfreundliche URLs beachten
Beispiel “ShopStat”: Auf der Startseite funktioniert noch alles prima. Man gibt ein “e” ein, erhält ein paar Vorschläge, klickt einen davon an - und man landet auf der “advanced_search_result.php” mit entsprechendem Suchwort.
Befindet man sich aber in der Kategorie “Herren”/”Schuhe”- dann erhält man (zumindest im Internet-Explorer) bei Klick auf einen der Vorschläge nicht ganz so schöne 404er-Meldungen, denn es wird folgende Seite angesteuert:
http://www.MeinShop.de/Herren/Schuhe/advanced_search_result.php?keywords=E-Irgendwas
Diese Seite gibt’s natürlich nicht - Ich nehme an, mit den anderen gängigen Tools (z.B. DirectURL) wird das Ergebnis ähnlich sein - Daher müssen wir etwas tun: Wir greifen uns unsere “AjaxSuggest.js” und ersetzen (ganz am Ende) dieses …
top.location.href = "advanced_search_result.php?keywords=" + produktname;
… hiermit:
top.location.href = document.location.protocol + '//' + window.location.host + "/advanced_search_result.php?keywords=" + produktname;
Nun müsste alles korrekt funktionieren.
An dieser Stelle einen Dank an Speedy aus dem xtcModified-Forum, der mich auf diese “Macke” aufmerksam gemacht hat.
P.S.: Es könnte sein, dass die Suchvorschläge weiterhin Ärger machen, wenn der Shop in einem “Unterverzeichnis” geparkt ist. Eventuell ist es dann schlauer, in der “general.js.php” eine globale JS-Variable mit diesem Verzeichnis festzulegen - und die “Shop-Adresse” in der “AjaxSuggest.js” ggf. damit zusammenzubauen.
Bookmarks, Feed und Links
Wenn Ihnen dieser Beitrag geholfen hat ...
Beiträge zu ähnlichen Themen:
11 Antworten zu xt:Commerce - SearchSuggest und Ajax
Kommentar schreiben