Hallo!
Ich möchte gerne die Detailseite eines Artikels anhand der Artikelnummer anzeigen.
Wie geht das?
Gibt es da einen Controller den ich mit dem Parameter artnr aufrufe und der dann weiterleitet auf die SEO-URL?
Bin für jeden Hinweis dankbar.
Hallo!
Ich möchte gerne die Detailseite eines Artikels anhand der Artikelnummer anzeigen.
Wie geht das?
Gibt es da einen Controller den ich mit dem Parameter artnr aufrufe und der dann weiterleitet auf die SEO-URL?
Bin für jeden Hinweis dankbar.
in einem Projekt haben wir das mal umgesetzt, da es einfacher ist in einer Mail auf die Artikelnummer zu verweisen als erst die Seo-Url zu suchen.
RewriteRule ^artikelnummer/(.*)$ getartnum.php?oxartnum=$1 [NC,QSA]
<?php
$myConfig = new myconfig;
$myConfig->init();
$mydb = @mysql_connect( $myConfig->dbHost, $myConfig->dbUser, $myConfig->dbPwd );
mysql_select_db( $myConfig->dbName, $mydb) OR die(‘error selecting table.’);$sShopURL = $myConfig->sShopURL;
$oxartnum = ‘’;
if (isset($_GET[‘oxartnum’])) {
$oxartnum = mysql_real_escape_string($_GET[‘oxartnum’]);
// max length of oxartnum
if (strlen($oxartnum) > 14) $oxartnum = ‘’;
}
if ($oxartnum == ‘’) {
header(“Location: $sShopURL”);
exit;
}
$oxartnum = str_replace(“/”, “”, $oxartnum);
$oxid = ‘’;
$sQ = “select OXID from oxarticles where OXARTNUM = ‘$oxartnum’ limit 1”;
if ($result = mysql_query($sQ)) {
if ($row = mysql_fetch_assoc($result)) {
$oxid = $row[‘OXID’];
}
}
if ($oxid == ‘’) {
header(“Location: $sShopURL”);
exit;
}
$sQ = “select OXSEOURL from oxseo where OXOBJECTID = ‘$oxid’ limit 1”;
if ($result = mysql_query($sQ)) {
if ($row = mysql_fetch_assoc($result)) {
$sSeoUrl = $sShopURL . ‘/’ . $row[‘OXSEOURL’];
header(“Location: $sSeoUrl”);
exit;
}
}
$sStdUrl = $sShopURL . ‘/index.php?cl=details&anid=’ . $oxid;
header(“Location: $sStdUrl”);class myconfig {
function init() {
require dirname(FILE) . “/config.inc.php”;
}
}
Aufgerufen wird ein Artikel mit der Artikelnummer 4711 dann mit:
Hallo patchwork.de!
Vielen Dank für die Info. Ich hab mir schon fast gedacht, dass das mit Bordmitteln nicht geht
Aber Deine Lösung ist ja auch nicht so komplex.
Dann werde ich das ähnlich umsetzen.
Schöne Grüße aus Hamburg
Also wenn ich ehrlich bin ist die Lösung von patchwork.de grob fahrlässig und schreit nach einer Sicherheitslücke (SQL Injection).
$sQ = "select OXID from oxarticles where OXARTNUM = '$oxartnum' limit 1";
Hier wird die Artikelnummer aus dem Request ohne Validierung des Parameters einfach in den SQL geschrieben.
Eine einfache Überladung vom oxSearch-Model, bzw. dem Search-Controller würde es auch tun:
Wenn $sSearchParam eine OXARTNUM in oxarticles, dann redirect auf die Detailseite.
Direkt verlinken könntest du dann auch über:
http://www.deinshop.de/?cl=search&searchparam=ARTIKELNUMMER
Positiver Nebeneffekt: Man kann in deinem Shop direkt nach einer Artikelnummer suchen und dann auf die Detailseite gelangen.
Hallo,
ist ja witzig.
Hab heute nen Modul zu diesem Thema veröffentlicht. Mit dem Modul kann man per URL Parameter entweder mit der Artikelnummer oder der EAN direkt auf die Artikeldetailseite springen. Siehe hier:
http://forum.oxid-esales.com/showthread.php?t=25861
Grüße
Fabian
[QUOTE=KaiNeuwerth;155270]Also wenn ich ehrlich bin ist die Lösung von patchwork.de grob fahrlässig und schreit nach einer Sicherheitslücke (SQL Injection).[/QUOTE]
Na ja,das ist ja klar, das da noch ne Validierung rein muss und der String escaped wird.
[QUOTE=Alpha-Sys;155272]Hab heute nen Modul zu diesem Thema veröffentlicht. Mit dem Modul kann man per URL Parameter entweder mit der Artikelnummer oder der EAN direkt auf die Artikeldetailseite springen. Siehe hier:
http://forum.oxid-esales.com/showthread.php?t=25861
[/QUOTE]
Schau ich mir an.
@KaiNeuwerth:
Danke für den Hinweis! Kommt davon wenn man nur Teile eines Projektes kopiert …
Die übergebenen Daten müssen natürlich maskiert und auch auf Plausibität geprüft werden.
Es gibt ja mehrere Möglichkeiten die Verlinkung auch über das OXID-Framework herzustellen, aber ich kann mir einen Link wie
einfach besser behalten als
Danke für den Hinweis! Kommt davon wenn man nur Teile eines Projektes kopiert …
Die übergebenen Daten müssen natürlich maskiert und auch auf Plausibität geprüft werden.
Top, dann mach das mal besser…
Es gibt ja mehrere Möglichkeiten die Verlinkung auch über das OXID-Framework herzustellen, aber ich kann mir einen Link wie
Der Domainname meinshop.de steht zum Verkauf.
einfach besser behalten als
Der Domainname meinshop.de steht zum Verkauf.
Für die URL mit dem Search-Controller kann man ja ebenso eine RewriteRule mit /artikelnummer/$1 erzeugen
so könnte man zwar die Artikeldetailseite aufrufen und wenn der Aufbau der Zielseiten-Url egal ist - Ok
Aber im Beitrag #1 ging es ja um die Weiterleitung zur Seo-Url.
Und wie schon geschrieben: es gibt ja mehrere Möglichkeiten …
Das Modul von Fabian gibt´s jetzt auch über ioly (asy_artnum)