Ik wil graag dat mijn CMS'je "vriendelijke URL's" genereert, bijvoorbeeld:
http://www.website.com/activiteiten/reizen/ardennen
Ik heb na wat nadenken wel een idee hoe ik dit moet oplossen, maar wil dit graag (vereenvoudigd) aan jullie voorleggen voordat ik daadwerkelijk aan de slag ga. Mijn idee is om een tabel te maken van de vorm:
Hierbij bevat node_title de uitgebreide titel van een pagina ("Welkom op de pagina met activiteiten"), node_body het eigenlijke artikel (met HTML opmaak via in-browser editor) en node_url een unieke URL naam voor elk artikel (in het voorbeeld hierboven: activiteiten, reizen en ardennen).
Stel dat iemand de url http://www.website.com/activiteiten aanroept, dan zoek ik met behulp van mod_rewrite uit welk artikel aan het eind van de url staat. Vervolgens zoek ik in de tabel "nodes" op ...WHERE node_url = "activiteiten". Ik haal de title en body op en laat het artikel zien.
Is dit de standaard manier om dergelijke URL's met een database te matchen? Ik kan me voorstellen dat er problemen ontstaan als je in de nodes-tabel twee artikelen hebt met de titel "ardennen", namelijk:
• http://www.website.com/activiteiten/reizen/ardennen
• http://www.website.com/natuurgebieden/ardennen
Artikel 1 gaat over reizen naar de ardennen, artikel twee gaat over een heel ander onderwerp. In de database ziet het er bv. als volgt uit:
Hoe los ik dit nu op? Mijn idee is om een node_parent_url toe te voegen aan de tabel. Zo kan ik zien dat ik in het tweede geval moet zoeken op WHERE node_url = "ardennen" AND node_parent_url = "natuurgebieden", maar dan heb ik nog steeds een probleem als de gebruiker onder dezelfde parent twee verschillende artikelen wil plaatsen met dezelfde node_url. Dit zal in de praktijk haast niet voorkomen, maar het is een mogelijkheid. Hoe is dit te ondervangen? Denk ik helemaal verkeerd of zetten jullie gewoon een restrictie op twee dezelfde artikelen onder 1 parent? Kent iemand wellicht een artikel over dit onderwerp?
http://www.website.com/activiteiten/reizen/ardennen
Ik heb na wat nadenken wel een idee hoe ik dit moet oplossen, maar wil dit graag (vereenvoudigd) aan jullie voorleggen voordat ik daadwerkelijk aan de slag ga. Mijn idee is om een tabel te maken van de vorm:
code:
1
2
3
4
5
6
7
8
9
10
11
| +----------------------+ | nodes | +------------+---------+ | node_id | INT | +------------+---------+ | node_url | VARCHAR | +------------+---------+ | node_title | VARCHAR | +------------+---------+ | node_body | TEXT | +------------+---------+ |
Hierbij bevat node_title de uitgebreide titel van een pagina ("Welkom op de pagina met activiteiten"), node_body het eigenlijke artikel (met HTML opmaak via in-browser editor) en node_url een unieke URL naam voor elk artikel (in het voorbeeld hierboven: activiteiten, reizen en ardennen).
Stel dat iemand de url http://www.website.com/activiteiten aanroept, dan zoek ik met behulp van mod_rewrite uit welk artikel aan het eind van de url staat. Vervolgens zoek ik in de tabel "nodes" op ...WHERE node_url = "activiteiten". Ik haal de title en body op en laat het artikel zien.
Is dit de standaard manier om dergelijke URL's met een database te matchen? Ik kan me voorstellen dat er problemen ontstaan als je in de nodes-tabel twee artikelen hebt met de titel "ardennen", namelijk:
• http://www.website.com/activiteiten/reizen/ardennen
• http://www.website.com/natuurgebieden/ardennen
Artikel 1 gaat over reizen naar de ardennen, artikel twee gaat over een heel ander onderwerp. In de database ziet het er bv. als volgt uit:
code:
1
2
3
4
5
6
7
8
9
| +------------------------------------------------+ | nodes | +------------------------------------------------+ | node_id | node_url | node_title | node_body | +---------+----------+------------+--------------+ | 4 | ardennen | reizen! | lekker weg.. | +---------+----------+------------+--------------+ | 17 | ardennen | natuur! | in het bos.. | +---------+----------+------------+--------------+ |
Hoe los ik dit nu op? Mijn idee is om een node_parent_url toe te voegen aan de tabel. Zo kan ik zien dat ik in het tweede geval moet zoeken op WHERE node_url = "ardennen" AND node_parent_url = "natuurgebieden", maar dan heb ik nog steeds een probleem als de gebruiker onder dezelfde parent twee verschillende artikelen wil plaatsen met dezelfde node_url. Dit zal in de praktijk haast niet voorkomen, maar het is een mogelijkheid. Hoe is dit te ondervangen? Denk ik helemaal verkeerd of zetten jullie gewoon een restrictie op twee dezelfde artikelen onder 1 parent? Kent iemand wellicht een artikel over dit onderwerp?
[ Voor 7% gewijzigd door Reveller op 25-06-2004 01:01 . Reden: even netjes maken ]
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."