php menu

Om een website waaraan ik werk wat beter te kunnen beheren, wil ik een php gebaseerd menu maken, zodat ik niet elke pagina hoef aan te passen wanneer er een nieuw menu item bijkomt.

Na wat gegoogel, kom ik vooral oudere websites tegen die beschrijven hoe dit werkt, bijvoorbeeld deze uit 2003:

http://www.alistapart.com/articles/keepingcurrent/

Is dat nog steeds de meest gangbare aanpak, of zijn er in de loop van jaren betere/makkelijkere/etc technieken ontwikkeld?

Hier pagina met menu in php

http://www.wyodor.net/

Met deze code :
[code]
<?php include "pragmatic/menu.inc" ?>[/code]
en dit bestand :

http://www.wyodor.net/pragmatic/menu.inc

En hier idem soortgelijks in iWeb :

http://www.wyodor.net/mfi/Maaskant/How_To.html

En in HTML Egg :

http://www.wyodor.net/htmlegg/stellar/Stellar.html
http://www.wyodor.net/htmlegg/TallCard/
http://www.wyodor.net/htmlegg/SmallCard/

@koen,

Als [b]List A Part[/b] iets schrijft dan kun je er wel vanuit gaan dat het King is. Het is een zeer betrouwbare bron met geen enkel slecht artikel op de website al begrijp ik je twijfel aangezien het artikel al uit 2003 stampt.

Het zal er vooral op neer komen werkt het fijn, en nog steeds.
Als dat een werkende manier is om je Menu een active class te geven dan moet je dat nog steeds gebruiken en niet naar de datum kijken want het is sowieso niet iets dat veel gebruikt wordt. De meeste mensen kiezen op vandaag toch voor een CMS en dan zit zoiets direct ingebouwd.

Wat je ook kunt proberen is via HTML en CSS + de body tag met een unieke page-ID p/pagina.
Even heel snel.

http://pastebin.com/zW1A7SQV

In de CSS.
[code]
body.page-27.home { color: red; }
body.page-56.about { color: blue; }
body.page-44.contact { color: green; }
[/code]

Als je dit doet moet je wel weer iets hebben dat auto. een unieke Page ID aanmaakt in de body tag p/pagina.
Dus kortom, links of rechts-om die PHP include manier heb je sowieso nodig om een dynamisch menu te maken dus zou ik ook gelijk de manier gebruiken die List A Part aangeeft.

Waarschijnlijk is het meer werk om de code van List A Part aan te passen naar mijn voorbeeld dan gewoon Copy-/Paste van hun code en gebruiken.

Als iets werkt werkt het, bij dit soort dingen is er niet echt een betere manier.

** Hoelang gaat het nog duren voordat er IEMAND bij OMT de code tag probleem oplost.

Ok, bedankt. ALA is inderdaad een goede bron van info, en dat ga ik nu ook gebruiken.

Gebruik bij php includes nooit .inc maar bijvoorbeeld .inc.php
Als je php code gebruikt in je include bestand wordt dat niet geparsed als je het bestand direct opent.
Potentieel beveiligingslek...

Om die reden gebruiken we bij WordPress de <?php get_template_part('bestand.php'); ?> ipv de <?php include('bestand.php'); ?>

http://codex.wordpress.org/Function_Reference/get_template_part

Is
[code]<?php get_template_part('bestand.php'); ?>[/code]
specifiek voor WordPress, of werkt dat overal?

Ik ben er nog niet helemaal uit, ik test lokaal op mijn iMac wia de ingebowude Apache server, en php is ingeschakeld. Een heel simpel voorbeeld:

Mijn index.html:

[code]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>index</title>
</head>
<body>
<?php include("navigation.php"); ?>
<p>index</p>
</body>
</html>
[/code]

en de navigation.php file:
[code]
<nav>

</nav>
[/code]

Als ik index.html open, zie ik alleen het woord index, geen menu.

Wat zie ik over het hoofd?

ps: damn you OMT, voor de <p> tags in de code. :thumbsdown:

Wacht even, moet ik de extensie van alle html files veranderen naar .php? Als ik dat doe in het voorbeeld werkt het wel.

Ik zou liever .html blijven gebruiken, omdat dit een nieuwe versie van een bestaande website betreft.

Ja get_template_part() is waarschijnlijk een handigheidje van WordPress zelf en geen PHP standaard.

Weet je zeker dat navigation.php in dezelfde folder staat als de pagina die op dat moment getoond wordt ?

Anders probeer eens <?php include('/navigation.php'); ?>

Ik denk dat de files de php extensie moeten hebben.

Na nog wat meer gegoogel vond ik dat je een .htaccess file kunt maken die ervoor zorgt dat php zowel html als php extensies kan hebben, met de volgende regel:

[code]
AddHandler application/x-httpd-php5 .php .html
[/code]

Deze staat in dezelfde root-folder van de website. Maar dat werkt ook niet. :sad: