Ik ben bezig met het maken van een CMS en ben hiermee praktisch afgerond. Ik stuit echter nog op een probleempje.
Het werkt zo: in de database zit (wat nu van toepassing is) 1) een html-template en 2) de pagina's met hun inhoud, titel, url,...
Doormiddel van regex zoek ik in de "html-templates" naar tags, bijvoorbeeld {title} word vervangen door de titel van de huidige pagina en {content} door de inhoud. Nu zou ik echter het menu moeten parsen, iets complexer. Ik dacht eraan om een tag als deze te gebruiken: {menu}{menuitemurl}{menuitemtitle}{/menu}, zodat bijvoorbeeld dit in de praktijk ingevoegd word:
<ul class="menu">
{menu}<li><a href="{menuitemurl}"><strong>{menuitemtitle}</strong></a></li>{/menu}
</ul>
Alles tussen de {menu} en {/menu} tags moet dus herhaald worden naargelang het aantal pagina's (== aantal menuitems). Heeft iemand er een idee van hoe ik dit het best kan aanpakken? Nu geraakt ik er namelijk niet echt uit.
huidige index.php (waarmee de template en content geladen worden)
Bij voorbaat dank!
Het werkt zo: in de database zit (wat nu van toepassing is) 1) een html-template en 2) de pagina's met hun inhoud, titel, url,...
Doormiddel van regex zoek ik in de "html-templates" naar tags, bijvoorbeeld {title} word vervangen door de titel van de huidige pagina en {content} door de inhoud. Nu zou ik echter het menu moeten parsen, iets complexer. Ik dacht eraan om een tag als deze te gebruiken: {menu}{menuitemurl}{menuitemtitle}{/menu}, zodat bijvoorbeeld dit in de praktijk ingevoegd word:
<ul class="menu">
{menu}<li><a href="{menuitemurl}"><strong>{menuitemtitle}</strong></a></li>{/menu}
</ul>
Alles tussen de {menu} en {/menu} tags moet dus herhaald worden naargelang het aantal pagina's (== aantal menuitems). Heeft iemand er een idee van hoe ik dit het best kan aanpakken? Nu geraakt ik er namelijk niet echt uit.
huidige index.php (waarmee de template en content geladen worden)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| <?php // CMS HTML template parser include("config.php"); $link = mysql_connect($mysql['server'], $mysql['user'], $mysql['pass']); $db = mysql_select_db($mysql['db'], $link); // HTML template oproepen $template_query = "SELECT content FROM " . $mysql['template_html'] . " WHERE `site`='test.be'"; $template_result = mysql_query($template_query); if(mysql_num_rows($template_result) <= 0) { die('Fout: geen html-template gevonden'); } $template = mysql_fetch_assoc($template_result); // template: $template['content'] // Gevraagde pagina oproepen if($_GET['page'] && !empty($_GET['page'])) { $requestedpage = htmlentities($_GET['page']); } else { $requestedpage = "index"; } $requested_query = "SELECT open, title, content FROM " . $mysql['content'] . " WHERE `site`='test.be' AND `url`='" . $requestedpage . "'"; $requested_result = mysql_query($requested_query); $requested = mysql_fetch_assoc($requested_result); if(mysql_num_rows($requested_result) <= 0 || $requested['open'] == 0) { header('Location: 404.php'); } // Opgevraagde pagina parsen $finalpage = preg_replace("[{title}]", $requested['title'], $template['content']); $finalpage = preg_replace("[{content}]", $requested['content'], $finalpage); // Uiteindelijke pagina naar browser verzenden echo $finalpage; ?> |
Bij voorbaat dank!