Template + PHP include?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Erwin Augustijn

Erwin Augustijn

05/09/2012 14:57:52
Quote Anchor link
Beste allemaal,

Ik ben voor een studieopdracht bezig met het maken van een eenvoudig templatesysteem.
Hierbij wordt een HTML-bestand ingelezen door PHP en via preg_replace_callback worden de ###tags### en ***tags*** gefilterd en omgezet in een andere waarde, waarbij de ###tags### een gewone tekst bevatten, maar ***tags*** een module in moeten inladen.

Nu loop ik tegen het probleem aan dat wanneer ik via een preg_replace_callback een PHP-pagina probeer te includen, de inhoud bovenaan de pagina komt te staan, zoals in het voorbeeld hieronder.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
echo "Dit is inhoud uit het PHP-bestand";
?>

<!doctype html ...>
<html>
...
</html>


De bedoeling is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<!doctype html ...>
<html>
<head>
...
</head>
<body>
...
<?
echo "Dit is inhoud uit het PHP-bestand";
?>

</body>
</html>


Ik heb al geprobeerd om via een virtual include een PHP-pagina in te voegen, maar ook dit doet hij niet.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<!--#include virtual="modules/nieuws.php"-->


Weet iemand hoe ik toch ervoor kan zorgen dat ik de PHP-inhoud op de plaats van ***tags*** kan laten verschijnen in de template?

PHP-code: http://plaatscode.be/141892/
Template-code: http://plaatscode.be/141893/
Wachtwoord: phphulp

In bovenstaande code stond de volgende code voordat ik het met file_get_contents uitprobeerde:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if($res['type']==3){
return include($res['replace']);
}

Met file_get_contents werd de code als "platte" tekst weergeven, maar de bedoeling is dat de include op de plaats van de tag als PHP-code wordt uitgevoerd.
Gewijzigd op 05/09/2012 19:50:39 door Erwin Augustijn
 
PHP hulp

PHP hulp

26/01/2020 12:42:32
 
Mebus  Hackintosh

Mebus Hackintosh

05/09/2012 15:07:27
Quote Anchor link
Dit heb ik een aantal jaren geleden ooit eens gemaakt: http://www.phphulp.nl/php/script/overig/template-parser/770/

Maar Smarty zal natuurlijk stukken beter zijn.
 
Kris Peeters

Kris Peeters

05/09/2012 15:56:32
Quote Anchor link
Erwin Augustijn op 05/09/2012 14:57:52:
... In bovenstaande code stond de volgende code voordat ik het met file_get_contents uitprobeerde ...


Heb je sindsdien vooruitgang geboekt, met file_get_contents ?
 
Erwin Augustijn

Erwin Augustijn

05/09/2012 15:59:28
Quote Anchor link
Nee, dan weergeeft hij de PHP-code als "platte" tekst.
 
Eddy E

Eddy E

05/09/2012 16:50:40
Quote Anchor link
Wat wil je dan?
 
Erwin Augustijn

Erwin Augustijn

05/09/2012 19:45:10
Quote Anchor link
Normaal gesproken zou ik dit doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<div id="header">
<?php
include("header.php");
?>

</div>


Nu heb ik alleen een HTML-template tot mijn beschikking (i.c.m. de "templateparser" van school, zie eerste post):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<div id="header">
***HEADER***
</div>


De bedoeling is dat op de plaats van ***HEADER*** de code van "header.php" wordt uitgevoerd.

Nu is het zo dat wanneer ik ***HEADER*** via een preg_replace_callback vervang door include("header.php");, de paginainhoud bovenaan de pagina wordt weergeven - en dus niet op de plaats van ***HEADER***.
Ik ken de reden hiervan: eerst wordt de serverside code geparst en vervolgens pas de clientside code.
Ik zoek nu alleen nog een oplossing waardoor het wel mogelijk is om via PHP een werkende PHP-code in te voegen op de plaats van een templatetag.
Gewijzigd op 05/09/2012 19:46:06 door Erwin Augustijn
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.