xt:Commerce Fancy-URLs im Eigenbau
Im letzten Post ging es um seo-Links für Bild- bzw. img-Aufrufe. Das ganze möchte ich noch etwas aufbohren - soweit dass wir mit wenig Code, wenig Beanspruchung der Datenbank eine ordentliche Linkstruktur für Google, Yahoo und Co. aufbereiten - das natürlich alles völlig dynamisch.
Die normalen Links sind in xt-Commerce wenig SEO-freundlich aufgebaut.
Ohne der Erweiterung mit mod_rewrite und .htaccess gibt xt:Commerce folgende Struktur aus: product_info.php?product_id=222.
Daraus ergeben sich ein großer Nachteil. Von der Suchmaschinenoptimierung her betrachtet bietet der Link den Suchmaschinen wenig Informationen. Lediglich welches Skript geöffnet wird und welche ID das Produkt hat. Jetzt weiß Google, Yahoo und MSN aber nicht wie das Produkt heißt, welcher Hersteller es vertreibt usw.
Das Ziel dieses Tutorials soll also zusammenfassend gesagt sein:
- Der Link soll mind. 1 Keyword in der URL haben
- Der Link soll den Hersteller beinhalten
- Der Link soll den Produktnamen haben
.htaccess anpassen
Die erste Vorbereitung ohne am Core herumzuspielen machen wir an der .htaccess. Bearbeitet diese mit Eurem favorisierten Editor. Ich mache das meist direkt am Server mit vi oder pico. Überlegen wir uns zunächst wie der Link optisch aussehen soll. Wie gesagt, sollen Keyword, Hersteller und Produktname dabei stehen. Das heißt, der Link könnte folgendermaßen aussehen:
http://www.domain.com/gestalten/<hersteller>/<produktname>.html
Wir haben allerdings jetzt das Problem wie definieren wir, wo mod_rewrite dann hinspringen soll. Dem behelfen wir uns mittels einem kleinem Trick. Wir geben der Domain noch indirekt die ID mit in die URL, damit wir dann das Produkt auch korrekt zuordnen können, ohne das wir seperat Daten in die Datenbank schreiben müssen. Der fertige Link sieht damit folgendermaßen aus:
http://www.domain.com/gestalten/<hersteller>/<produktname>_<produkt_id>.html
Der dazugehörige Code für .htaccess sieht damit folgendermaßen aus:
RewriteRule ^gestalten\/(.*)\/(.*)_([0-9]{1,}) product_info.php?products_id=$3 [NC]
Was wir hier sehen ist eine vordefinierte Regel und wie mit dieser umgegangen werden soll.
Wir definieren nach RewriteRule den Pfad wie er auszusehen hat, wo also mod_rewrite anfagen soll, den String zu verarbeiten. In diesem Fall sagen wir dem Skript, dass der Unterordner "gestalten" heißen soll, wo dann quasi die Produkte "als HTML-Dateien liegen".
Nach dem maskierentem Slash (\/) sagen wir dann übersetzt "da kann stehen was will". Wir möchten ja flexibel bleiben und ohne Probleme neue Hersteller in xt:Commerce eintragen. Danach folgt dann wieder ein Konstrukt wo stehen kann was will, dies steht dann für den Produktnamen, welchen wir an dieser Stelle ausgeben. Zum Schluß folgt ein Unterstrich gefolgt von ([0-9]{1,}). Dies besagt, dass an dieser Stelle minimal 1 Ziffer, maximal unendlich sein können. Anhand dieser Ziffer weiß mod_rewrite nun, wo die Fahrt weiter gehen soll, denn rechts steht der Zielbahnhof
product_info.php?products_id=$3
Wir rufen hier also die ganz normale Datei wie vorher auf und übergeben dynamisch anhand dieses Skripts die ID. Die $3 steht in diesem Fall für den dritten Parameter in der URL, also die Produkt-ID. Wenn alles richtig war, kann man diese URL jetzt im Browser testen. Bei Erfolg steht nichts mehr im Weg xt:Commerce seo-technisch auf Vordermann zu bringen.
product.php includes anpassen
xtc_get_manufacturersname.inc.php falls nicht vorhanden im Ordner /inc/ anlegen und in product.php einbinden, ebenso xtc_cleanName.inc.php (bereits im Grundsystem vorhanden)
Inhalt der xt_get_manufacturersname.inc.php
<?php
function xtc_get_manufacturersname($id, $manufacturers_array = '') {
if (!is_array($manufacturers_array)) $manufacturers_array = array();
$sql = "select manufacturers_id, manufacturers_name from " . TABLE_MANUFACTURERS . " where manufacturers_id = '".$id."'";
$manufacturers_query = xtc_db_query($sql);
$manufacturers = xtc_db_fetch_array($manufacturers_query);
return $manufacturers['manufacturers_name'];
}
?>
Was macht dieser Code-Schnippsel?
Wir übergeben die ID des Herstellers, welcher zum jeweiligem Produkt gehört und holen uns aus der Datenbank den dazugehörigen Namen.
Das Ergebnis geben wir hinterher an die aufrufende Funktion zurück.
product.php return array anpassen
Folge Änderungen vornehmen:
Oberhalb des return-Befehls legen wir 2 Klassenvariablen an um den Namen des Herstellers (für Alt-Tags) und den neuen SEO-Link für xtCommerce zu speichern. Diese werden dann im Quelltext als Rückgabe übergeben (im Bild Zeile 405 - 407). Diese sind dann im Template unter {$module_data.VARIABLE} anwendbar.
Produktlisting Template anpassen
Wir suchen uns jetzt die Stellen raus, welcher mit der Variable PRODUCTS_SEOLINK versehen wurde. Dieses machen wir natürlich bei allen aufrufenden Stellen welche PRODUCTS_LINK aufrufen. Ebenso können wir jetzt nunmehr auf die Variable PRDUCTS_MANUFACTURERS_NAME zugreifen. Diese können wir z. B. perfekt in einem Alt-Tag eines Bildes oder im Titel eines Links verwenden. (siehe Screenshot)
Ergebnis des Hacks
![]()
Wenn alle Modifikationen erledigt sind und Dateien wieder in den xt-Commerce Ordner verschoben sind können wir jetzt unser Ergebnis testen. Wenn alles richtig gemacht wurde sollten jetzt die "schönen" seofreundlichen Links verarbeitet werden.
Wie anfangs versprochen haben wir jetzt mit wenig Codezeilen einen seofreundlichen xt:Commerce Shop mit allen uns vorgenommenen Kriterien.
Alle Posts der Woche 26 / 2009 anschauen
Fandest Du den Beitrag interessant?
Fatal error: Call to undefined function the_flattr_permalink() in /var/www/html/web1028/html/seo-geek-de/wp-content/themes/seogeek/single.php on line 48





