Indelen pagina PHP - templates?
Ik ben bezig om een eigen website te programmeren in PHP. Ok, dat klinkt nog vaag maar ik zal het proberen verder uit te leggen.
De pagina is nu als volgt ingedeeld:
[INDEX.PHP]
include boven.php
include menu.php
include $_GET['pagina']
include onderkant.php
Let niet op de php code, gaat mij enkel om indeling.
--
In het geval ik nu een forum/bericht maak zou ik graag willen dat de titel in de browser veranderd. bijv. www.mijnsite.nl/index.php?pagina=bericht. Maar dan komt er een probleem voor. De tags <title></title> worden namelijk in het bestand boven.php opgeven. Terwijl ik de pagina met het bericht pas daaronder oproep (onder header). Nu lukt het bijv. ook niet om een doorverwijzing te maken omdat de header al is gesloten.
Nu is mijn vraag eigenlijk hoe ik dit probleem het beste kan oplossen en wat verstandig is.
Op dit moment roep ik elke pagina op via index.php?pagina=....
Is het op website die geprogrammeerd zijn in php gebruikelijk om templates te gebruiken? Op dit moment heb ik dat namelijk ingedeeld in index.php.
Ook zie ik bijv. hier op het forum dat er in de url egt staat showtopic.php (bestand dus) terwijl de indeling en de pagina er hetzelfde uitziet als de homepage.
Hoe kan ik het beste een pagina bestaande uit PHP indelen?
Ervaring heb ik nog niet, dus ik hoop dat er ervaren mensen zijn hier die mij kunnen helpen.
Alvast bedankt!
Mvg Rutje1
Pas als alle logica afgehandeld is, begin je met de output van je html. Het mooie is dat je in het logica gedeelte mooi de titel van de pagina hebt kunnen bepalen en deze in een variabele hebt kunnen zetten. Deze kun je nu echoën tussen de <title> tags in de <head> sectie.
Hoe kan ik dan de pagina's hetzelfde eruit laten zien? Als ik bijv. logo wil veranderen zal ik dat in alle bestanden moeten doen.
maar als je de layout eenvoudig wilt veranderen voor alle pagina's zou ik opteren voor een template systeem.
zo kan je als je de layout veranderd weinig of niets verkeerd doen aan je php code. en krijg je toch een andere layout.
Ook bv als je de layout door iemand anders wilt laten doen dat niets van php afkent kun je beter met templates kiezen.
Dus voor dit geval zou ik opteren voor een template systeem.
Ook door gebruik te maken van templates? Ik vind dit namelijk een erg goed voorbeeld voor hoe ik mijn site zou willen hebben.
bump ^
Verder include je, afhankelijk van welke pagina in de url aangegeven is, de betreffende pagina in je index.php en geeft je de inhoud van die pagina weer in je content div.
Hier vind je een scriptje met een voorbeeld van hoe je dat aan zou kunnen pakken:
Includen van paginas
ps. Dit voorbeeld is overigens alleen geschikt als er op de te includen pagina's alleen maar output staat. Als je ook business logica (php) in die pagina's hebt zitten die eerst uitgevoerd moet worden, zou ik de pagina's ergens aan het begin van mijn script includen. De output sla je dan zolang op in een variabele en echo je pas op een later moment...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Dat zou dus helemaal neit kunnen als ik met een forum bijv. de titel van een bericht als titel in de browser wil hebben.
Hoe zou ik dit kunne oplossen? En waarom heeft phphulp.nl bijv. pagina's zoals showtopic.php listtopic.php etc.
Paar vragen wat erg belangrijk is voor mijn indeling. Ik hoop dat u mij verder kunt helpen.
Quote:
Dat is dus niet de juiste aanpak. De <head> tags zijn al onderdeel van de output die je naar de browser verstuurt, dat betekent dat je op dit moment logica en output niet gescheiden houdt...... omdat de pagina onder de header tags wordt geinclude ...
Includen van de pagina doe je nog voordat je je eerste regel HTML uitgespuugd hebt. De output die de geinclude pagina genereert, sla je op in een variabele om te voorkomen dat deze al geoutput wordt voordat er enige html naar de browser verstuurd is.
In de pagina die je include kun je dus ook bijvoorbeelde een variabele $titel aanmaken. Deze kun je dan in je <head> sectie weer gebruiken om de pagina-titel te maken. Wat jij in $titel zet, bepaal je natuurlijk zelf. In geval van een forum, kan dat bijvoorbeeld de titel van een bericht zijn.
ps. Naar de opbouw van de huidige versie van PHPHulp zou ik niet kijken. Deze is al vrij oud en zit niet altijd even logisch in elkaar. Vandaar ook dat er een nieuwe versie aankomt :)
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Maar stel ik heb een contactformulier.
Dan moet ik dus de code includen.
Maar hoe zorg ik er dan voor dat de velden van het contact formulier op de juiste plek verschijnen??
Zo heb ik bijv. ook wel eens een stukje code op de volgende manier:
Code (php)
Hoe zou ik dan bijv. zoiets kunnen scheiden van elkaar? Dus HTML en PHP?
Op mijn index.php kan ik dan verder alle logica afhandelen en tenslotte kan ik de html outputten naar de browser. Op het punt waarik wil dat de output van de geïnclude pagina weergegeven wordt, lees ik de array $aContent uit met een foreach loop en echo ik alle content...