Archief - Include

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Fransz

Legacy Member
Ik heb een simpele html website met 48 pagina's. Aangezien het menu en de footer kunnen wijzigen in de toekomst, wil ik dit niet telkens 48 maal aanpassen. Is PHP include de beste oplossing voor deze situatie? Die 48 pagina's hebben dus telkens dezelfde menu & footer maar zoals gezegd wil ik de eventuele aanpassingen hiervoor later minimaliseren.

Gorthe

Legacy Member
Volgens mij is dit de beste en meest simpele oplossing. Gewoon twee aparte bestanden maken: header.php en footer.php. Je moet wel zien dat de andere 48 .html-bestanden ook benaamd worden als .php-bestanden. Anders gaan je header.php en footer.php niet communiceren met je includes in de andere pagina's. Zorg er ook voor dat je code overal netjes en overzichtelijk staat want dat kan enorm helepen als je in de toekomst iets moet terugvinden of aanpassen ;)

bealzebub

Legacy Member
Als je voor de rest nog geen serverside rendering gebruikt zou ik zeggen van gewoon een static site generator te gebruiken. Je krijgt het beste van twee werelden: je kan lokaal met includes werken (verschilt van generator tot generator hoe je dat doet) en je verhindert dat de webserver je pagina's door een PHP interpreter moet halen, wat vooral op shared hosting voor snellere pagina's zal zorgen.

Er zijn er zoveel, een snelle zoekopdracht levert dit op: https://duckduckgo.com/?q=static+site+generator&t=osx

Fransz

Legacy Member
Ik snap iets niet. Nu bevat de homepagina een index.php met in een bepaalde div een PHP include.

Ok.

Maar die php include bevat ook 5 links naar nieuwe pagina's.

Dan heb ik opnieuw .php bestanden nodig en dan verlies ik mijn doel.


Ideaal wil ik 1 index.php bestand voor het menu - footer met daarin een div die gewoon de inhoud van iedere pagina bevat. Ik denk zelfs dat ik een array nodig heb met IF condities ofzo, klopt dit? Hoe doe ik dit aub?

Ik heb dit ooit eens gezien ergens maar ben het kwijt. Dat moet iets zijn als:

Code:
<?php
	$page = $_GET['page'];
	$pages = array('page1', 'page2', 'page3');
	if (!empty($page)) {
		if(in_array($page,$pages)) {
			$page .= '.php';
			include($page);
		}
		else {
		echo 'Page not found. Return to
		<a href="index.php">index</a>';
		}
	}
	else {
		include('page1.php');
	}
?>

Dan kan ik gewoon een link leggen met deze code: <a href="index.php?page=page1.php">page 1</a>
Maar dat lijkt dus niet te werken.

Fransz

Legacy Member
Ik heb denk ik iets gevonden, blijkbaar moest ik googlen naar dynamic php include:

Code:
				<div id="content">
					<?php  
					$page = (isset($_GET['page']))? $_GET['page'] : '';  
  
					switch ($page)  
					{   
						case 'home':  
							include('home.php');  
							break;  
  
						case 'test':  
							include('test.php');  
							break;  

						case '':  
							include('home.php');  
							break;  
  
						default:  
							include('404.php');  
							break;  
					}  
					?> 
				</div>

bealzebub

Legacy Member
Als ik zie wat je probeert te doen, ga dan gewoon voor een lokale static site generator. 404 opvangen in Apache/Nginx conf/htaccess en al de rest gewoon door de static site generator laten genereren. Je URLs zullen er een pak beter uitzien en ook properder geindexeerd worden door Google. Wat voor jou misschien nog een veel betere reden kan zijn: static site generators moet je geen programmeerwerk meer voor doen die dan niet werkt.

Wat jij probeert te doen heeft niets met dynamische content te maken, de content van de site is statisch. Je probeert gewoon DRY te werken en dat is goed gedacht.

En ik herhaal het nog eens: PHP heeft een aanzienlijke performance hit, op shared hosting kan dat makkelijk tot 40% verschil maken. In jouw geval kan je het gebruik van PHP op de server makkelijk vermijden, doe dat dan ook.

PHP en andere serverside talen zijn zeker nodig, in het geval waar je de eindgebruiker een makkelijke manier wil geven om content aan te passen bv. Voor includes om zo repetition in je code te vermijden is het echter één van de minst goeie oplossingen. Bovendien ga je op 48 pagina's nog altijd 48 keer die includes herhalen of ga je zoals in jouw voorbeeld 48 conditions hebben om naar de juiste partial te verwijzen. Verre van DRY dus&#8230;

Static site generators heb je in alle talen en in alle soorten, zoek diegene die jou het beste ligt en die makkelijk installeert op je computer (Ruby-based generators op Windows zijn dikwijls kut bv., pak er dan liever één in PHP). Ze bieden trouwens nog veel meer voordelen dan alleen jouw include probleem:
  • Updaten van alle URLs bij het wijzigen van bestandsnamen en mappenstructuren
  • Automatisch maken van sitemaps, menustructuren, table of contents, etc.
  • Gebruik van preprocessors zoals SASS, Stylus, LESS
  • Bundling, minifying en uglifying van Javascript
  • Cache busting
  • Geen nood aan caching mechanismes
  • Geen kans op PHP of development bug exploits
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan