Canonical URL in der Db festlegen

Hallo!

Ich habe mit C# eine Schnittstelle gebastelt, die vom ERP System die Artikel in die Datenbank zum OXID transferiert, Kategorien anlegt usw usf. Nun muss ich darüber die canonical URL festlegen.
Hier im Forum habe ich gelesen, dass OXID die Haupt-URL des Artikels dafür verwenden würde. Die wiederum in der oxobject2category anhand des höchsten Wertes im Feld OXTIME festgelegt werden würde. Leider konnte ich das bei dem eingesetzten Shop, für den ich die Programmierungen durchführe, nicht verifizieren. Auch Kombinationen aus OXTIME, OXPOS und OXTIMESTAMP brachten mich zu keiner Lösung.

Weiß jemand woran OXID das festmacht ob das rel=“canonical” gesetzt wird?

Danke schon mal im Voraus
Sabine

Es ist nicht die höchste sondern die niedrigste oxtime.

Leider nein. Bei einem Artikel ist es OXTIME = 10, OXPOS = 10000. Obwohl dieser Artikel noch eine OXTIME = 0 hat, jeweils mit einer OXPOS von 10000 und 9999.
Ein anderer Artikel hat die gleichen Konstellationen und dort ist es die Kategorie mit OXTIME = 0, OXPOS = 10000.

Also ich weiß nicht, ob ich die Frage ganz verstanden hab, aber die Canonical zeigt doch auf die Hauptseite des Artikels. Wenn du die Objekt-Id hast, musst du also in oxarticles schauen, ob es eine OXPARENTID gibt. Anschließend suchst du in der oxseo-Tabelle den entsprechenden Eintrag mit der oxobjectid und oxtype=‘oxarticle’ (+ oxexpired=0). In oxseourl steht dann die Canonical.

…und was ist, wenn der gleiche Artikel in verschiedenen Kategorien auftaucht? Dann hat er ja trotzdem überall die gleiche Beschreibung etc. Was duplicate content verursachen würde.
Ich habe natürlich auch erst einmal mit Artikeln angefangen, die keine Varianten haben, aber eben beide in drei verschiedenen Kategorien auftauchen. Dabei habe ich in den Quelltext geschaut, welche Kategorie denn den Tag “<link rel=“canonical”[…]” hat. Diese dann in der oxseo nachgeschaut und geschaut, welche cnid dort eingetragen ist. Von da aus bin ich in die oxobject2categories. Dabei habe ich eben die o.g. Unstimmigkeit festgestellt.

Edit: Natürlich alles unter Berücksichtigung der ID des Artikels.

/tmp leeren, die Hauptkategorie wird gecached. Ansonsten ist es die mit der niedrigsten oxtime, schau in oxseoencoderarticle:

// add main category caching;
        $sQ = "select oxcatnid from " . getViewName("oxobject2category") . " where oxobjectid = " . $oDb->quote($sArtId) . " order by oxtime";
        

Ist es vielleicht eine EE? Dann könnte ich mir die (doppelten?) Einträge erklären.