Den Canonical des Hauptartikels als Canonical der Variante setzen

Ich möchte dem Forum nun mal was zurückgeben:-)

Wir haben bei diversen Artikeln viele Varianten, die sich nur in der Größenangabe unterscheiden. Um DC zu vermeiden, setzen wir da den Canonical des Parent-Artikels

Ohne Gewähr, auf unserem Testsystem (4.4.5) läuft es, das Teil überlädt die View-Classe Details:

<?php
 // hinterlegt bei Varianten den Canonical-Tag zum Hauptartikel, um DC zu vermeiden 
class getcanonicalfromparentarticleviewdetails extends getcanonicalfromparentarticleviewdetails_parent
{
    public function getCanonicalUrl()
    {
        if ( ( $oProduct = $this->_getParentProduct($oProduct->oxarticles__oxparentid->value)) ) {
            $oUtils = oxUtilsUrl::getInstance();
            if ( oxUtils::getInstance()->seoIsActive() ) {
                $sUrl = $oUtils->prepareCanonicalUrl( $oProduct->getBaseSeoLink( $oProduct->getLanguage(), true ) );
            } else {
                $sUrl = $oUtils->prepareCanonicalUrl( $oProduct->getBaseStdLink( $oProduct->getLanguage() ) );
            }
            return $sUrl;
        }
        // Artikel ohne Varianten  benötigen auch einen Canonical, falls aus Suche oder andere Kategorie heraus
        elseif ( ( $oProduct = $this->getProduct() ) ) {
            $oUtils = oxUtilsUrl::getInstance();
            if ( oxUtils::getInstance()->seoIsActive() ) {
                $sUrl = $oUtils->prepareCanonicalUrl( $oProduct->getBaseSeoLink( $oProduct->getLanguage(), true ) );
            } else {
                $sUrl = $oUtils->prepareCanonicalUrl( $oProduct->getBaseStdLink( $oProduct->getLanguage() ) );
            }
            return $sUrl;
        }
    }
}

Dann noch im Admin als Modul registrieren:

details => getcanonicalfromparentarticleviewdetails


BTW: Spricht da was dagegen? (Tunnelblick:-)

Hallo hb_mf,

vielen Dank für den Code. Würde ich gerne mal testen. Aber wo genau muss dieser implementiert werden?

Danke
andre4

Hey prima, der Code scheint gut zu funzen, danke dafür! :slight_smile:

Ich habe es minimal optimiert und mal als Modul ins exchange gestellt:
http://exchange.oxid-esales.com/de/Marketing/SEO/Wendnet-FixCanonicalDetails-1-0-0-Stable-CE-4-3-x-4-5-x.html

Nur mal zur Abrundung die kurze Info, dass seit Oxid 4.6.0 dieser Patch nicht mehr erforderlich ist, da bereits im Core integriert! Und hier findet sich übrigens ein weiterer Thread dazu:
http://forum.oxid-esales.com/showthread.php?t=10097