Avatar billede leftism Praktikant
03. juni 2006 - 22:04 Der 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;


Håber noget kan hjælpe! =)
Avatar billede mclemens Nybegynder
03. juni 2006 - 22:32 #1
Jeg bruger denne her:
http://www.eksperten.dk/spm/712213#rid6285464

så er produkter fra url'en = $durled[0]
og lamper fra url'en = $durled[1]

- og så ville jeg spørge via.:

<?php

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';
}
}

?>
Avatar billede mclemens Nybegynder
03. juni 2006 - 22:33 #2
ups :D

if((isset($durled[0])&&($durled[0]=="produkter")){

rettes til:

if((isset($durled[0])&&($durled[0]=="produkter")&&(isset($durled[1])){
Avatar billede mclemens Nybegynder
03. juni 2006 - 22:35 #3
niks,
if((isset($durled[0]))&&($durled[0]=="produkter")&&(isset($durled[1]))){
- så stopper jeg spam...
Avatar billede leftism Praktikant
04. juni 2006 - 12:19 #4
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?

Ja, jeg er ny hvad angår PHP! ;-)
Avatar billede mclemens Nybegynder
04. juni 2006 - 13:38 #5
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å...
Avatar billede leftism Praktikant
04. juni 2006 - 17:45 #6
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.
Avatar billede mclemens Nybegynder
04. juni 2006 - 18:35 #7
Mig der ikke uddyber nok ... her er et IKKE testet eksempel
... hjælper nedenstående på det eller skal du bruge mere?


.htaccess
RewriteEngine on
RewriteRule ^([0-9a-zA-Z/-]+)/$ index.php
RewriteRule ^([0-9a-zA-Z/-]+)/index.php index.php


<?php

/* Url splitter */
$durl=str_replace("?","indexphp",$_SERVER[REQUEST_URI]);
$durl=ereg_replace("[]<>£\$\€\+ ^¨~'*.:,;_½§!\"#¤%&()=`|´}{[]","",$durl);
$durl=preg_replace("@indexphp.*@","",$durl);
$durl=preg_replace("'/'","",$durl,1);
$durled=explode("/",$durl);

/* 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


<?php

/* Url splitter */
$durl=str_replace("?","indexphp",$_SERVER[REQUEST_URI]);
$durl=ereg_replace("[]<>£\$\€\+ ^¨~'*.:,;_½§!\"#¤%&()=`|´}{[]","",$durl);
$durl=preg_replace("@indexphp.*@","",$durl);
$durl=preg_replace("'/'","",$durl,1);
$durled=explode("/",$durl);




/* 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...";

?>
Avatar billede mclemens Nybegynder
04. juni 2006 - 18:41 #8
[ 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 :)
Avatar billede leftism Praktikant
04. juni 2006 - 18:49 #9
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! =)
Avatar billede mclemens Nybegynder
04. juni 2006 - 18:55 #10
ok :)
Avatar billede mclemens Nybegynder
16. juni 2006 - 12:13 #11
Tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB