PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie kann ich hreflang tags in den Head für jede Unterseite einfügen



Danny94
05.09.2016, 12:01
Tag,
ich musste gerade feststellen, dass ich keine Möglichkeit habe hreflang tags irgendwie über dem cms einzufügen.

Das Problem ist auch dass ich auf der Herstellerseite die einzelnen Produkte zurückverlinken muss, sozusagen handelt es sich dabei um Links welche nicht von gambio generiert werden können.

Gibt es vielleicht eine einfachere Möglichkeit als in der Datenbank die Links bei jedem Produkt einzufügen und auf jeder Seite auszugeben ? Wenn nicht wie realisiere ich das am besten ?

Und die internen Links von de-IT auf it-IT wie kann ich diese machen ? An sich würden diese doch bereits vom System generiert werden, wenn ich z.b. nur das de mit it auswechsle in der domain dann wechselt Gambio schon direkt auf die richtige Seite. Sozusagen bräuchte ich nur die Variable zu finden worin der Link gespeichert ist ?

MfG,
Danny.

Danny94
07.09.2016, 16:32
Habe nun Version 3.1.1.1 seitdem werden schon mal die die internen Links angezeigt top ! Nur leider falsch...
Canonical sollten wenn keine sein und die deutschen sollten anstelle von de -> de-IT sein.

Aber die externen de-De Links weis ich immer noch nicht wie ich die rein bekomme.

EDIT: habe die Datei endlich gefunden ! Man den ganzen Tag habe ich danach gesucht.
Honeygrid\smarty\function.seo_tags.php

Danny94
08.09.2016, 15:49
Habe das nun so gelöst, wenn auch nicht perfekt honeygrid\smarty\function.seo_tags.php:
if(strtolower($languageCode) == 'de'){
$languageCode = 'de-IT';
}
if(strtolower($langCode) == 'de'){
$langCode = 'de-IT';
}
if(strtolower($languageCode) == 'it'){
$languageCode = 'it';
}
if(strtolower($langCode) == 'it'){
$langCode = 'it';
}
$url = $site = str_replace("http", "https", htmlspecialchars($url));
$altUrl = $site = str_replace("http", "https", htmlspecialchars($altUrl));

if($altUrl !== $url)
{
if($html === '')
{
$html .= '<link rel="alternate" hreflang="' . $languageCode . '" href="'
. $url . '" />' . "\n\t\t";
}

$html .= '<link rel="alternate" hreflang="' . $langCode . '" href="'
. $altUrl . '" />' . "\n\t\t";
}

Im Code war es 3 mal vorhanden, funktioniert so bei mir perfekt. Habe nun auch eine Idee wie ich die deutschen Links rein bekomme und zwar im gambio admin bereich unter dem Artikel kann man einen Herstellerlink angeben.
Diesen würde ich dann in honeygrid\module\head.html vor <base href="{$content_data.BASE_URL}" /> einfügen alla:
<link rel="alternate" hreflang="de-DE" href="{variable für link}" />
Nur finde ich die Variable + die Datei nicht welche am Ende der Produktseite:
"Für weitere Informationen besuchen Sie bitte die Homepage zu diesem Artikel." erzeugt.
Wenn jemand mir sagen könnte wo ich die Datei finde wäre ich unendlich froh.

KlausK
08.09.2016, 22:19
Für weitere Informationen besuchen Sie bitte die Homepage zu diesem Artikel.
Wo finde ich diesen Hinweis?

Danny94
09.09.2016, 09:22
Sobald du einem Produkt einen Herstellerlink gibst dann erscheint unten nach cross selling und produkt kompatibel diese Zeile mit dem Link, also direkt über dem Footer.
Ich habe die Datei gefunden (honeygrid..\snippets\product_info\product_lists.h tml) und die besagte Zeile erfolgreich auskommentiert!

{if $PRODUCTS_URL}
<div>
<!--{$PRODUCTS_URL}-->
</div>
{/if}

Allerdings war das nicht die richtige Variable :(. Die ist leer wenn ich die irgendwo anders ausgebe, darin wird aber auch der Text ausgegeben ("Für weitere Informationen bla bla"), deshalb gibt es noch eine weitere Datei zuvor vermutlich php, welche die Variable enthalten könnte.

Danny94
09.09.2016, 16:43
Gott ich komm einfach nicht drauf stundenlanges rumprobieren und suchen ... Wie bekomme ich den Herstellerlink welcher in der Datenbank liegt in honeygrid/module/head.html rein :(.

Danny94
09.09.2016, 18:09
Oder die Php-Variable würde auch gehen. Dann könnte ich es unter honeygrid/smarty/function.seo_tags_php einfügen:
$html = '<meta name="robots" content="' . $robots . '" />' . "\n\t\t" . '<link rel="alternate" hreflang="de-DE" href="PHP VARIABLE" />' . "\n\t\t" . $html;
Sorry für die ständigen Posts hier aber kann nach 45 mins nicht mehr editieren oO.

Danny94
12.09.2016, 15:32
Ok ich habe es aufgegeben, die Variable zu suchen.. Wie kann ich den Link aus der Datenbank holen ?
Hab mich daran versucht habe aber keine Ahnung wie die Shopsoftware läuft. Könnte jemand bitte den Code angucken und mir sagen wie ich den abändern muss damit es funktioniert.

if(isset($GLOBALS['actual_products_id']) && !empty($GLOBALS['actual_products_id']))
{
$manufacturers_products_url_own = '';
$manufacturers_products_url_own = xtc_db_query("select products_url from ".TABLE_PRODUCTS_DESCRIPTION." WHERE products_id = :productsid");
$manufacturers_products_url_own->bindParam(':productsid', $GLOBALS['actual_products_id']);
$manufacturers_products_url_own->execute();
}

$html = '<meta name="robots" content="' . $robots . '" />' . "\n\t\t" . '<link rel="alternate" hreflang="de-DE" href="'. $manufacturers_products_url_own .'" />' . "\n\t\t" . $html;

Bekomme dabei einen SQL-Error.

Danny94
14.09.2016, 11:38
So ich habe es endlich geschafft man. Musste mich durch dutzende Dateien quälen bis ich verstanden habe wie das Gambio System funktioniert, außerdem läuft Mysqli auf dem Gambio nicht PDO. Egal hier die Lösung.

honeygrid/smarty/function.seo_tags.php

if(isset($GLOBALS['actual_products_id']) && !empty($GLOBALS['actual_products_id']))
{
$manufacturers_products_url_own_stm = 'SELECT products_url FROM products_description WHERE products_id = ' . $GLOBALS['actual_products_id'] . ' AND language_id = 2';
$manufacturers_products_url_own_query = xtc_db_query($manufacturers_products_url_own_stm);
$manufacturers_products_url_own = xtc_db_fetch_array($manufacturers_products_url_own _query);

$html = '<meta name="robots" content="' . $robots . '" />' . "\n\t\t" . '<link rel="alternate" hreflang="de-DE" href="'.$manufacturers_products_url_own['products_url'].'" />' . "\n\t\t" . $html;
}else{
$html = '<meta name="robots" content="' . $robots . '" />' . "\n\t\t" . $html;
}

Im Statement language_id hat mit große Probleme bereitet, das war bei mir standardmäßig auf 1. Dort war in der Datenbank alle Einträge leer weshalb ich immer 0 als Ergebnis bekommen habe. Habe es nun händisch auf 2 gelegt, muss bei euch eventuell auch angepasst werden.

Zudem empfehle ich noch honeygrid..\snippets\product_info\product_lists.h tml:
{if $PRODUCTS_URL}
<div>
<!--{$PRODUCTS_URL}--> //<----- auskommentieren genaueres einige Beiträge zuvor.
</div>
{/if}

KlausK
14.09.2016, 21:50
Super! Vielen Dank für deine Lösung. Das wird sicher mal dem einen oder anderen User helfen. :D

Danny94
16.09.2016, 10:44
Gerne, könntest du noch bitte diesen Beitrag(#11) und die Beiträge #6, #7, #8 löschen, damit der Thread etwas übersichtlicher ist ;D.

Gruß,
Danny.

KlausK
16.09.2016, 12:55
Deine Beiträge sind doch OK. Sie zeigen, dass du dir Mühe gegeben hast eine Lösung zu finden und dass du nicht so schnell aufgibst. Das motiviert auch andere Leser.
Es schadet auch nicht deiner Reputation. Genügend langjährige Coder sehen manchmal den Wald vor lauter Bäumen nicht.
Das Thema ist zudem übersichtlich genug. Wir sind ja ein Forum und kein Portal für einfach zu verstehende Anleitungen :cool:

Google findet es übrigens ziemlich uncool wenn bereits gecrawlte und indexierte Seiten plötzlich nicht mehr da sind!

Danny94
20.09.2016, 16:41
Na gut.
Habe noch eine kleine Veränderung vorgenommen, sollte man ein Produkt nicht verlinken wollen, damit dann nicht der (in meinem Fall) de-DE Tag leer steht.

if(isset($GLOBALS['actual_products_id']) && !empty($GLOBALS['actual_products_id']))
{
$manufacturers_products_url_own_stm = 'SELECT products_url FROM products_description WHERE products_id = ' . $GLOBALS['actual_products_id'] . ' AND language_id = 2';
$manufacturers_products_url_own_query = xtc_db_query($manufacturers_products_url_own_stm);
$manufacturers_products_url_own = xtc_db_fetch_array($manufacturers_products_url_own _query);

if (!empty($manufacturers_products_url_own['products_url'])){
$html = '<meta name="robots" content="' . $robots . '" />' . "\n\t\t" . '<link rel="alternate" hreflang="de-DE" href="'.$manufacturers_products_url_own['products_url'].'" />' . "\n\t\t" . $html;
}else{
$html = '<meta name="robots" content="' . $robots . '" />' . "\n\t\t" . $html;
}

}else{
$html = '<meta name="robots" content="' . $robots . '" />' . "\n\t\t" . $html;
}


return $html;
}