SEO: doppelte title tags/ doppelte meta-descriptions

[QUOTE=Marco Steinhaeuser;94649]Also ich sehe da unterschiedliche Metatags bei Dir: Zumindest wird immer noch “Seite 2” angehängt.

Gruß[/QUOTE]

Hatte am Samstag festgestellt, dass ein Bereich bei mir auskommentiert war. Im Titel funktioniert es jetzt. Aber in der Beschreibung wird es komisch umgesetzt. Dort macht er aus:
[{ if $titlepagesuffix}][{if $first}] | [{/if}][{$titlepagesuffix}][{assign var=“first” value=1}][{/if }]

, Seite 5 | Seite 5

Erotik-Toys.de Erotikshop

[QUOTE=simply because;38008]Ich habe in der htaccess unterhalb der für den Shop notwendigen Regeln stehen:

Dann solltest Du allerdings auch in der product.tpl einstellen, dass ausschließlich die Haupt-URL verwendet wird:

am Dateianfang steht

Das sollte dann entfernt werden bzw. auskommentiert, je nach dem, was Du bevorzugst.

Am besten in einer Testumgebung testen.

Dazu bin ich zu wenig Techniker, als dass ich Dir sagen kann, dass das funktioniert.
Irgendwo musst Du dem Artikel sagen, er soll bei Varianten noindex in den header schreiben. Keine Ahnung, wie das gehen kann/soll.[/QUOTE]

Hallo Frank
wie und wo genau sollte das am Anfang der product.tpl stehen, das nur die Haupt URL verwendet wird?

<a href="[{$product->getMainLink()}]"><div [{if $test_Cntr}]id="test_cntr_[{$test_Cntr}]_[{$product->oxarticles__oxartnum->value}]"[{/if}] class="product hproduct[{if $head}] head[{/if}] [{$size|default:''}] [{$class|default:''}]">
<!--
[{if $showMainLink}]
        [{assign var='_productLink' value=$product->getMainLink()}]
    [{else}]
        [{assign var='_productLink' value=$product->getLink()}]
    [{/if}] -->

Habe es so gemacht wäre das richtig?

Danke und Gruß Locke

in Googles webmaster-tools wird doch bemängelt, das unter unterschiedlichen URIs ( = Kategorien) identische Meta-Tags description bzw. title angezeigt werden. Also sollte man doch in den Meta-Tags auch die aktuelle Kategorie mit aufnehmen und das wars - oder ?

Habe mal die Function _prepareMetaDescription in views/details.php erweitert (quick and dirty :smiley: )


    protected function _prepareMetaDescription( $sMeta, $iLength = 200, $blDescTag = false )
    {
        if ( !$sMeta ) {
            $oProduct = $this->getProduct();
            $sMeta = $oProduct->getLongDescription()->value;
            $sMeta = str_replace( array( '<br>', '<br />', '<br/>' ), "
", $sMeta );
            $sCatTitle = '';
            $oCatTree = $this->getCatTreePath();
            if ( $oCatTree ) {
                foreach ( $oCatTree as $oCat ) {
                    $sCatTitle = ' in ' . $oCat->oxcategories__oxtitle->value;
                }

            }

            $sMeta = $oProduct->oxarticles__oxtitle->value . $sCatTitle . ' - ' . $sMeta;
            $sMeta = strip_tags( $sMeta );
        }
        return parent::_prepareMetaDescription( $sMeta, $iLength, $blDescTag );
    }


Damit ist das Thema doch vom Tisch oder?

PS muss natürlich sinngemäß auch für den title gemacht werden …

Hallo pactchwork.de,
was meinst du genau damit:

“Also sollte man doch in den Meta-Tags auch die aktuelle Kategorie mit aufnehmen und das wars - oder ?”

bzw. ich versteh es nicht was genau mit den SEO Kategorie-Urls und deren Meta discription und Meta Keywords passiert?

Reicht die Änderung von Frank in der product.tpl nicht aus?

Gruß Locke

Hallo locke, schaust Dir in meinem (Test)Shop an - link in der Signatur.
Habe es dort sowohl für den Titel als auch für Description umgesetzt. Nimm irgendein Produkt (die meisten haben zwei und mehr Kategorien) und schau Dir das Produkt ausgehend von unterschiedlichen Kategorien an: zwar ist es immer das gleiche Produkt, aber sowohl in der URI, im Titel als auch in der description stehen unterschiedliche Texte - eben auch die aktuelle Kategorie.

Bei dem Ansatz von Frank mit dem getMainLink() ‘verliert’ man beim Aufrufen einer Detailseite die Kategorie von der man kam.

Hallo patchwork.de,

hab mir mal das bei dir angeschaut und weiss was es bewirkt spricht der Kategoriename wird überall in die Metas und den Titel eingefügt. Bei mir funktioniert es leider nicht. Bei Artikeln in dem der Admin/Seo/Meta leer ist bekomme ich folgende Fehlermeldung (Oxid 4.4) auf der Startseite:

Function ‘getLongDescription’ does not exist or is not accessible! (bnv_oxarticle)

Bei den Artikeln wo ich unter Admin/Seo/Meta manuell etwas angegeben habe bleiben die doppelten Metas bei den verschiedenen Kategorie URLs.

Zum einem denke ich aber auch, das mit deiner Lösung zwar die doppelte Metabeschreibung
vieleicht gelöst ist weil eigentlich nur der Kategoriename hinzugefügt wird und alles andere bleibt gleich. Aber der doppelte Content unter verschiedenen URLs bleibt weiterhin bestehn und ich gleube das sieht google überhaupt nicht gerne oder was meinst du???

Gruß Locke

[QUOTE=Locke;112782]Hallo patchwork.de,

hab mir mal das bei dir angeschaut und weiss was es bewirkt spricht der Kategoriename wird überall in die Metas und den Titel eingefügt. Bei mir funktioniert es leider nicht. Bei Artikeln in dem der Admin/Seo/Meta leer ist bekomme ich folgende Fehlermeldung (OXID 4.4) auf der Startseite:

Function ‘getLongDescription’ does not exist or is not accessible! (bnv_oxarticle)
[/QUOTE]

Wahrscheinlich hast Du für die Startseite keine meta-tags festgelegt und deshalb kommt diese Fehlermeldung. Müßte dann noch mit einem if abgefangen werden …

Bei den Artikeln wo ich unter Admin/Seo/Meta manuell etwas angegeben habe bleiben die doppelten Metas bei den verschiedenen Kategorie URLs.

Auch für diese Fälle muss sinngemäß der Kategoriename eingebaut werden.

Zum einem denke ich aber auch, das mit deiner Lösung zwar die doppelte Metabeschreibung
vieleicht gelöst ist weil eigentlich nur der Kategoriename hinzugefügt wird und alles andere bleibt gleich. Aber der doppelte Content unter verschiedenen URLs bleibt weiterhin bestehn und ich gleube das sieht google überhaupt nicht gerne oder was meinst du???

Gruß Locke

Doppelter Content ist aber ein anderes Thema und mit dem kanonischen Link im HTTP-Header abgefangen. Da sehe ich kein Problem, denn das ist im OXID-Shop schon gut gelöst.

Das Problem mit den doppelten Meta-Tags ist jedoch - wie ich meine - in der Standard-Software nicht gelöst und alle Shopbetreiber, die Artikel in mehreren Kategorien haben, finden wohl diese Beanstandung in den Google-Webmastertools.
Thats a bug, thats not a feature :slight_smile:

Hi patchwork.de.

du hast mich überzeugt leider bin ich nicht so der crack wie du. Hab unter Admin/CSM Seiten/Meta Discription Startseite Text eingefügt, leider habe ich weiterhin die Fehlermeldung bei den Artikeln ohne Meta Discription : Function ‘getLongDescription’ does not exist or is not accessible! (bnv_oxarticle)

Bei den Artikeln wo ich unter Seo manuell was eingefügt habe ändert sich leider nichts.
P.s Wie und wo genau hat das auszusehen in der views/details.php für den title?

Ich hoff du kannst mir irgendwie weiterhelfen.

Gruß Locke

möglicherweise ist deiner Version (4.5?) die Funktion getLongDescription noch nicht enthalten. Poste doch mal die Original-Funktion ‘_prepareMetaDescription()’ und auch die Funktion GetTitle()

Ich habe die 4.4

protected function _prepareMetaDescription( $sMeta, $iLength = 200, $blDescTag = false )
{
    if ( !$sMeta ) {
        $oProduct = $this-&gt;getProduct();

        $sMeta = $oProduct-&gt;getArticleLongDesc()-&gt;value;
        $sMeta = str_replace( array( '&lt;br&gt;', '&lt;br /&gt;', '&lt;br/&gt;' ), "

", $sMeta );
$sMeta = $oProduct->oxarticles__oxtitle->value.’ - '.$sMeta;
$sMeta = strip_tags( $sMeta );
}
return parent::_prepareMetaDescription( $sMeta, $iLength, $blDescTag );
}

/**
 * Returns current view title. Default is null
 *
 * @return null
 */
public function getTitle()
{
    if ( $oProduct = $this-&gt;getProduct() ) {
        return $oProduct-&gt;oxarticles__oxtitle-&gt;value . ( $oProduct-&gt;oxarticles__oxvarselect-&gt;value ? ' ' . $oProduct-&gt;oxarticles__oxvarselect-&gt;value : '' );
    }
}

Hi,

danke für die tolle Hilfe und den Hinweis mit getLongDescription!!! Hab dies einfach gegen getArticleLongDesc ausgetauscht und siehe da es funzt. Echt geil!!! Leider krieg ich das mit dem title ohne deine Hilfe nicht hin !!

der Name der Funktion hat sich tatsächlich geändert :frowning:

Habe hier mal die Ergänzungen markiert:

protected function _prepareMetaDescription( $sMeta, $iLength = 200, $blDescTag = false )
{
if ( !$sMeta ) {
$oProduct = $this->getProduct();

$sMeta = $oProduct->getArticleLongDesc()->value;
$sMeta = str_replace( array( ‘<br>’, ‘<br />’, ‘<br/>’ ), “
”, $sMeta );
[B][I]$sCatTitle = ‘’;
$oCatTree = $this->getCatTreePath();
if ( $oCatTree ) {
foreach ( $oCatTree as $oCat ) {
$sCatTitle = ’ in ’ . $oCat->oxcategories__oxtitle->value;
}[/I][/B]
$sMeta = $oProduct->oxarticles__oxtitle->value [B][I]. $sCatTitle .[/I][/B] ’ - '.$sMeta;
$sMeta = strip_tags( $sMeta );
}
return parent::_prepareMetaDescription( $sMeta, $iLength, $blDescTag );
}

public function getTitle()
{
if ( $oProduct = $this->getProduct() ) {
[B][I]$sCatTitle = ‘’;
$oCatTree = $this->getCatTreePath();
if ( $oCatTree ) {
foreach ( $oCatTree as $oCat ) {
$sCatTitle = ’ in ’ . $oCat->oxcategories__oxtitle->value;
}[/I][/B]

return $oProduct->oxarticles__oxtitle->value [B][I]. $sCatTitle .[/I][/B] ( $oProduct->oxarticles__oxvarselect->value ? ’ ’ . $oProduct->oxarticles__oxvarselect->value : ‘’ );
}
}

und jetzt noch die Ergänzung falls Du eigene Meta-Descriptions angelegt hast:
(jetzt kommt die Else zum Zug :slight_smile: )

protected function _prepareMetaDescription( $sMeta, $iLength = 200, $blDescTag = false )
{
if ( !$sMeta ) {
$oProduct = $this->getProduct();

$sMeta = $oProduct->getArticleLongDesc()->value;
$sMeta = str_replace( array( ‘<br>’, ‘<br />’, ‘<br/>’ ), “
”, $sMeta );
$sCatTitle = ‘’;
$oCatTree = $this->getCatTreePath();
if ( $oCatTree ) {
foreach ( $oCatTree as $oCat ) {
$sCatTitle = ’ in ’ . $oCat->oxcategories__oxtitle->value;
}
$sMeta = $oProduct->oxarticles__oxtitle->value . $sCatTitle . ’ - '.$sMeta;
$sMeta = strip_tags( $sMeta );
[B][I]} else {
$sCatTitle = ‘’;
$oCatTree = $this->getCatTreePath();
if ( $oCatTree ) {
foreach ( $oCatTree as $oCat ) {
$sCatTitle = $oCat->oxcategories__oxtitle->value . ’ ';
}
$sMeta = $sCatTitle . $sMeta;
}
[/I][/B]
return parent::_prepareMetaDescription( $sMeta, $iLength, $blDescTag );
}

wie gesagt - ist immer noch ‘quick and dirty’, denn möglicherweise gibt es noch andere Konstellationen, die ich momentan nicht sehe. Aber mir geht es im Moment darum in den Google-Webmastertools diese (negativen!) Einträge wegzubekommen.

Wenn ich jetzt das orginal hier:

protected function _prepareMetaDescription( $sMeta, $iLength = 200, $blDescTag = false )
{
if ( !$sMeta ) {
$oProduct = $this->getProduct();

        $sMeta = $oProduct-&gt;getArticleLongDesc()-&gt;value;
        $sMeta = str_replace( array( '&lt;br&gt;', '&lt;br /&gt;', '&lt;br/&gt;' ), "

", $sMeta );
$sMeta = $oProduct->oxarticles__oxtitle->value.’ - '.$sMeta;
$sMeta = strip_tags( $sMeta );
}
return parent::_prepareMetaDescription( $sMeta, $iLength, $blDescTag );
}

mit deinem hier tausche erscheint nur eine weisse Seite mit der URL

protected function _prepareMetaDescription( $sMeta, $iLength = 200, $blDescTag = false )
{
if ( !$sMeta ) {
$oProduct = $this->getProduct();

$sMeta = $oProduct->getArticleLongDesc()->value;
$sMeta = str_replace( array( ‘<br>’, ‘<br />’, ‘<br/>’ ), "
", $sMeta );
$sCatTitle = ‘’;
$oCatTree = $this->getCatTreePath();
if ( $oCatTree ) {
foreach ( $oCatTree as $oCat ) {
$sCatTitle = ’ in ’ . $oCat->oxcategories__oxtitle->value;
}
$sMeta = $oProduct->oxarticles__oxtitle->value . $sCatTitle . ’ - '.$sMeta;
$sMeta = strip_tags( $sMeta );
}
return parent::_prepareMetaDescription( $sMeta, $iLength, $blDescTag );
}

Leider bekomme ich jetzt nur eine weisse Seite muß wohl ein Fehler drin sein.

protected function _prepareMetaDescription( $sMeta, $iLength = 200, $blDescTag = false )
{
if ( !$sMeta ) {
$oProduct = $this->getProduct();

$sMeta = $oProduct->getArticleLongDesc()->value;
$sMeta = str_replace( array( ‘<br>’, ‘<br />’, ‘<br/>’ ), "
", $sMeta );
$sCatTitle = ‘’;
$oCatTree = $this->getCatTreePath();
if ( $oCatTree ) {
foreach ( $oCatTree as $oCat ) {
$sCatTitle = ’ in ’ . $oCat->oxcategories__oxtitle->value;
}
$sMeta = $oProduct->oxarticles__oxtitle->value . $sCatTitle . ’ - '.$sMeta;
$sMeta = strip_tags( $sMeta );
} else {
$sCatTitle = ‘’;
$oCatTree = $this->getCatTreePath();
if ( $oCatTree ) {
foreach ( $oCatTree as $oCat ) {
$sCatTitle = $oCat->oxcategories__oxtitle->value . ’ ';
}
$sMeta = $sCatTitle . $sMeta;
}

return parent::_prepareMetaDescription( $sMeta, $iLength, $blDescTag );
}

sehe im Moment keinen Fehler :confused:
tmp geleert?
steht was in der execption_log?

edit:
nach Post #31 funzte es ja - was ist jetzt anders?

Ich habs.:slight_smile: :slight_smile: Hab es mit deinem ersten post verglichen und einen unterschied erkannt.
Hab die fehlenden Klammern dicker und rot gemacht.

P.S. Leider funktioniert der else Befehl nicht !?!? Wär cool wenn das klappen könnte, dann wärs perfekt!

protected function _prepareMetaDescription( $sMeta, $iLength = 200, $blDescTag = false )
{
if ( !$sMeta ) {
$oProduct = $this->getProduct();
$sMeta = $oProduct->getArticleLongDesc()->value;
$sMeta = str_replace( array( ‘<br>’, ‘<br />’, ‘<br/>’ ), “
”, $sMeta );
$sCatTitle = ‘’;
$oCatTree = $this->getCatTreePath();
if ( $oCatTree ) {
foreach ( $oCatTree as $oCat ) {
$sCatTitle = ’ in ’ . $oCat->oxcategories__oxtitle->value;
}

        [B]}[/B]

        $sMeta = $oProduct-&gt;oxarticles__oxtitle-&gt;value . $sCatTitle . ' - ' . $sMeta;
        $sMeta = strip_tags( $sMeta );
    }
    else{
    $sCatTitle = '';
    $oCatTree = $this-&gt;getCatTreePath();
    if ( $oCatTree ) {
    foreach ( $oCatTree as $oCat ) {
    $sCatTitle = $oCat-&gt;oxcategories__oxtitle-&gt;value . ' ';
    }
    $sMeta = $sCatTitle . $sMeta;
    }
   [B] }[/B]
    return parent::_prepareMetaDescription( $sMeta, $iLength, $blDescTag );
}

[U]Hier auch nochmal für den title:[/U]

public function getTitle()

{
if ( $oProduct = $this->getProduct() ) {
$sCatTitle = ‘’;
$oCatTree = $this->getCatTreePath();
if ( $oCatTree ) {
foreach ( $oCatTree as $oCat ) {
$sCatTitle = ’ in ’ . $oCat->oxcategories__oxtitle->value;
}
[B]}[/B]

return $oProduct->oxarticles__oxtitle->value . $sCatTitle . ( $oProduct->oxarticles__oxvarselect->value ? ’ ’ . $oProduct->oxarticles__oxvarselect->value : ‘’ );
}

[QUOTE=Locke;112869]Ich habs.:slight_smile: :slight_smile: Hab es mit deinem ersten post verglichen und einen unterschied erkannt.
Hab die fehlenden Klammern dicker und rot gemacht.

P.S. Leider funktioniert der else Befehl nicht !?!? Wär cool wenn das klappen könnte, dann wärs perfekt!
[/QUOTE]

Habe gerade gesehen, dass die Meta-Tags schon in der übergeordneten Klasse oxubase gesetzt werden, falls ein Eintrag in den Seo-Tags vorhanden ist. In den oxdetails kannst Du die Else wieder rausschmeissen und in der oxubase in der Funktion getMetaDescription() folgende Ergänzung (ist rot markiert):

public function getMetaDescription()
{
    if ( $this-&gt;_sMetaDescription === null ) {
        $this-&gt;_sMetaDescription = false;

        // set special meta description ?
        if ( ( $sDescription = $this-&gt;_getMetaFromSeo( 'oxdescription' ) ) ) {
           $sCatTitle = '';
           $oCatTree = $this-&gt;getCatTreePath();
              if ( $oCatTree ) {
                 foreach ( $oCatTree as $oCat ) {
                 $sCatTitle = $oCat-&gt;oxcategories__oxtitle-&gt;value . ' ';
                 }
            }
            $sDescription = $sCatTitle . $sDescription;
            $this-&gt;_sMetaDescription = $sDescription;
        } elseif ( ( $sDescription = $this-&gt;_getMetaFromContent( $this-&gt;_sMetaDescriptionIdent ) ) ) {
            $this-&gt;_sMetaDescription = $this-&gt;_prepareMetaDescription( $sDescription );
        } else {
            $this-&gt;_sMetaDescription = $this-&gt;_prepareMetaDescription( false );
        }
    }

    return $this-&gt;_sMetaDescription;
}

}

Hi Patchwork.de,

die Änderung in views/details.php bewirkt bei mir das zu den meta keywords der Kategoriename hinzugefügt wird und nicht in der meta discription :frowning:

protected function _prepareMetaDescription( $sMeta, $iLength = 200, $blDescTag = false )
{
if ( !$sMeta ) {
$oProduct = $this->getProduct();
$sMeta = $oProduct->getArticleLongDesc()->value;
$sMeta = str_replace( array( ‘<br>’, ‘<br />’, ‘<br/>’ ), "
", $sMeta );
$sCatTitle = ‘’;
$oCatTree = $this->getCatTreePath();
if ( $oCatTree ) {
foreach ( $oCatTree as $oCat ) {
$sCatTitle = ’ in ’ . $oCat->oxcategories__oxtitle->value;
}

        }
        $sMeta = $oProduct-&gt;oxarticles__oxtitle-&gt;value . $sCatTitle . ' - ' . $sMeta;
        $sMeta = strip_tags( $sMeta );
    }
    return parent::_prepareMetaDescription( $sMeta, $iLength, $blDescTag );
}

Die Änderung in der views/oxubase.tpl bewirkt leider nicht das bei hinterlegeten metas der Kategoriename hinzugefügt wird :frowning:

public function getMetaDescription()
{
    if ( $this-&gt;_sMetaDescription === null ) {
        $this-&gt;_sMetaDescription = false;
        // set special meta description ?
        if ( ( $sDescription = $this-&gt;_getMetaFromSeo( 'oxdescription' ) ) ) {
        $sCatTitle = '';

$oCatTree = $this->getCatTreePath();
if ( $oCatTree ) {
foreach ( $oCatTree as $oCat ) {
$sCatTitle = $oCat->oxcategories__oxtitle->value . ’ ';
}
}
$sDescription = $sCatTitle . $sDescription;
$this->_sMetaDescription = $sDescription;
} elseif ( ( $sDescription = $this->_getMetaFromContent( $this->_sMetaDescriptionIdent ) ) ) {
$this->_sMetaDescription = $this->_prepareMetaDescription( $sDescription );
} else {
$this->_sMetaDescription = $this->_prepareMetaDescription( false );
}
}

    return $this-&gt;_sMetaDescription;
}

Ich hoffe du kannst mir weiterhelfen ich allein packs leider nicht!

habs mal im bug tracker eingetragen
https://bugs.oxid-esales.com/view.php?id=4847

mal sehen - übrigens ist der OXID-Shop nicht der einzige mit diesem Problem:)