layout en content scheiden, hoe doen jullie dat?

Pagina: 1
Acties:
  • 111 views sinds 30-01-2008
  • Reageer

  • Palomar
  • Registratie: Februari 2000
  • Niet online
ff disclaimer, dit is geen simpele utfs vraag oid, maar ik ben gewoon nieuwsgierig hoe echte 'prof' webdesigers dit aanpakken. :)

Ik ben al een paar jaar met websites bezig en heb sinds een paar maanden ook PHP ontdekt. Ik heb mezelf al aardig wat aangeleerd en nu vind ik het erg handig om de layout en content te scheiden. Dit doe ik op de volgende manier:

1 pagina layout.php (gekoppeld aan een stylesheet) met menuutje, plaatjes etc. en een <?PHP INCLUDE ?> waarin de contentpagina's worden ingevoegd (dmv. layout.php?pagina=blaat.htm).
Die contentpagina's zijn dus doodeenvoudige html pagina's met <head> <body> etc. zonder uitgebreide opmaak.

Is dit nou een goede manier hoe ik dit doe? :? Of kan dit beter, efficienter? Met de search vind ik wel woorden als 'templates', is dat hetzelfde principe als ik doe? Ik gebruik btw. geen database.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

templates, zoals jezelf al zegt :P

Das ultieme scheiding. Je zult ze echter toch moeten vullen, en meestal uit een database (wat voor zin hebben templates en php anders :?)

Even zoeken op "PHP Templates" en je bent al een heel eind verder...

Jouw manier vinnik overigens niet echt aan te raden. Het wordt nogal onoverzichtelijk en gaat in de weg zitten met werkelijk dynamische content. Beter is dan met soort van modules te werken. Bijvoorbeeld header-include met style, scripts etc, een menu-include, footer include, etc etc. En je pagina's wel los te houden.

  • Palomar
  • Registratie: Februari 2000
  • Niet online
ja ik weet dat daarvoor templates gebruikt worden.. maar het is me nog niet helemaal duidelijk of de manier die ik gebruik nou hetzelfde principe is? En of er aan de manier die ik gebruik ook nadelen kleven (die ik nu nog niet ontdekt heb)
Das ultieme scheiding. Je zult ze echter toch moeten vullen, en meestal uit een database (wat voor zin hebben templates en php anders )
ik vul ze toch op :? Zoals ik zei gewoon een html bestandje includen. Ik gebruik dus geen database oid.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Op zondag 23 juni 2002 23:39 schreef rick_h het volgende:
ja ik weet dat daarvoor templates gebruikt worden.. maar het is me nog niet helemaal duidelijk of de manier die ik gebruik nou hetzelfde principe is? En of er aan de manier die ik gebruik ook nadelen kleven (die ik nu nog niet ontdekt heb)
[..]

ik vul ze toch op :? Zoals ik zei gewoon een html bestandje includen. Ik gebruik dus geen database oid.
Jawel, maar een template is database-driven, anders heeft het absoluut geen zin. En ga niet lopen vragen wat een template is, want daar heb je al een paar topics over gevonden zei je in je post dus ik neem aan dat je daar al ff naar gezocht hebt :P

Denk bijvoorbeeld aan een product-template'je:
code:
1
2
3
4
5
6
7
8
9
<html>
<title>{naam}</title>
<body>
{naam}<br><br>
{omschrijving}<br><br>
{prijs}<br><br>
<a href="bestel.php?id={id}">bestel</a>
</body>
</html>

Dan snap je zelf ook wel waarom het geen zin heeft zonder database-content :P

  • Palomar
  • Registratie: Februari 2000
  • Niet online
als ik zoek naar templates kom ik zoveel (voor mij) moeilijke termen tegen, vandaar dat ik niet precies snap of het echt een andere manier is dan die ik toepas.

Maar bedankt voor je uitleg, ik zie dat het totaal iets anders is. :)

En dan over de manier die ik gebruik met simpelweg
code:
1
2
3
4
5
6
7
8
9
10
11
<head>
<title>pagina</title>
</head>

<body?
Welkom op mijn pagina!

<?php include "$pagina";>?>

(C) 2002
</body>

is dat een nette manier of kan dat beter/efficienter?

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Op zondag 23 juni 2002 23:49 schreef rick_h het volgende:
als ik zoek naar templates kom ik zoveel (voor mij) moeilijke termen tegen, vandaar dat ik niet precies snap of het echt een andere manier is dan die ik toepas.

Maar bedankt voor je uitleg, ik zie dat het totaal iets anders is. :)

En dan over de manier die ik gebruik met simpelweg
*knip*
is dat een nette manier of kan dat beter/efficienter?
Zie mn eerste post. Ik ben er niet weg van, omdat het met dynamische content en een grotere website een beetje een zooitje wordt. Dan zou ik dus gaan voor de losse includes. Is wat flexibeler en overzichtelijker.

  • Palomar
  • Registratie: Februari 2000
  • Niet online
Op zondag 23 juni 2002 23:52 schreef Bosmonster het volgende:

[..]

Zie mn eerste post. Ik ben er niet weg van, omdat het met dynamische content en een grotere website een beetje een zooitje wordt. Dan zou ik dus gaan voor de losse includes. Is wat flexibeler en overzichtelijker.
o sorry had je eerste post niet goed gelezen (of had je later geedit?).

Maar ik maak maar kleine, niet echt dynamische websites. Dus de manier die ik nu gebruik zou wel gewoon kunnen? Bij het includen neemt ie wel de <head> en <body> tags mee.. kan dit ook problemen opleveren? De source wordt dan iets als:
code:
1
2
3
4
5
6
7
8
9
<head>
</head>

  <body>
     <head>
     </head>
     <body>
     </body>
   </body>

dat vind ik er niet zo fris uitzien ;)

  • Yellow|A
  • Registratie: Maart 2000
  • Niet online

Yellow|A

Allotaja of rock and rollah

code:
1
2
3
4
5
6
7
8
<head>
</head>
  <body>
     <head>
     </head>
     <body>
     </body>
   </body>

Waar komt dat in godsnaam vandaan? Frontpage 93?

|{ brrr }] |


Verwijderd

Op zondag 23 juni 2002 23:59 schreef rick_h het volgende:

[..]

o sorry had je eerste post niet goed gelezen (of had je later geedit?).

Maar ik maak maar kleine, niet echt dynamische websites. Dus de manier die ik nu gebruik zou wel gewoon kunnen? Bij het includen neemt ie wel de <head> en <body> tags mee.. kan dit ook problemen opleveren? De source wordt dan iets als:
code:
1
2
3
4
5
6
7
8
9
<head>
</head>

  <body>
     <head>
     </head>
     <body>
     </body>
   </body>

dat vind ik er niet zo fris uitzien ;)
Dan laat je de head en body tags toch weg uit het te includen document? Is dat nou zo moeilijk om te bedenken? :?

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 12:35
Als je al zo gaat beginnen
code:
1
include($pagina);


code:
1
blaat.php?pagina=hoi.html

Ben je echt fout bezig, omdat ik nu ook leuke bestandspaden erachter kan opgeven zodat ik veel info kan achterhalen. Ga er nooit vanuit dat informatie die je krijgt correct is, dus valideer in dit geval of $pagina niet één of andere achterbakse methode is een bestand te openen waarvan dat niet de bedoeling is.

Verder is CSS natuurlijk een goede manier, maar nóg beter is alles in XML uitpoepen (liefst nog met DOMXML ook) en dan XSL-bestand er overheen gooien, de manier waarop ik dat in mn nieuwe software doe :).

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Op maandag 24 juni 2002 07:49 schreef ddc het volgende:
Als je al zo gaat beginnen
code:
1
include($pagina);


code:
1
blaat.php?pagina=hoi.html

Ben je echt fout bezig, omdat ik nu ook leuke bestandspaden erachter kan opgeven zodat ik veel info kan achterhalen. Ga er nooit vanuit dat informatie die je krijgt correct is, dus valideer in dit geval of $pagina niet één of andere achterbakse methode is een bestand te openen waarvan dat niet de bedoeling is.

Verder is CSS natuurlijk een goede manier, maar nóg beter is alles in XML uitpoepen (liefst nog met DOMXML ook) en dan XSL-bestand er overheen gooien, de manier waarop ik dat in mn nieuwe software doe :).
Hij heb geen database-content. }:O Maar gefeliciteerd met je nieuwe software :P

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

Op zondag 23 juni 2002 23:34 schreef rick_h het volgende:
ff disclaimer, dit is geen simpele utfs vraag oid, maar ik ben gewoon nieuwsgierig hoe echte 'prof' webdesigers dit aanpakken. :)
Kewl, zijn wij profs? ;) :P

Ik doe het met scripting. Ik maak 1 tempate, gooi er een bak script achter, en dat laadt losse content naar delen van de pagina toe, zonder page-reloads. Da's imo ook de toekomst :P (woei, gewaagde uitspraak)

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • Palomar
  • Registratie: Februari 2000
  • Niet online
Op maandag 24 juni 2002 01:13 schreef Yellow het volgende:
code:
1
2
3
4
5
6
7
8
<head>
</head>
  <body>
     <head>
     </head>
     <body>
     </body>
   </body>

Waar komt dat in godsnaam vandaan? Frontpage 93?
sommigen doen er ook echt alles aan om quotes zo te verdraaien zodat degene nog belachelijker wordt gemaakt :z ja ik gebruik frontpage 93 met windows 3.1, ben je nu blij...
Op maandag 24 juni 2002 07:49 schreef ddc het volgende:
Als je al zo gaat beginnen
*
Ben je echt fout bezig, omdat ik nu ook leuke bestandspaden erachter kan opgeven zodat ik veel info kan achterhalen.
hoe bedoel je dat precies? Wat voor bestandspaden?? Dan moet je toch eerst weten welk path erachter moet?

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Op maandag 24 juni 2002 09:31 schreef rick_h het volgende:

[..]

sommigen doen er ook echt alles aan om quotes zo te verdraaien zodat degene nog belachelijker wordt gemaakt :z ja ik gebruik frontpage 93 met windows 3.1, ben je nu blij...
[..]

hoe bedoel je dat precies? Wat voor bestandspaden?? Dan moet je toch eerst weten welk path erachter moet?
Das niet zo moeilijk. Het is makkeljk te achterhalen welke webserver op welk OS je draait en op die manier dus vitale systeembestanden op te vragen dus (password files oid).

Verwijderd

Ik maak ook wel eens pagina's als volgt:

een top.php:
PHP:
1
<?<html><head><!-- alles in de head en nog meer in de head --></head><body><table> <tr>  <td>?>

en een bottom.php:
PHP:
1
<?  </td> </tr></table></body></html>?>

En vervolgens 1 van de content pagina's (bv nieuws.php):
PHP:
1
<?while (list(delijst) = mysql_fetch_row($result) {echo "[img]\"$afb\"><br><br>$bericht<br><br>";}?[/img]

vervolgens aanroepen: index.php?content=nieuws
<?
include "top.php";
include "$content.php";
include "bottom.php";
?>
[/php]

Volgens mij is dit wel een nette manier. Als er iets beters bestaat ben ik nieuwschierig...... (-:

er zal vast iets beters bestaan, maar tot nu toe werkte ik altijd op bovenstaande manier.

edit: de php tags van GoT zetten er zelf <? en ?> bij, dus die moet je af en toe even wegdenken ;)

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Op maandag 24 juni 2002 07:49 schreef ddc het volgende:

Verder is CSS natuurlijk een goede manier, maar nóg beter is alles in XML uitpoepen (liefst nog met DOMXML ook) en dan XSL-bestand er overheen gooien, de manier waarop ik dat in mn nieuwe software doe :).
* oh,when? ziet niet in waarom de ene techniek beter zou zijn ten faveure van de ander, alleen maar om de eigen technische kennis ten toon te spreiden.

maar goed...show us your software..versie 99.x van je forum? >:) :P

"You're only as good, as what you did last week."


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 12:35
oh,when?: maar goed...show us your software..versie 99.x van je forum? >:) :P
Kom maar op icq >:)

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 14:45

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

Tsja, ben dan wel geen prof, maar toch groot aanhanger van templates met Php: FastTemplate. Ik weet alleen niet wat het minst serververkeer kost: gewoon echo's of templates die stuk voor stuk geparsed moeten worden :?

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Op maandag 24 juni 2002 10:55 schreef Prammenhanger het volgende:
Tsja, ben dan wel geen prof, maar toch groot aanhanger van templates met Php: FastTemplate. Ik weet alleen niet wat het minst serververkeer kost: gewoon echo's of templates die stuk voor stuk geparsed moeten worden :?
serververkeer :? :P

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 14:45

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

Op maandag 24 juni 2002 11:00 schreef Bosmonster het volgende:

[..]

serververkeer :? :P
Tja, dataverkeer is niet echt op zijn plaats denk ik :?

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


  • gitaarwerk
  • Registratie: Augustus 2001
  • Niet online

gitaarwerk

Plays piano,…

hmz.. idd templates.. headers en footers en content inladen via php :*

Ontwikkelaar van NPM library Gleamy


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 12:35
gitaarwerk:
hmz.. idd templates.. headers en footers en content inladen via php :*
Wat jij beschrijft zijn vaak geen templates maar meer het gemiddelde phpbb 1.0 systeem.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Op maandag 24 juni 2002 11:08 schreef Prammenhanger het volgende:

[..]

Tja, dataverkeer is niet echt op zijn plaats denk ik :?
daarom snapte ik niet echt wat je bedoelde met serververkeer? Bedoel je load? De server moet naast de opgevraagde php ook de template inlezen en parsen, maar het gaat om minimale verschillen.

Verwijderd

In moet het toch met ddc eens zijn dat de combinatie XML, XSLT en XHTML een goede oplossing is, die je waarschijnlijk ook werk bespaart in de toekomst.

In principe bevat het XML document je content, de XSL stylesheet bevat je template, en die twee samen leveren je de complete pagina. Je hebt er geen database voor nodig, want als je de XML structuur duidelijk en handig houdt, dan kun je die heel gemakkelijk vullen met de rauwe tekst.

  • Victorio
  • Registratie: Januari 2001
  • Laatst online: 01-02-2024
Op zondag 23 juni 2002 23:49 schreef rick_h het volgende:
als ik zoek naar templates kom ik zoveel (voor mij) moeilijke termen tegen, vandaar dat ik niet precies snap of het echt een andere manier is dan die ik toepas.

Maar bedankt voor je uitleg, ik zie dat het totaal iets anders is. :)

En dan over de manier die ik gebruik met simpelweg
code:
1
2
3
4
5
6
7
8
9
10
11
<head>
<title>pagina</title>
</head>

<body?
Welkom op mijn pagina!

<?php include "$pagina";>?>

(C) 2002
</body>

is dat een nette manier of kan dat beter/efficienter?
Idd, zo doe ik het ook.
Alleen dan nog ff zorgen dat als er geen &pagina is of als &pagina niet bestaat hij een error pagina geeft.

Verwijderd

Ik heb het zo gedaan:

layout.php
code:
1
2
3
function html($foo, $bar) {
print "<table><tr><td>Foo:$foo</td><td><hr>Bar:$bar</td></table>";
}

index.php
code:
1
2
3
4
5
6
7
8
require("dbacces.php");
require("layout.php");

$result = mysql_query('SELECT foo, bar FROM database') OR die('Database error');
$row = mysql_fetch_row($result);
mysql_free_result($result);

html($row[0], $row[1]);

Dit werkt prima, en voor elke "skin" die je wil gebruiken maak je een andere layout.php.. :7

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

*zucht*

Het includen van een bestand waarvan de bestandsnaam wordt bepaald door userinput vraagt om problemen!!!

Ik snap ook niet waarom mensen dit blijven doen:

Wat is nu het verschil tussen:
1 bestand met:
PHP:
1
<?include("header");include($content);include("footer");?>

of meerdere bestanden met daarin:
PHP:
1
<?include("header");//hele content uitgeschreveninclude("footer");?>

???

Je maakt het jezelf alleen maar lastig door de eerste manier te gebruiken. Je moet vanalles verzinnen om ervoor te zorgen dat de boel een beetje veilig blijft en uiteindelijk gaat dus het voordeel van 1 layout bestand compleet verloren. Je layout wordt nu gewoon in je header en je footer gezet. Je layoutscript bestaat toch ook uit een stuk voor de include en een stuk na de include?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 12:35
Janoz: Stukje over includen
Mja, zoals ik al eerder aangaf is het inderdaad onveilig ja. Verder is het header-content-footer principe absoluut niet echt template-waardig.

Echter, het includen van bestanden n.a.v. parameters die worden meegegeven is wel handig om duidelijke scheidingen aan te geven tussen verschillende pagina's, en voorkomt ook dat er teveel code wordt ge-execute.

Daarnaast is het ook niet goed om álles apart te doen, omdat je dan een overload krijgt aan bestanden in de directory waarin het script wordt uitgevoerd (of subdirs daarvan).

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Dat het niet template waardig is snap ik. Ik heb het ook nergens een template genoemd :). In veel gevallen echter is de oplossing die ik aangaf goed te gebruiken en een stuk veiliger en makkelijker te implementeren. Daarnaast hoef je dan ook geen get-parameters te gebruiken bij het gewoon rondsurfen in je site wat de caching en indexing door searchengines ook weer ten goede komt.

Het aantal bestanden blijft trouwens gewoon zo goed als gelijk. Ipv dat je een content include in je layout, include je een layout in je content.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Creesch
  • Registratie: Februari 2002
  • Laatst online: 17:39

Creesch

bla bla!

content in een database.. 1 pagina met layout, daar alles in oproepen (scheelt je gelijk weer een hoop pagina's maken)
\/

Verwijderd

ff uit me hoofd getikt hoor kan brak zijn.
Als je wil dat mensen niet zelf een bestand kunnen kiezen kun je iets like dit doen:

boven.html:
code:
1
2
3
4
5
6
<html>
<head>
<title>blaaat</title>
<!-- styles hier -->
</head>
<body>

onder.html
code:
1
2
3
(c) 2002 bla bla
</body>
</html>

index.php
PHP:
1
<?$pages[1] = "home.html";$pages[2] = "info.html";$pages[3] = "nieuws.html";$pages[4] = "contact.html";include ("boven.html");include ($pages[$id]);include ("onder.html");?>

vraag je pagina's zo aan:
index.php?id=1, index.php?id=2, index.php?id=3 enz. enz.

Deze manier gebruik ik niet zelf, ik doe alles database driven of gebruik mijn CMS.

Nou jah succes iig.. Dit is een hele nette en overzichtelijke + veilige manier.

Verwijderd

Op maandag 24 juni 2002 23:04 schreef craze_ het volgende:
content in een database.. 1 pagina met layout, daar alles in oproepen (scheelt je gelijk weer een hoop pagina's maken)
\/
[kick deze noob]
damnz lees het topic ff ³^^#$^³€!@#1€¡² .
hij wil geen database!!!
[/kick deze noob]
Pagina: 1