problemen met includen van eenzelfde header-file in pagina's met verschillende locaties
home.php
producten.php
contact.php
header.inc.php
De header.inc.php "include" ik bovenaan in elke pagina (home.php, producten.php, contact.php).
De header.inc.php bestaat uit een header met daaronder navigatiemenu. Dit navigatiemenu in de header.inc.php navigeert o.m. naar <a href="home.php> </a>, <a href="producten.php> </a><a href="home.php> </a>
Nu wil ik niet al mijn pagina's in de root zetten, maar producten.php wil ik onderbrengen in een submap producten en gezien producten.php de header.inc.php (die in de root staat) "includes" kom ik in de problemen met mijn verwijzingen naar de url's.
Wat is nu eigenlijk de locatie van de header.inc.php? Is dat zijn werkelijke locatie in de root of verandert die locatie naargelang de locatie van de pagina waarin deze header "ge-include" is?
Wie weet raad?
Bedankkt!
Rootmap
- home.php
- contact.php
Submap overige
- producten.php
De includes map
- header.inc.php
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
// Includen header.inc.php in home.php of contact.php:
include_once('includes/header.inc.php');
// Includen header.inc.php in producten.php:
include_once('../includes/header.inc.php');
?>
// Includen header.inc.php in home.php of contact.php:
include_once('includes/header.inc.php');
// Includen header.inc.php in producten.php:
include_once('../includes/header.inc.php');
?>
URL
Plaats een volledige url.
Code (php)
1
2
2
home.php -> http://example.com/home.php
producten.php -> http://example.com/overige/producten.php
producten.php -> http://example.com/overige/producten.php
->
include_once('includes/header.inc.php');
/ gaat vanaf de serverroot, niet vanaf het documentroot.
home.php (code:)
<div id="undernavigationwrapper">
<div id="undernavigation">
<div id="undernavigationleft">
</div><!--end undernavigationleft-->
<div id="undernavigationright">
</div><!--end undernavigationright-->
</div><!--end undernavigation-->
</div><!--end undernavigationwrapper-->
<div id="contentwrapper">
<div id="content">
<div id="contentleft">
</div><!--end contentleft-->
<div id="contentmiddle">
</div><!--end contentmiddle-->
<div id="contentright">
</div><!--end contentrigth-->
</div><!--end content-->
</div><!--end contentwrapper-->
</body>
</html>
header.inc.php (code:)
Code (php)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jisolutions</title>
<link href="../css/main.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="container">
<div id="headerwrapper">
<div id="header">
header
</div><!--end header-->
</div><!--end headerwrapper-->
<div id="navigationwrapper">
<div id="navigationbar">
<div id="navigationmiddle">
<ul>
<li><a href="../home.php" id="home">Home</a></li>
<li><a href="../websites.php" id="websites">Websites</a></li>
<li><a href="../producten/producten.php" id="producten">Producten</a></li>
<li><a href="../contact.php" id="contact">Contact</a></li>
<li><a href="../nieuws.php" id="nieuws">Nieuws</a></li>
</ul>
</div><!--end navigationmiddle-->
<div id="navigationright"></div><!--end navigationright-->
</div><!--end navigationbar-->
</div><!--end navigationwrapper-->
wát gaat er fout?
Toevoeging op 16/10/2011 12:20:09:
ik heb iets ontdekt:
als ik in mijn header.inc.php het volgende doe dan werkt het wel:
<link href="css/main.css" rel="stylesheet" type="text/css" />
<li><a href="home.php" id="home">Home</a></li>
<li><a href="websites.php" id="websites">Websites</a></li>
<li><a href="producten/producten.php" id="producten">Producten</a></li>
<li><a href="contact.php" id="contact">Contact</a></li>
<li><a href="nieuws.php" id="nieuws">Nieuws</a></li>
dus dat betekent dat header.inc.php precies de locatie wil aannemen van de pagina waarin het "ge-include" is....
/home.php
/css/main.css
etc
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<!DOCTYPE html>
<html>
<head>
<title>Paginatitel</title>
<link rel="stylesheet" type="text/css" href="http://example.com/css/main.css">
</head>
<html>
<head>
<title>Paginatitel</title>
<link rel="stylesheet" type="text/css" href="http://example.com/css/main.css">
</head>
Dit include je dan gewoon zoals hierboven bescreven op het allereerste begin van de pagina.
Dan kom de body met het navigatiemenu (navigatie.inc.php):
Code (php)
1
2
3
4
5
2
3
4
5
<ul>
<li><a href="http://example.com/home.php">Home</a></li>
<li><a href="http://example.com/producten/producten.php">Producten</a></li>
<!-- Nog meer links -->
</ul>
<li><a href="http://example.com/home.php">Home</a></li>
<li><a href="http://example.com/producten/producten.php">Producten</a></li>
<!-- Nog meer links -->
</ul>
En in home.php ergens waar het menu moet komen:
En in producten.php:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
// Het navigatiemenu includen
include_once('../includes/navigatie.inc.php');
?>
// Het navigatiemenu includen
include_once('../includes/navigatie.inc.php');
?>
Zo heb ik het al verschillende keren gedaan en dat werkt perfect!
Met een / voor de css/main.css.
Dat betekent dus dat koppelingen naar pagina's of css-files in het bestand header.inc.php zelf, NIET vast mogen zijn, aangezien de locatie van header.inc.php varieert.
Ik vraag mij dus echt af hoe dit op te lossen. Ik kan toch niet alle pagina's van de website in mijn root gaan plaatsen? Meerdere headerfiles aanmaken lijkt me ook maar onefficiënt.
Jimmy
Jimmy
<link rel="stylesheet" type="text/css" href="/css/main.css" />
href="http://localhost/jisolutions/css/main.css"
Oh, jij werkt in een subfolder. In dat geval moet het /jisolutions/css/main.css zijn.
Ok alles werkt nu, toch weer wat nuttigs geleerd vandaag :)
Bedankt iedereen!
Jimmy