Indelen pagina PHP - templates?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rutje1

rutje1

21/12/2007 23:48:00
Quote Anchor link
Hoii,

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
 
PHP hulp

PHP hulp

25/05/2020 16:27:49
 
Joren de Wit

Joren de Wit

22/12/2007 09:43:00
Quote Anchor link
Zorg dat je de business logica (php) en de output (html) gescheiden houd in je scripts. Eerst heb je dus een lading php code die de includes verzorgt, output sla je zo lang op een variabele.

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.
 
Rutje1

rutje1

22/12/2007 12:05:00
Quote Anchor link
Maar stel: ik maak dan bijv. forum.php en contact.php etc.
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.
 
Kristoff

kristoff

22/12/2007 13:58:00
Quote Anchor link
als de naam van het logo hetzelfde blijft dan moet je gewoon het bestand vervangne he ;)

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.
 
Rutje1

rutje1

23/12/2007 17:42:00
Quote Anchor link
Ik weet niet of het bekend is, maar hoe werkt bijv. deze website?
Ook door gebruik te maken van templates? Ik vind dit namelijk een erg goed voorbeeld voor hoe ik mijn site zou willen hebben.
 
Rutje1

rutje1

26/12/2007 13:38:00
Quote Anchor link
bump ^
 
Joren de Wit

Joren de Wit

26/12/2007 13:56:00
Quote Anchor link
Je neemt 1 index.php waarin de hele layout verwerkt zit. Je neemt daarin bijvoorbeeld een div #content waarin je de variabele content van de verschillende pagina's kunt weergeven.

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
 
Rutje1

rutje1

26/12/2007 14:04:00
Quote Anchor link
Dit is me gelukt, maar omdat de pagina onder de header tags wordt geinclude kan ik niet een titel zetten.

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.
 
Joren de Wit

Joren de Wit

26/12/2007 14:15:00
Quote Anchor link
Quote:
... omdat de pagina onder de header tags wordt geinclude ...
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...

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
 
Rutje1

rutje1

26/12/2007 14:22:00
Quote Anchor link
Ok, dus ik moet alls proberen te scheiden.
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(isset($_SESSION['gebruiker'])){
?>

<a href="meldmisbruik.php">Bericht melden</a>
<?php
}
?>


Hoe zou ik dan bijv. zoiets kunnen scheiden van elkaar? Dus HTML en PHP?
 
Joren de Wit

Joren de Wit

26/12/2007 14:28:00
Quote Anchor link
Als ik paginas wil includen waarin ook business logica voorkomt, zorg ik altijd dat ik de output van die pagina's opsla in een array $aContent. Als ik de pagina dan include in bijvoorbeeld mijn index.php, heb ik de array $aContent waarin alle output van die pagina staat.

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...
 



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.