Meest effectieve opbouw van de code van mijn pagina's
Ik ben bezig met het maken van een webwinkel. Voor het script hiervan gebruik ik een bepaalde opbouw voor de code van mijn pagina's, maar volgens mij is dit niet het meest handig/effectief. Ik doe het nu als volgt:
Het gaat om een webwinkel waarbij het hoofdzakelijk draait om de categorie pagina, subcategorie pagina en de productpagina. Om mooie url's hierbij te krijgen maak ik gebruik van de volgende url opbouw:
Categorie pagina: www.url.nl/index.php?cat=computers (wordt omgezet naar www.url.nl/computers)
Subcategorie pagina: www.url.nl/index.php?cat=computers&subcat=spelcomputers (wordt omgezet naar www.url.nl/computers/spelcomputers)
Product pagina: www.url.nl/index.php?cat=computers&subcat=spelcomputers&product=nintendo-wii (wordt omgezet naar www.url.nl/computers/spelcomputers/nintendo-wii.html)
In mijn header.php controleer ik met de volgende code op welke pagina de bezoeker is:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
if (isset($_GET['product']) && isset($_GET['subcat']) && isset($_GET['cat']))
{
$pagina = 'product'; // Deze gebruik ik in de index.php om te kijken welke pagina geinclude moet worden
// Verder worden hier andere variabelen gemaakt zoals die voor de metatags, de <title>, etc.
}
elseif (isset($_GET['subcat']) && isset($_GET['cat']))
{
$pagina = 'subcat'; // Deze gebruik ik in de index.php om te kijken welke pagina geinclude moet worden
// Verder worden hier andere variabelen gemaakt zoals die voor de metatags, de <title>, etc.
}
elseif (isset($_GET['cat']))
{
$pagina = 'cat'; // Deze gebruik ik in de index.php om te kijken welke pagina geinclude moet worden
// Verder worden hier andere variabelen gemaakt zoals die voor de metatags, de <title>, etc.
}
else
{
$pagina = 'home'; // Deze gebruik ik in de index.php om te kijken welke pagina geinclude moet worden
}
?>
if (isset($_GET['product']) && isset($_GET['subcat']) && isset($_GET['cat']))
{
$pagina = 'product'; // Deze gebruik ik in de index.php om te kijken welke pagina geinclude moet worden
// Verder worden hier andere variabelen gemaakt zoals die voor de metatags, de <title>, etc.
}
elseif (isset($_GET['subcat']) && isset($_GET['cat']))
{
$pagina = 'subcat'; // Deze gebruik ik in de index.php om te kijken welke pagina geinclude moet worden
// Verder worden hier andere variabelen gemaakt zoals die voor de metatags, de <title>, etc.
}
elseif (isset($_GET['cat']))
{
$pagina = 'cat'; // Deze gebruik ik in de index.php om te kijken welke pagina geinclude moet worden
// Verder worden hier andere variabelen gemaakt zoals die voor de metatags, de <title>, etc.
}
else
{
$pagina = 'home'; // Deze gebruik ik in de index.php om te kijken welke pagina geinclude moet worden
}
?>
In de index.php doe ik dan o.a. het volgende:
Code (php)
Dit systeem werkt dus gewoon goed voor deze pagina's. Ik wil echter bijvoorbeeld ook nog gewoon een contact pagina en een faq pagina kunnen maken. De url daarvan moet dan bijvoorbeeld gewoon iets zijn als www.url.nl/contact.php of www.url.nl/contact/. Ik weet alleen niet zo snel hoe ik deze op een goede manier kan inpassen in mijn huidige structuur. Normaal zou ik dan een contact.php aanmaken en daar bovenaan dan header.php includen en onderaan footer.php, maar dat gaat hier niet goed werken. Dit omdat dan toch ook nog de code van home.php geladen wordt. Hoe kan ik er het beste voor zorgen dat dit dus niet gebeurt?
Ik hoop dat jullie mijn probleem snappen en dat jullie me willen helpen met het geven van de beste oplossing. Zelf heb ik het idee dat ik op de verkeerde manier bezig ben, maar weet niet hoe ik het anders moet doen. Ik hoop dat jullie hiermee willen helpen.
Bij voorbaat dank! :-)
Gewijzigd op 01/01/1970 01:00:00 door Roderick Velo
Je kan eens op google zoeken naar 'mod-rewrite' (aangenomen dat je apache gebruikt). Tevens zijn er op phphulp tutorials over te vinden.
Het probleem is dat ik ook nog een contact pagina wil hebben, contact.php dus bijvoorbeeld. Ik wil deze gaan inpassen in mijn systeem, maar vraag mij af hoe ik dat het beste kan doen. Als ik bijvoorbeeld nu een contact.php aanmaak en daar dan bovenaan header.php include, dan vervolgens de code voor het contact script plaats en als laatste de footer.php include, dan gaat het met het huidige systeem fout. Het script in de header.php zal er dan namelijk voor zorgen dat het stukje
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
else
{
$pagina = 'home'; // Deze gebruik ik in de index.php om te kijken welke pagina geinclude moet worden
}
?>
else
{
$pagina = 'home'; // Deze gebruik ik in de index.php om te kijken welke pagina geinclude moet worden
}
?>
uitgevoerd zal worden. Maar dat zou natuurlijk niet zo moeten zijn. Dan wordt namelijk in de index.php weer home.php geinclude waardoor de home pagina ook getoond wordt.
Daarom vraag ik me dus af wat ik nu het beste kan aanpassen aan mijn systeem zodat ik de contact.php makkelijk kan inpassen.
Ik hoop dat mijn probleem nu duidelijk is. :-)
Gewijzigd op 01/01/1970 01:00:00 door Roderick Velo
Die van mij ziet er altijd zo uit
-------------------------------------------
# Start rewrite engine
RewriteEngine On
# Catch non existing files and/or folders (treat as optimized urls)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [NC,L]
# Van http://site.com naar http://www.site.com
RewriteCond %{HTTP_HOST} ^mijnwebsite\.com [NC]
RewriteRule ^(.*)$ http://www.mijnwebsite.com [L,R=301]
-------------------------------------------
Het tweede blok zegt dat alles moet verwijzen naar de index.php in je webroot. Dus www.mijnsite.nl/contact komt dan binnen in je index.php
Met $_SERVER['REQUEST_URI'] in je index.php (ik heb hier een klasse voor aangemaakt) kan je de /contact string ophalen.
Vergeet niet je base href in te stellen als metadata (html header), dus:
<base href="http://www.mijnsite.nl" />
Dit zorgt ervoor dat de locatie naar je image directory en je js en css files in stand blijft, ongeacht je op /contact zit, of /contact/nogiets.
Het derde blok is ook belangrijk. Dit zorgt ervoor dat als mensen naar mijnsite.nl gaan, dat ze dan geredirect worden naar www.mijnsite.nl.
(zo zien search engine bots (zoals googlebot), je site niet meer als 2 sites, maar als 1 site). Stel dat je dit niet gebruikt, dan wordt mijnsite.nl anders geranked dan www.mijnsite.nl.
edit
pfffff. laat maar. Klaarblijkelijk had ik je vraag ook verkeerd begrepen (had je bovenstaande reactie niet gelezen)
Gewijzigd op 01/01/1970 01:00:00 door Barman V