Hi web0null.
Was meinst du mit "genauso ... wie Duplizierte (Kopierte) Artikel" ?
Nehmen wir an du hast einen Artikel "
Schraube 2 x 10mm"
Dieser Artikel ist in folgender Kategorie angelegt:
- Schrauben und Muttern (ID 12)
Er ist verlinkt (nicht dubliziert) in folgende Kategorien:
- Kleinteile (ID 6)
- Zubehör (ID 4)
- TOP (ID 0)
Da in der Shop nicht unterscheidet zwischen einer "Haupt"-Kategorie (z.b. die in der der Artikel ursprünglich angelegt wurde und "Neben"-Kategorien (die in die er verlinkt wurde), sucht er sich bei Aufruf des Artikels
- egal aus welcher Kategorie -
aus der Tabelle
product_to_categories mit der Funktion
get_product_path() eine Kategorie "beliebig" aus. (Nach meinen Recherchen (zumindest in meiner mySQL-Version) die mit der niedrigsten ID, außer "0" für "TOP" (siehe die genannte Funktion).)
Das bedeutet, daß er, in unserem Beispiel, den Produkt-Pfad mit der Kategorie "Zubehör" bilden würde, da diese die niedrigste ID hat.
Das ist natürlich nicht gut.
Kunde war in Kategorie "Schrauben und Muttern" und ruft die Details des Artikels auf und sieht plötzlich
- in der URL eine andere Kategorie (nämlich "Zubehör")
- in der Breadcrumb eine andere Kategorie (nämlich "Zubehör")
- eine evtl. mit CSS als "active" gestylte Kategorie im Kategoriemenu (nämlich Zubehör ), die nicht die ist in der er vorher war
Es gibt mit dieser Methode keinen Double Content, da der Produkt-Pfad immer eindeutig ist.
Die Lösung soll nun ein meta-tag mit einer Canonical URL sein die immer gleich ist,
am Besten die, in der man den Artikel hauptsächlich sehen will, auch unter SEO-Gesichtspunkten,
es soll aber gleichzeitig im Frontend die angezeigte URL in der Browser-Adressleiste, die Breadcrumb und die markierte "active"-Kategorie die sein, von der er wirklich kam.
Es verhält sich also nichts wie "duplizierte Artikel" sondern der Besucher sieht lediglich den wirklichen Pfad auf dem er zur Detail-Ansicht des Artikels gekommen ist.
Die Suchmaschienen haben jedoch durch die Canonical-URL immer nur einen Pfad.
Das ganze hat nur Vorteile:
- Logik für den Besucher
- besser konfigurierbare "zurück"- und "weiter einkaufen"-Buttons
- korrekter Kategorie-Pfad als "active" markiert
Ich habe mit web28 schon darüber gesprochen.
Wir müssen eine Lösung finden die all das genannte erfüllt, ohne zu viel umstricken zu müssen.
Wir stimmten darin überein, daß es sicherlich sinnvoll ist, wenn der Admin bestimmen kann welche "Haupt"-Kategorie er für einen Artikel wünscht, womit dann die Canonical-URL gebildet wird.
Der Pfad in Breadcrumb usw. soll aber der wirklich gegangene sein.
Mein Lösung ist da nicht tauglich, hat lediglich einen richtigen Ansatz.
Wenn du Ideen hast, bist du willkommen, wie immer
.
Wenn du dir die
get_product_path() -Funktion anschaust (im /inc-Verzeichnis), siehst du dort ein "LIMIT 1" welches obsolet wird, wenn wir denn ein boolean-flag setzen für die Kategorie die wir für den Canonical benötigen.
Die Frage die sich uns stellte, war, wo setzen wir die Spalte für das flag.
In der Tabelle
products, die ohnehin ausgelesen wird oder in der
product_to categories.
Am wenigsten Änderungen hätte man, wenn man es schaffen würde die Funktion
get_product_path() so umzubauen, daß sie sowohl die nun bestimmbare "Haupt"-Kategorie ausliest (für canonical) als auch den "real"-path, den der Kunde gegangen ist.
Zu beachten sind auf jeden Fall die Sitemap-Bildung wie auch die Suchfunktion.
Bei beiden sollte am besten
der Artikel gefunden / indiziert werden, der in der "Haupt"-Kategorie liegt (hier gibt es ja keinen Pfad den man gekommen ist).
Gleichzeitig soll der Canonical genau diesen Pfad angeben.
Es wäre schön, wenn sich da noch mehr Leute Gedanken drüber machen könnten, da die genannten Features sehr wichtig für die Logik im Frontend sind und gleichzeitig SEO-friendly sind und Double Content vermeiden durch den Cannonical.
Gruß,
noRiddle
***NACHTRAG***
Habe nochmal über deine Aussage mit dem Verhalten wie "duplizierte Artikel" nachgedacht.
Klar, kann man so sehen, du hast's ja verstanden.
Meine obigen Ausführungen machen das Problem vielleicht (hoffentlich) nochmal ganz klar für Andere
.