03. juni 2006 - 22:04Der er
10 kommentarer og 1 løsning
Én htmlside (skabelon) til alle sider
Jeg skal i gang med en hjemmeside med omkring 30 undersider. På nuværende tidspunkt fungerer siden med ca. 30 html dokumenter - ét for hver side. Nogle af siderne ligger i flere niveauer, dvs. domain.dk/produkter/lamper/ .
Hvad vil være den mest hensigtsmæssige måde at få én side til at fungere som skabelon, hvor undersidernes indhold så inkluderes i?
Kan en PHP switch bruges, når der er tale om så mange undersider (ca. 30) eller er der en mere hensigtsmæssig måde?
<?php switch($_GET['id']) { case 'lamper': include 'lamper.php'; break; case 'lastbiler': include 'lastbiler.php'; break;
Er det muligt, med ovenstående, at lave en unik titel (<title>) på hver side og eksempelvis også et unikt billede? Altså; kan man bruge ovenstående til andre unikke features på de enkelte sider?
Det korte svar er: Ja, det gør jeg selv... - jeg gør det dog med mysql og så includer jeg varens navn som title ellers bruger jeg en standard forside title...
du kan jo have en variabel med <?php $title="et eller andet" ?> og så varierer denne afhængig af hvilken side der includes og evt. sætte variablen via. den includede side ... og herefter echo dine html start tags og <title>".$title."</title> og det samme med metaer også...
Jeg misforstår muligvis, men det er jo ikke altid at teksten fra URL'en passer i title-tagget - eksempelvis domain.dk/produkter/traebaenke/ . I det tilfælde skal der jo stå Træbænke og ikke Traebaenke i title-tagget.
Den mulighed du nævner, den henter teksten direkte fra URL'en, ik!? =)
Jeg overvejer at kigge nærmere på noget ala Wordpress, men føler også bare at det er overkill, når der ikke er behov for at siderne skal redigeres løbende.
/* Standard titel / metaer */ $mytitle="hejsa"; $metakeyw="min, forside, yes"; $metadesc="min sides beskrivelse"; $metatit="min meta titel";
/* check variabel om det er første request */ $myreq=0;
/* Check om første sti er produkter */ if((isset($durled[0])&&($durled[0]=="produkter")){ if(is_file('mitfilarkiv/produkter/'.$durled[1]'.php')){ include'mit_fil_arkiv_med_hemmeligt_navn/produkter/'.$durled[1]'.php';$myreq=1; } }
echo"din doctype , html , head , meta-keyword ".$metakeyw." , meta-description ".$metadesc." meta-title ".$metatit." mit title tag ".$mytitle." ... og en masse andre html tags...";
/* includer undersiden igen for at outputte dens html if($myreq==1)include'mit_fil_arkiv_med_hemmeligt_navn/produkter/'.$durled[1]'.php';
else{
echo"hovedsidens html";
}
?>
og så i undersiderne har du noget i denne stil:
<?php
if(myreq==0){ $mytitle="hejsa min produkt sides titel"; $metakeyw="min, produkt, side, yes"; $metadesc="min produkt sides beskrivelse"; $metatit="min produkt sides meta titel"; }
else{
/* Ved request anden omgang så echo html output */ echo"min html"; }
?>
Man kan jo også include en speciel header fil istedet for at include produktsiden to gange det er en del mere effektivt ... i det tilfælde skal du køre noget i denne stil:
.htaccess RewriteEngine on RewriteRule ^([0-9a-zA-Z/-]+)/$ index.php RewriteRule ^([0-9a-zA-Z/-]+)/index.php index.php
/* Check om første sti er produkter */ if((isset($durled[0])&&($durled[0]=="produkter")){ if(is_file('mitfilarkiv/produkter/'.$durled[1]'.php')){ include'mit_fil_arkiv_med_hemmeligt_navn/produkter/'.$durled[1]'.php'; } }
else{
/* Standard titel / metaer */ $mytitle="hejsa"; $metakeyw="min, forside, yes"; $metadesc="min sides beskrivelse"; $metatit="min meta titel";
include"head.php";
echo"hovedsidens html";
}
?>
og så i undersiderne har du noget i denne stil:
<?php
$mytitle="hejsa min produkt sides titel"; $metakeyw="min, produkt, side, yes"; $metadesc="min produkt sides beskrivelse"; $metatit="min produkt sides meta titel";
include"../stien-til-head-php/head.php";
/* Ved request anden omgang så echo html output */ echo"min html"; }
?>
og head.php:
<?php
echo"din doctype , html , head , meta-keyword ".$metakeyw." , meta-description ".$metadesc." meta-title ".$metatit." mit title tag ".$mytitle." ... og en masse andre html tags...";
[ Den mulighed du nævner, den henter teksten direkte fra URL'en, ik!? =) ] - Det kan man gøre men af samme årsag, som den du selv er inde på samt problemer med mellemrum samt kommaer og en del andre tegn, som jeg har valgt at fjerne med ereg_replace - derfor er det nok ikke ideelt ...
- M.h.t. navnet så er det også muligt at opbevare det i en database hvor du får navnet på produktet fra (evt. meta's også) ... den løsning bruger jeg ... eller en af de ovenstående hvor navnet eksisterer som en variabel på den includede side...
P.s.: Kender ingen CMS systemer eller lignende og har aldrig kigget på dem :)
Jeg tager et nærmere kig på det du har posted lidt senere - der skal nok være noget jeg kan bruge! Hvis du laver et svar, kan jeg give dig dine point! =)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.