hreflang automatisch im Header (deutsche Version)

Erweiterungen
Post Reply
RalfHenke
Posts: 7
Joined: Fri 27. Feb 2015, 11:16

hreflang automatisch im Header (deutsche Version)

Post by RalfHenke » Sun 1. Mar 2015, 21:57

Hallo,

Google ist es wichtig, dass bei verschiedenen Sprachen der Seiten im meta header entsprechende tags erscheinen.
Beispiel:

Code: Select all

<link rel="alternate" hreflang="en" href="http://www.praxis-goettingen-zentrum.de/en/?Service">
<link rel="alternate" hreflang="de" href="http://www.praxis-goettingen-zentrum.de/?Leistungen"> 
Mag zunächst unwichtig scheinen. Wer aber aus dem Google listing alles rausholen möchte dem ist das dringend zu empfehlen. (natürlich auch gültig für andere SE).

Leider ist das in CMSimple bisher nicht implementiert. Ist auch nicht so simpel.

Im Folgenden poste ich meine Lösung. Um diese zu verwenden sind allerdings ein paar manuelle Schritte OFFLINE in einem Texteditor nötig.

Also bitte nur durchführen wenn man über FTP und einen vernünftigen Code editor verfügt und vorher ein komplettes Backup macht. Ein Fehler in einem php code und die gesamte Seite ist im Ar...

Vorbereitung:
Alle Seiten die in zwei Sprachen existieren müssen identifiziert werden. Hierbei ist ZWINGEND dass diese innerhalb der Architektur auf den selben Ebenen liegen! Optimal ist eine vollständige Spiegelung der Webseite in zwei Sprachen.

Die Haupt-Sprache bei mir ist Deutsch, die 2. Sprache ist Englisch (ggf. /en/ durch /sprache2/ ersetzen)

Die folgenden Dateien müssen offline verfügbar heruntergeladen werden (FTP dringend zu empfehlen!):
cmsimple/cms.php
cmsimple/functions.php
content/pagedata.php
/en/content/pagedata.php

Im nächsten Post Beginn der Arbeit ...

RalfHenke
Posts: 7
Joined: Fri 27. Feb 2015, 11:16

Re: hreflang automatisch im Header (deutsche Version)

Post by RalfHenke » Sun 1. Mar 2015, 22:14

Zunächst muss ein Array aufgebaut werden welches die Seiten der beiden Sprachen spiegelt.

Hierzu indentifiziert man in beiden pagdata.php files jeweils die Zeilen
$page_data[xy]['url'] = 'was auch immer';

Die Einträge "was auch immer müssen methodisch kopiert werden in ein Array.
Array-Syntax:

Code: Select all

$lang_t['hreflang'][0] = array('Willkommen','Welcome');
$lang_t['hreflang'][1] = array('Seite2','Page2');
$lang_t['hreflang'][2] = array('Seite3','Page3');
$lang_t['hreflang'][99] = array('&sitemap','&sitemap'); 
Hierbei jeweils innerhalb der Klammer an Stelle 1 die URL der 1. Sprache und an Stelle 2 die der 2. Sprache.
Für jeden Eintrag muss die Ziffer innerhalb [] hochgezählt werden.
Die letzte Zeile muss die Sitelinks beschreiben.
Am einfachsten in dem Beispiel unten "wildern".
Wichtig: Mein Script erkennt Unterseiten bis zur 2. Ebene AUTOMATISCH !!! Bitte nicht die URL's aus dem Browser der life-Unterseiten kopieren !!! Unbedingt die der pagedata.php Dateien !!!


Mein Array:

Code: Select all

$lang_t['hreflang'][0] = array('Willkommen','Welcome');
$lang_t['hreflang'][1] = array('Leistungen','Service');
$lang_t['hreflang'][2] = array('Grundleistungen','General_Service');
$lang_t['hreflang'][3] = array('Geraete_%28Ultraschall%2FEKG_etc.%29','Technical_medical_diagnostic');
$lang_t['hreflang'][4] = array('Chronische_Erkrankungen_%28DMP%29','Chronische_Erkrankungen_%28DMP%29');
$lang_t['hreflang'][5] = array('IGel_%28Individuelle_Gesundheits-Leistungen%29','IGel_%28individual_health_services%29');
$lang_t['hreflang'][6] = array('Praxisablauf','Organisation');
$lang_t['hreflang'][7] = array('Aerzte','Physicians');
$lang_t['hreflang'][8] = array('Dr._med._Ralf_T._Henke','Dr._med._Ralf_T._Henke');
$lang_t['hreflang'][9] = array('Dr._med._Dieter_Heidbreder','Dr._med._Dieter_Heidbreder');
$lang_t['hreflang'][10] = array('Frau_Michaela_Zenker','Frau_Michaela_Zenker');
$lang_t['hreflang'][11] = array('Praxisbilder','Praxis-images');
$lang_t['hreflang'][12] = array('Wegbeschreibung','Directions');
$lang_t['hreflang'][13] = array('Google_Maps','Google_maps');
$lang_t['hreflang'][14] = array('Strassenansicht','Street_view');
$lang_t['hreflang'][15] = array('Impressum_%2F_Disclaimer_%2F_Datenschutz','Impressum_%2F_disclaimer_%2F_privacy');
$lang_t['hreflang'][99] = array('&sitemap','&sitemap'); 

RalfHenke
Posts: 7
Joined: Fri 27. Feb 2015, 11:16

Re: hreflang automatisch im Header (deutsche Version)

Post by RalfHenke » Sun 1. Mar 2015, 22:20

Nächster Schritt: Editieren der functions.php

1) Finden der folgenden Sektion (Version 4.5):

Code: Select all

// TEMPLATE FUNCTIONS

function head() 

2) Einfügen einer Zeile
unmittelbar VOR der Zeile "return $t;" folgendes einfügen:

Code: Select all

        $t .= set_hreflang(); 


3) Am ENDE der Datei Einfügen des folgenden Codes UND des vorbereiteten Arrays:

Code: Select all

// -----------------------------------------------------------------------------
function set_current_langurl()
{   global $webroot, $lang_t;
    $p = count($lang_t['hreflang']);$y = "";
    $urlpagestart = explode("/", $_SERVER['REQUEST_URI']);
 
    if ($urlpagestart[1] != "?&mailform") { 

    $y['en'] = $webroot.'/en/';
    $y['de'] = $webroot.'/';

        if ($urlpagestart[1] == "en") {$page = $urlpagestart[2];} else {$page = $urlpagestart[1];}
        
        $subpage = explode("___", $page);
        
        if ($subpage[1]) {
                foreach ($lang_t['hreflang'] as $test) { 
                    if ($test[0] == substr($subpage[0],1) || $test[1] == substr($subpage[0],1)) 
                    {$activepage['de'] = "?".$test[0]."___"; $activepage['en'] = "?".$test[1]."___";}       }
                foreach ($lang_t['hreflang'] as $test2) { 
                    if ($test2[0] == $subpage[1] || $test2[1] == $subpage[1]) 
                    {$activepage['de'] .= $test2[0]; $activepage['en'] .= $test2[1];}       }                    
        }ELSE{
        
                foreach ($lang_t['hreflang'] as $test) {
                    if ($test[0] == substr($page,1) || $test[1] == substr($page,1)) 
                    {$activepage['de'] = "?".$test[0]; $activepage['en'] = "?".$test[1];}      }
          }

        $y['en'] .= $activepage['en'];
        $y['de'] .= $activepage['de'];

    }else{
        $case="mailform";
    }
return $y;
}

function set_hreflang()
{   global $webroot, $lang_t;
    $x = set_current_langurl();
    if ($x != "") {
        $y .= tag('link rel="alternate" hreflang="en" href="'.$x['en'].'"'). "\n" ;
        $y .= tag('link rel="alternate" hreflang="de" href="'.$x['de'].'"'). "\n";
    }
return $y;
}

$webroot = "http://"; $webroot = $webroot.$_SERVER['HTTP_HOST'];
// ------------------------------------------------------------  ENDE CODE ---------------------------

// ------------------------------------------------------------- ARRAY ----------------------------------
$lang_t['hreflang'][0] = array('Willkommen','Welcome');
$lang_t['hreflang'][1] = array('Leistungen','Service');
$lang_t['hreflang'][2] = array('Grundleistungen','General_Service');
$lang_t['hreflang'][3] = array('Geraete_%28Ultraschall%2FEKG_etc.%29','Technical_medical_diagnostic');
$lang_t['hreflang'][4] = array('Chronische_Erkrankungen_%28DMP%29','Chronische_Erkrankungen_%28DMP%29');
$lang_t['hreflang'][5] = array('IGel_%28Individuelle_Gesundheits-Leistungen%29','IGel_%28individual_health_services%29');
$lang_t['hreflang'][6] = array('Praxisablauf','Organisation');
$lang_t['hreflang'][7] = array('Aerzte','Physicians');
$lang_t['hreflang'][8] = array('Dr._med._Ralf_T._Henke','Dr._med._Ralf_T._Henke');
$lang_t['hreflang'][9] = array('Dr._med._Dieter_Heidbreder','Dr._med._Dieter_Heidbreder');
$lang_t['hreflang'][10] = array('Frau_Michaela_Zenker','Frau_Michaela_Zenker');
$lang_t['hreflang'][11] = array('Praxisbilder','Praxis-images');
$lang_t['hreflang'][12] = array('Wegbeschreibung','Directions');
$lang_t['hreflang'][13] = array('Google_Maps','Google_maps');
$lang_t['hreflang'][14] = array('Strassenansicht','Street_view');
$lang_t['hreflang'][15] = array('Impressum_%2F_Disclaimer_%2F_Datenschutz','Impressum_%2F_disclaimer_%2F_privacy');
$lang_t['hreflang'][99] = array('&sitemap','&sitemap'); 

RalfHenke
Posts: 7
Joined: Fri 27. Feb 2015, 11:16

Re: hreflang automatisch im Header (deutsche Version)

Post by RalfHenke » Sun 1. Mar 2015, 22:26

Nun nur noch die functions.php hochladen IN DEN RICHTIGEN Ordner. Das sollte es gewesen sein.

Wer möchte kann natürlich auch den "neuen" Code auslagen in eine externe Datei und diese mittels Require einbinden
Hierzu benötigt man die cms.php!!!! DORT sollte in der 2. Zeile der Aufruf erfolgen:

Code: Select all

<?php // utf8-marker = äöü
require_once ('path/my_own_include.php');
Ich wünsche viel Spass und wenn es nicht klappt bitte melden! (Ich habe es selber nicht innerhalb der Functions.php getestet).
Es klappt aber definitiv. Wer möchte kann es gerne life sehen:

http://www.praxis-goettingen-zentrum.de/

Einfach bei beliebiger Unterseite den Seitenquelltext aufrufen und den Meta block ansehen.

Viel Spass und beste Grüße,

Ralf Henke

meltemi
Posts: 20
Joined: Sun 13. Jul 2014, 00:33
Location: Franken
Contact:

Re: hreflang automatisch im Header (deutsche Version)

Post by meltemi » Sun 1. Mar 2015, 23:13

Hallo Ralf,

sieht nach Fleiß und harter Arbeit aus :-) Aber wo soll Google kranke Japaner hinschicken?

Für eine allgemein verwendbare Musterlösung wäre es nützlich, noch die Standard-Sprachanmerkung (x-default) zu ergänzen.

Siehe hier (am besten alles aufklappen):
http://support.google.com/webmasters/an ... 9077?hl=de

Und siehe dort:
http://googlewebmastercentral-de.blogsp ... eiten.html
https://productforums.google.com/forum/ ... hRpzj3zS0s

Post Reply