[OPGELOST] Template in één file
Ik heb een template gemaakt in mijn index pagina (index.php).
Nu heb ik een classje gemaakt om gebruikers te kunnen registreren en in te loggen etc. Als je registreert ga je naar bijv. register.php. Aangezien de template in de index gebouwd is, zie je op register.php een witte pagina.
Ik wil de index dus altijd de template op laten bouwen. Kan dit, of moet ik de template in elke pagina die ik maak kopiëren?
Ik zou het natuurlijk zo kunnen doen dat ik met een getje op de index pagina check wat de gebruiker wil doen.
Bij voorbaat dank,
Tim
Gewijzigd op 16/02/2012 13:22:39 door Tim van Norde
of je maakt gewoon een template pagina en die template pagina gebruik je voor elke pagina?
Het was dus mijn vraag of het anders kan :)
Wat voor editor gebruik je?
Reshadd wat maakt editor in dit geval uit ?
Tim je moet zorgen dat als je op bijvoorbeeld register drukt je naar de pagina
index.php?p=register gaat. En dan maak je in de content een script die dan register.php include dus :
Code (php)
Die code zet je in je content. Waar je dus de informatie wilt hebben.
Oh trouwens het is een heel simpel script.
Als iemand nu naar
index.php?p=bla
gaat dan probeert het script bla.php te includen, dus dan moet je nog even een file exist ofzo erop zetten.
Gewijzigd op 16/02/2012 06:53:13 door Bas van de Steeg
jou manier kan inderdaad ook maar ik vroeg welke editor hij gebruikt omdat je met Dreamweaver bijv. dit automatisch kan laten doen ;)
Maak daarvan
if(empty($_GET)){
$_GET is een array; een lege array kan je met empty controleren
isset en count. En verder moet je nooit zomaar wat includen! Anders zou je alle pagina's die op de server staan moeten includen.
Zelf zou ik het zo doen:
- Je maakt 1 bestand aan, genaamd index.php. Hierin zet je de hele code, dus met doctype, head, header, navigatie, content, footer, enz. Gewoon alsof je een hele pagina opmaakt.
- De content van elke pagina, dus het geen wat in de content div staat, plaats je in een apart file die je bijv. in een map /pages/ stopt.
- Open index.php en op de plaats waar je normaal je content zou plaatsen plaats je nu een PHP include, die je afhankelijk kan maken van de get variabele.
Een voorbeeld:
En zo kun je hem verder uitbouwen.
@Bas, gebruik niet $_GET == false maar Zelf zou ik het zo doen:
- Je maakt 1 bestand aan, genaamd index.php. Hierin zet je de hele code, dus met doctype, head, header, navigatie, content, footer, enz. Gewoon alsof je een hele pagina opmaakt.
- De content van elke pagina, dus het geen wat in de content div staat, plaats je in een apart file die je bijv. in een map /pages/ stopt.
- Open index.php en op de plaats waar je normaal je content zou plaatsen plaats je nu een PHP include, die je afhankelijk kan maken van de get variabele.
Een voorbeeld:
Code (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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<!doctype html>
<html lang=nl>
<head>
<meta charset=utf-8>
<title>Je titel (deze kan je aanpassen met PHP)</title>
<link rel=stylesheet href=css/screen.css>
</head>
<body>
<header class="main">
<h2>Je site naam</h2>
<header>
<nav>
<ul>
<li><a href="/?page=home">Home</a></li>
<li><a href="/?page=contact">Contact</a></li>
</ul>
</nav>
<div id=content>
<?php
define('PAGES_DIR', '/pages/'); // de map waarin alle pagina's staan
if( isset($_GET['page']) )
{ // als je ?page=pagina-naam in de url hebt staan
switch($_GET['page')
{
case 'home' :
// als je ?page=home invult
include PAGES_DIR.'home.php';
break;
case 'contact' :
// als je ?page=contact invult
include PAGES_DIR.'contact.php';
break;
case 'about' :
// als je ?page=about invult
include PAGES_DIR.'about.php';
break;
default :
// in alle andere gevallen => homepage
include PAGES_DIR.'home.php';
}
}
else
{ // geen ?page in de url
include PAGES_DIR.'home.php'; // include de homepagina
}
?>
</div>
---------------
/pages/home.php
---------------
<h1>Welkom</h1>
<p>Hier de homepagina content</p>
------------------
/pages/contact.php
------------------
<h1>Contact</h1>
<form id="contact-form">
</form>
<html lang=nl>
<head>
<meta charset=utf-8>
<title>Je titel (deze kan je aanpassen met PHP)</title>
<link rel=stylesheet href=css/screen.css>
</head>
<body>
<header class="main">
<h2>Je site naam</h2>
<header>
<nav>
<ul>
<li><a href="/?page=home">Home</a></li>
<li><a href="/?page=contact">Contact</a></li>
</ul>
</nav>
<div id=content>
<?php
define('PAGES_DIR', '/pages/'); // de map waarin alle pagina's staan
if( isset($_GET['page']) )
{ // als je ?page=pagina-naam in de url hebt staan
switch($_GET['page')
{
case 'home' :
// als je ?page=home invult
include PAGES_DIR.'home.php';
break;
case 'contact' :
// als je ?page=contact invult
include PAGES_DIR.'contact.php';
break;
case 'about' :
// als je ?page=about invult
include PAGES_DIR.'about.php';
break;
default :
// in alle andere gevallen => homepage
include PAGES_DIR.'home.php';
}
}
else
{ // geen ?page in de url
include PAGES_DIR.'home.php'; // include de homepagina
}
?>
</div>
---------------
/pages/home.php
---------------
<h1>Welkom</h1>
<p>Hier de homepagina content</p>
------------------
/pages/contact.php
------------------
<h1>Contact</h1>
<form id="contact-form">
</form>
En zo kun je hem verder uitbouwen.
dat ziet er nice uit wouter ;) je brengt me op ideen
En zo mooi is het niet eens gescript. Kijk eens hoe frameworks het doen of hoe je het doet met het MVC pattern, dat is pas mooi... ;)
ja maar voorheen gebruikte ik altijd sjablonen dus dit is wel heel wat al :p
Reshadd farid op 16/02/2012 11:27:10:
ja maar voorheen gebruikte ik altijd sjablonen dus dit is wel heel wat al :p
Dan heb ik hier wat leesvoor voor je ;)
http://www.phpro.org/tutorials/Model-View-Controller-MVC.html
Toevoeging op 16/02/2012 11:47:50:
thanks ozzie! ik zal het even bekijken
Dankjewel voor je voorbeeldcode Wouter, ik had het tijdelijk op de manier waarop jij het beschrijft gedaan.
Blijkt dus dat het zo het beste is (Behalve dat MVC beter zou zijn, kende ik niet eens!)
Dankjewel iedereen, het is hiermee opgelost!