Hoi gast0515,
Ik zou het nooit zelf kunnen bedenken.
Ja, ik dacht eerst ook dat het niet zou kunnen, maar ik kreeg opeens een vlaag van verstandsverheldering. Ben er nu mee bezig om er patent op aan te vragen.
=====
Is het de enige mogelijkheid, vraag ik me sowieso af?
Behalve het eerder genoemde AJAX kan ik niets anders verzinnen (behalve een <iframe>, maar daar waren we juist zo mooi van af). - Als iemand nog een andere oplossing heeft, moet zij/hij zich hier maar melden: ik ben benieuwd!
=====
Kan ik .php voor ALLE pagina's houden?
Dat kan altijd, want als een
.htm pagina omgedoopt wordt tot
.php pagina, blijft de html van de pagina gewoon werken. En als er geen
<?php ... ?> opdrachten in staan, zal de php (pre-processing) machine op de server niets doen, en regelrecht de aangetroffen html naar de bezoeker sturen.
Baat het niet, dan schaadt het niet! En sterker: een php-pagina heeft voordelen. *)
=====
Je schrijft: Klaar: vijf-kolommen-home.php
Maar later geeft je verwijzing naar een html pagina.
Vandaar....
Ja, het maakt niet uit, welke uitgang je het ge-includeerde fragment geeft. Dat kan
.htm zijn, of
.php, of
.txt of wat je maar wilt. Je kunt zelfs ook zelf een mooie eigen
.uitgang verzinnen! Als de verwijzing ernaar maar dezelfde naam heeft. **)
Voorbeeld:
HTML:
<!Doctype html>
<title>mooie fragmentnaam</title>
<?php include("includes/header.fragment"); ?>
Hierboven staat de kop, ingesloten als php-include met de naam "header.fragment"!
</html>
Deze sla ik op als: "mooie-fragmentnaam.php".
Dan maak ik ook een bestandje:
Dat sla ik op als: "header.fragment" (voor de overzichtelijkheid stop ik altijd alle fragmenten in een directory "includes"; als ook de namen van de fragmenten een beetje duidelijk zijn, kan je snel iets aanpassen).
Met "header.a2010" of "header.koffiemetsuikerenmelkgraag" zou het ook gelukt zijn. :d
=====
Het is wel de bedoeling dat alle 5 pagina's op gegeven moment zichtbaar zijn en niet slechts 1.
Die snap ik niet. In het
voorbeeld kan dat gewoon: op elk moment kan elk van de 5 inhoud-kolommen via een klik op het nummertje tevoorschijn komen, op elke pagina waar de rechterkolom in staat via de php-include.
=====
Welke code moet ik nou tussen de <div> plaatsen, op de standard pagina's?
Als mijn pagina met 5 kolommen 'inhoud' heet, moet ik gewoon deze plaatsen:
<?php include("inhoud.php"); ?>
Kleine correctie: de "pagina met 5 kolommen" is geen echte (complete) pagina, maar een html-fragment dat op elke pagina geplaatst wordt.
Als je het fragment van
<div id="rightsideOuter"> ... t/m ...
</div> "inhoud.php" noemt, dan zet je in de html van een gewone pagina (homepage of andere pagina):
HTML:
...
<body>
<div id="leftside">
...
</div>
<div id="content">
...
</div>
<!-- rechterkolom via php-include -->
<?php include("includes/inhoud.php"); ?>
<!-- einde rechterkolom via php-include -->
<div class="clearL"><!-- ! --></div>
<!-- eventueel hier nog een #footer-div -->
</body>
</html>
Net zoals in de
broncode van het voorbeeld te zien is (waar de include "vijf-kolommen-rechterkolom.htm" heet).
Ga maar eens lekker uitproberen op een paar testpagina's!
Met vriendelijke groet,
CSShunter
_________
*) Als je van een
.htm pagina een
.php pagina maakt met als allereerste regel (nog vóór het Doctype):
HTML:
<?php header("Content-type: text/html; charset=utf-8"); ?>
dan wordt de charset in elk geval goed opgepakt (daarnaast moet de charset ook in het bekende <meta> regeltje opgenomen worden).
Het toevoegen van zo'n http-header met deze php-opdracht is een dringende
aanbeveling van het Kwaliteitsmodel Webrichtlijnen. Dat is dus een voordeel van het omzetten van een
.htm pagina in een
.php pagina.
**) De browser heeft nu eenmaal de opdracht gekregen om alles op een pagina (dus ook de ingevoegde fragmenten) te interpreteren als "text/html". Dat gebeurt dan ook, onafhankelijk van de uitgang.