De mest populærere blog indlæg her på siden har længe været mine PHP Include Tutorials, og flere har efterspurgt en nem måde at lave forskellige title Tags og metatags for de enkelte sider. Dette er noget der er utroligt vigtigt når det kommer til søgemaskineoptimering (SEO), så derfor vil jeg i denne tutorial gennemgå en forholdsvis simpel måde at differentiere dine include sider.
Tutorialen forudsætter at du har læst som minimum Dynamiske sider med PHP include og også gerne Videre med PHP Include da denne tutorial bygger videre på sidstnævnte. Hvis du ikke gidder læse de to blogindlæg så hent dette eksempel: eksempel 3 - dynamiske sider
Metatags der bør være forskellige
<title></title>
<meta content="" name="Description" />
<meta content="" name="Keywords" />
Title er titlen på dokumentet, bør være sigende for det pågælende dokument og altså ikke bare en overordnet titel for hele dit website. Det samme gør sig gældende for Desription og Keywords, hvor førstnævnte er en kort beskrivelse af indholdet i dokumentet, mens keywords er en kommasepereret liste af stikord der passer på indholdet af siden
Forskellige muligheder
Som altid har vi forskellige muligheder, de mest åbenlyse er nok:
- Kode det manuelt - en masse IF-THEN-ELSE eller switch
- Database løsning
- Lave noget virkelig virkelig smart
Der er fordele og ulemper ved alle disse løsninger, at kode det 100% manuelt er måske det mest simple og det letteste for de fleste, mens en databaseløsning måske er lettere at vedligeholde i længden, men også lidt overkill for en lille side. Den virkelig virkelig smarte løsning gemmer vi lige lidt.
Manuelt eksempel
I mine PHP Include tutorials gemmes siden der skal loades altid i variablen $side, derfor er det denne variabel der bestemmer hvilket title tag og metatags der skal vises. For at gøre det nemmest har jeg valgt at bruge en switch() i dette første eksempel.
<?php
//opsætning af metatags og titel
switch ($side) {
case 'forside':
$titel='Velkommen til min side';
$beskrivelse='Min side er sej, her finder du en masse spændende ting osv osv';
$keywords='Dette,Er,Keywords,For,forsiden';
break;
case 'side1':
$titel='Dette er side 1s titel';
$beskrivelse='Dette er side 1s beskrivelse';
$keywords='Dette,Er,Keywords,For,side,1';
break;
default:
$titel='Dette er titlen på de sider som ikke har egen titel';
$beskrivelse='Standard beskrivelse';
$keywords='Dette,Er,Standard,Keywords';
break;
}
?>
Sådan fortsættes for hver side der er i dit system. Dvs. for hver side laver du en:
<?php
case 'filnavnet_uden_.php';
$titel='';
$beskrivelse='';
$keywords='';
break;
?>
Koden indsættes i index.php under den første kodeblok
Når dette er gjort kan du modificere eller indsætte dine metatags imellem i index.php således de bliver til:
<title><?php echo $titel; ?></title>
<meta name="Description" content="<?php echo $beskrivelse; ?>" />
<meta name="Keywords" content="<?php echo $keywords; ?>" />
Voila så er der individuelle title og metatags.
Den smarte version
Ulempen er jo at det ikke er særligt dynamisk, retter du fx indholdet på en af dine includes skal du også rette titel og description og keywords i din index fil. Derfor ser vi på en lidt smartere og lidt sværere version.
Det letteste som jeg ser det, er helt klart at titlen og metatags står i det dokument vi includer. Dette kan vi dog ikke bare gøre, da metatags jo skal stå i . I stedet indsætter vi 3 linjer i alle vores includes som følger:
<!--
Titlen på dokumentet
Beskrivelsen kommer her og er uden linjeskift
Keywords, Separeret, Med, Komma, Her
-->
Efter at havde gjort dette, skal vi ha' lavet noget kode som kan hente dette data ind. Dette indebærer at indlæse filen som vi vil include og hente de pågældende informationer. Dette kan vi bla. gøre ved brug af funktionen file(). Denne funktion læser en side ind i et array hvorefter vi nemt kan tilgå de enkelte linjer. Lad os se på noget kode:
<?php
//opsætning af metatags og titel
$info=file('indhold/'.$_GET['side'].'/'.$side.'.php'); //hent filen
if (trim($info[0])=='<!--' && trim($info[4])=='-->') { //hvis linje 1 og linje 5 indeholder start og slut for kommentar
$titel=trim($info[1]); //hent linje 2
$beskrivelse=trim($info[2]); //hent linje 3
$keywords=trim($info[3]); //hent linje 4
} else {
$titel='Din standard titel';
$beskrivelse='Din standard beskrivelse';
$keywords='Dine,standard,keywords';
}
?>
Bemærk at vi bruger trim() til at fjerne linjeskift og unødige mellemrum før og efter info.
Igen indsættes metatags med den samme kode:
<title><?php echo $titel; ?></title>
<meta name="Description" content="<?php echo $beskrivelse; ?>" />
<meta name="Keywords" content="<?php echo $keywords; ?>" />
Og endnu engang voila, denne gang bare med metatags der bliver hentet ud fra de enkelte sider.
Eksempler og download
Som altid skal I ikke snydes for den nemme løsning:
- Download eksempel med metode 1
- Download eksempel med metode 2
- Se eksempel 1
- Se eksempel 2
- Dynamiske sider med PHP include
- Videre med PHP Include