Hallo allemaal,
Ik ben al een hele tijd aan het nadenken over hoe ik mijn site volledig databasegebaseerd kan maken. De huidige navigatiestructuur van mijn site voldoet niet meer en het ontwerp evenmin. Het gaat om een site met zo'n 8 hoofdcategorieën en 200 pagina's. De site groeit gestaag. De 8 hoofdcategorieën corresponderen met directories in /. Zo:
/ - home
/blue_widgets - blue widgets
/brown_widgets - brown widgets
/yellow_widgets - yellow widgets
/news - news
Ik ben aan het nadenken over een goede databaselayout. Ik wil zoekmachinevriendelijke en hackable URLs gebruiken. Hiervoor zal ik htaccess gebruiken en een mapping van file- en directorynamen op unieke article_id's in de database.
Voorbeeld htaccess
De URL www.mijnsite.com/blue_widgets/widget_structure.html
Met een regel in .htaccess strip ik de directorynaam (blue_widgets) en de filenaam (widget_structure) uit de URL. Deze directorynaam en filenaam gebruik ik om artikel content, advertentieposities, een navigatiemenu, etc uit de database op te vragen.
RewriteRule ^(.*)/(.*).html$ get_article_data.php?dirname=$1&&pagename=$2 [L]
(dit klopt misschien niet helemaal, maar het gaat nu even om het idee)
Database
Ik zou aparte tabellen maken voor
- De mapping van directorynamen en filenamen op artcile_id's. (dirname, filename, article_id)
- text content (aticle_id, article_text)
- links in het navigatiemenu (article_id, nav_link)
- advertenties (werkt ook met article_id, de overige velden moet ik nog verder uitwerken)
- meta info (article_id, keywords, titel, description)
Ik heb het hier voornamelijk over het artikelengedeelte van mijn site. De homepage en nieuwssectie vereisen aparte functionaliteit en wat eigen database tabellen waarschijnlijk.
Wat denken jullie van zo'n aanpak? Een probleem dat ik zie is dat ik misschien wel een keer een directory wil toevoegen onder het laagste niveau, bijvoorbeeld /blue_widgets/widget_stores/.
Ik zou in dat geval de htaccess file aan moet passen zodat deze ook requests op deze directory vangt en de nieuwe variabele (widget_stores) doorgeeft aan de database. Daarnaast zou ik de database aan moeten passen. Al met al een lastige klus.
Eigenlijk is mijn vraag dus iets breder: hoe bouw je een databasesysteem voor een website dat van zichzelf rekening houdt met een zich uitbreidende sitestructuur, terwijl er alleen een virtueel filesysteem bestaat, namelijk de mapping van URLs naar de database via htaccess?
Niet echt een vraag die je in drie regels beantwoordt lijkt me. Ik heb het systeem dat ik hierboven beschrijf al eens gebouwd en het werkt vrij aardig zolang de site structuur gelijk blijft, maar dat is nu juist het punt waarop mijn andere site verschilt: hij verandert te veel.
Alle suggesties zijn welkom. Ik wil wel graag zelf iets bouwen op mijn wensen, ook omdat ik dat leuk vind. Een open source systeem als Mambo is prachtig en waarschijnlijk 100 keer beter, maar toch maak ik het liever zelf.
Ik ben al een hele tijd aan het nadenken over hoe ik mijn site volledig databasegebaseerd kan maken. De huidige navigatiestructuur van mijn site voldoet niet meer en het ontwerp evenmin. Het gaat om een site met zo'n 8 hoofdcategorieën en 200 pagina's. De site groeit gestaag. De 8 hoofdcategorieën corresponderen met directories in /. Zo:
/ - home
/blue_widgets - blue widgets
/brown_widgets - brown widgets
/yellow_widgets - yellow widgets
/news - news
Ik ben aan het nadenken over een goede databaselayout. Ik wil zoekmachinevriendelijke en hackable URLs gebruiken. Hiervoor zal ik htaccess gebruiken en een mapping van file- en directorynamen op unieke article_id's in de database.
Voorbeeld htaccess
De URL www.mijnsite.com/blue_widgets/widget_structure.html
Met een regel in .htaccess strip ik de directorynaam (blue_widgets) en de filenaam (widget_structure) uit de URL. Deze directorynaam en filenaam gebruik ik om artikel content, advertentieposities, een navigatiemenu, etc uit de database op te vragen.
RewriteRule ^(.*)/(.*).html$ get_article_data.php?dirname=$1&&pagename=$2 [L]
(dit klopt misschien niet helemaal, maar het gaat nu even om het idee)
Database
Ik zou aparte tabellen maken voor
- De mapping van directorynamen en filenamen op artcile_id's. (dirname, filename, article_id)
- text content (aticle_id, article_text)
- links in het navigatiemenu (article_id, nav_link)
- advertenties (werkt ook met article_id, de overige velden moet ik nog verder uitwerken)
- meta info (article_id, keywords, titel, description)
Ik heb het hier voornamelijk over het artikelengedeelte van mijn site. De homepage en nieuwssectie vereisen aparte functionaliteit en wat eigen database tabellen waarschijnlijk.
Wat denken jullie van zo'n aanpak? Een probleem dat ik zie is dat ik misschien wel een keer een directory wil toevoegen onder het laagste niveau, bijvoorbeeld /blue_widgets/widget_stores/.
Ik zou in dat geval de htaccess file aan moet passen zodat deze ook requests op deze directory vangt en de nieuwe variabele (widget_stores) doorgeeft aan de database. Daarnaast zou ik de database aan moeten passen. Al met al een lastige klus.
Eigenlijk is mijn vraag dus iets breder: hoe bouw je een databasesysteem voor een website dat van zichzelf rekening houdt met een zich uitbreidende sitestructuur, terwijl er alleen een virtueel filesysteem bestaat, namelijk de mapping van URLs naar de database via htaccess?
Niet echt een vraag die je in drie regels beantwoordt lijkt me. Ik heb het systeem dat ik hierboven beschrijf al eens gebouwd en het werkt vrij aardig zolang de site structuur gelijk blijft, maar dat is nu juist het punt waarop mijn andere site verschilt: hij verandert te veel.
Alle suggesties zijn welkom. Ik wil wel graag zelf iets bouwen op mijn wensen, ook omdat ik dat leuk vind. Een open source systeem als Mambo is prachtig en waarschijnlijk 100 keer beter, maar toch maak ik het liever zelf.
