FAQ |
Kalender |
2009-07-26, 22:47 | #1 | |||
|
||||
Mycket flitig postare
|
Nu har ja googlat i nästan 2 timmar och läst på 20-30 olika tutorials.
Men det finns inte en enda som verkar beskriva hur man gör för att inkludera en fil i html med php stöd. Finns bara hur man inkluderar antingen i toppen eller i slutet, eller bara just det typ. Till ex såhär: index.php - ska alltså innehålla nått som gör detta: $Där {INCLUDE HERE} i template filen är då ska denna fil 'meny.html' inkluderas index_template.html bla bla bla bla bla bla {INCLUDE HERE} bla bla bla Såhär ser EN BIT av min index.php fil ut just nu: Kod:
<?php switch ($_GET['f']) { default: *include "indextemplate.html"; break; } ?> Frågan är bara vad ja ska skriva i php filen för att den ska fixa det. |
|||
Svara med citat |
2009-07-27, 00:36 | #2 | ||
|
|||
Medlem
|
Det finns flera möjliga alternativ. Du kan använda PHP's Output Buffer för att fånga upp det (genererade) innehållet från filerna du inkluderar. Därefter får du söka igenom innehållet du buffrat upp och göra en search/replace för att sedan inkludera nästa fil - och börja om från början. Jag skulle antagligen implementera detta som en rekursiv funktion...
En annan lösning skulle vara att öppna upp filen för läsning och gå igenom den rad för rad istället för hela filen på en gång. Alternativ 2 innebär att PHP-kod i filen inte kommer att exekveras. |
||
Svara med citat |
2009-07-27, 09:12 | #3 | ||
|
|||
Klarade millennium-buggen
|
Vet inte riktig vad du far efter men php:s include() kommando inkluderar en fil på stället.
Sen att få php-kommandon att tolkas i en fil som slutar på .html kräver väl att du ställer in mime-typen så att även .html-filer går genom php-tolken. Annars är det enklare att byta ändelse på den fil du inkluderar. Men det kanske inte var det du tänkte uppnå? |
||
Svara med citat |
2009-07-27, 09:26 | #4 | ||
|
|||
Medlem
|
Hmm .. du får kanske göra en egen includefunktion som tar en html-fil som argument, och den fil som den ska inkludera som andra argument. Sen parsar du igenom första argumentet och letar upp {include here} och sen ersätter det med <?php include(andra argumentet); ?> ... eller något sånt? Iofs kanske det inte går så bra att skriva i den, men jag tror att en egen funktion är vägen att gå..
|
||
Svara med citat |
2009-07-27, 11:35 | #5 | |||
|
||||
Bara ett inlägg till!
|
$fh = fopen('indextemplate.html', 'r');
while(!feof($fh)) { $line = fgets($fh); if(strpos($line, '{INCLUDE HERE}') !== false) { $include = file_get_contents('includefile'); $line = str_replace('{INCLUDE HERE}', $include, $line); } echo $line; } fclose($fh); eller kortare (men något ineffektivare): $file = file_get_contents('indextemplate'); $include = file_get_contents('includefile'); $file = str_replace('{INCLUDE HERE}', $include, $file); echo $file; |
|||
Svara med citat |
2009-07-27, 14:19 | #6 | |||
|
||||
Mycket flitig postare
|
Citat:
Men istället för att man måste skriva om det är "just den filen" då man kanske använder många såna här: Kod:
switch ($_GET['f']) { case "1": include "file.html"; break; $file = file_get_contents('indextemplate'); den delen av koden på nått sätt och göra så det funkar på alla tänkabara template filer? |
|||
Svara med citat |
2009-07-27, 14:27 | #7 | |||
|
||||
Mycket flitig postare
|
Citat:
|
|||
Svara med citat |
2009-07-27, 14:39 | #8 | |||
|
||||
Mycket flitig postare
|
Istället för att lägga koden utanför "case 1" "case 2" osv
Så skrev ja om koden inann för VARJE "case" och då funkar det riktigt bra. Precis som ja vill. Så istället för: Kod:
<?php switch ($_GET['f']) { default: include "indextemplate.html"; break; } ?> Kod:
switch ($_GET['f']) { case "1": $file = file_get_contents('indextemplatefile.html'); $include = file_get_contents('included.html'); $file = str_replace('{INCLUDED}', $include, $file); echo $file; break; Tack ska du ha för den kodsnutten |
|||
Svara med citat |
2009-07-27, 15:35 | #9 | |||
|
||||
Bara ett inlägg till!
|
Du kan sätta en variabel vid varje case, och köra min kod efteråt (där du använder variabeln för att bestämma vilken fil som ska inkluderas). Det är extremt grundläggande kunskaper.
|
|||
Svara med citat |
2009-07-27, 15:40 | #10 | ||
|
|||
Medlem
|
Inte överväg att faktiskt använda en redan existerande template-motor istället för att skriva din egna?
Lista med 19 st mer eller mindre bra templete-motorer: http://www.webresourcesdepot.com/19-promis...mplate-engines/ |
||
Svara med citat |
Svara |
|
|