Pagina met menu in php

Content:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
Duis autem dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit au gue duis dolore te feugat nulla facilisi. At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi, nietwaar?


Structuur

Alleen de code voor de kop <h1> en de <div id="content"> zit in deze pagina, naast wat er in de <head> staat.
Voor de code van de <div id="menu"> wordt met een PHP-include regeltje verwezen naar het bestand menu-alleen.htm.

Het menu-fragment

Dat bestaat uitsluitend uit het de uitgeknipte code van het menu. Het is dus geen echte complete html-pagina (met een Doctype, <head>, <body> enz. (zie voetnoot 1).

Kijk je los naar deze menu-alleen.htm, dan ziet die er nogal kaal uit: alle css-styles ontbreken. Maar de css zit in de pagina waar het fragment wordt ingeplakt, dat komt vanzelf goed (zie ook de figuur opde vorige pagina). Het gaat om de broncode van het menu, en die staat er prima in (zie broncode!).


Code pagina-met-menu.php

De PHP-include regel is makkelijk en verder volgt gewoon de rest van de pagina

<!Doctype ... enz.>
<html ... enz.>
<head>
   ... met meta's, stylesheet-link, enz.
</head>

<body>
   <h1>Pagina met menu in html</h1>

   <?php include("includes/menu-alleen.htm"); ?>

   <div id="content">
      <h2>Content:</h2>
      <p>Lorem ipsum dolor sit amet, consectetuer ...
      ... enz.
      quas molestias excepturi, nietwaar?
      </p>
   </div>

</body>
</html>

Attentie

In de include-regel moet het relatieve pad vanaf de verwijzende pagina staan (dus geen absoluut pad dat begint met "http://www.domeinnaam.nl/..." enz., anders werkt het niet. Dat is om veiligheidsredenen: anders zou je zomaar PHP-fragmenten van andere sites kunnen overnemen.

Te doen

De pagina waar de <?php include("includes/menu-alleen.htm"); ?> in is gezet, moet nu omgezet worden in een .php pagina. Daardoor weet de server dat eerst de PHP-machine zijn werk moet doen, en dat daarna pas de pagina (in z'n geheel) naar de bezoeker kan worden gezonden. (er zijn uitzonderingen, zie voetnoot 2)
Maar ook het omzetten naar php-pagina is simpel!
Het kan gewoon door de uitgang .htm (of .html) te veranderen in .php, dat is alles (zie voetnoot 3).

Hierna kunnen fragment en pagina geĆ¼pload worden, en alles draait meteen.

Bezichtiging

Als gezegd: in de broncode van de bezoeker is er niets meer van het plakwerk te zien.
De oorspronkelijke code van de php-pagina kan door u als bezoeker dus niet rechtstreeks bekeken worden!
Voor bezichtiging is de oorspronkelijke code van hierboven op deze pagina demo-pagina-met-menu.htm opgenomen. Dit is een .htm-bestand met de PHP-include er in (zie broncode), maar het menu komt niet tevoorschijn omdat de PHP-machine op de server niet is aangezet vanwege de .htm extensie.
De uitgang .php maakt het verschil!
Deze pagina demo-pagina-met-menu.php is de .php-versie, en heeft exact dezelfde code als de .htm-versie: nu doet het menu het wel.

Terug: Pagina met knipsel | PHP-includes in een notendop)


Voetnoten:

  1. Dit is dus het essentiƫle verschil met een frame- of iframe-pagina: dat zijn juist wel complete html-pagina's met alle toebehoren erbij. Via het frame als doorkijkvenster kijk je dan naar een andere pagina. Bij een PHP-include blijf je op dezelfde pagina, waar het fragment is ingemonteerd.
  2. Servers kunnen ook instructies krijgen om alles, ook .htm- en .html-bestanden, eerst langs de PHP-machinerie te laten gaan.
  3. Omzetten van de extensie kan lokaal door de pagina op te slaan als .php-bestand, of in de Verkenner.
    Vaak is het echter handiger om de pagina's lokaal als .htm-bestand te houden, en deze (na uploaden) alleen op de server om te zetten in een .php-pagina (bv. met FileZilla; zie ook gebruiksaanwijzing).
    Op die manier kan een pagina lokaal in de browsers bekeken en getest worden (met uitzondering van het niet verschijnende menu, maar dat is toch standaard), zodat er niet een lokale PHP-server nodig is.