Zoals velen hier maak ik momenteel mijn eigen CMS'je. Opzich heb ik genoeg ideeen over de manier waarop ik eea wil programmeren, welke functionaliteit ik erin wil hebben, etc. Over 1 punt blijf ik echter twijfelen, en ik hoop dat jullie je ervaringen / ideeen hierover willen delen.
Introductie
Voordat ik begin aan mijn eigen systeem, heb ik eerst een groot aantal cms'jes van anderen bekeken. Ik was vooral gecharmeerd van Userland Manila (proefsite te nemen via http://www.manilasites.com) en Drupal. Manila vanwege zijn gebruiksvriendelijkheid, Drupal vanwege de - naar mijn mening - schitterende manier van coden.
Nette url's
Beide producten hebben de navigatie losgekoppeld van het aanmaken van content. Als ik in drupal een nieuw artikel aanmaak, kan ik deze bereiken via de url site.com/node/view/18. Dezelfde pagina zou binnen Manila te bereiken zijn via site.com/stories/storyReader$18. Beide systemen geven vervolgens de mogelijkheid een url-alias aan het artikel toe te kennen: zo kan ik de alias site.com/fruit/appels laten doorverwijzen naar eerder gegeven url's.
Navigatie
Nog steeds heeft de site geen navigatie. Op een aparte pagina moet ik een menu item aanmaken ("Appels") en deze koppelen aan een url ("stories/storyReader$18" of "node/view/18"). Bij Drupal moet ik de node vervolgens toekennen aan een parent (als ik die al gedefinieerd had), om zo een navigatie met meerdere lagen te kunnen krijgen. Manila ondersteunt alleen navigatie-items op 1 niveau, maar dat terzijde.
Voordelen
De voordelen van een dergelijke manier van werken zijn:
Daar tegenover staan naar mijn mening genoeg nadelen:
Tot nu toe moest de gebruiker bij mij als hij een artikel aanmaakte, een arl-alias van 1 woord kiezen ("appels") en aanklikken tot welke parent-artikel deze behoorde. Database:
Beperkingen aan mijn manier
Ik loop tegen de lamp nu ik meer functionaliteit in mijn cms'je wil brengen: de gebruiker kiest een parent voor elk nieuw artikel, zodat de navigatie automatisch wordt aangemaakt. Maar wat nu als ik het cms lever met een gastenboek-module, en de gebruiker wil aan de navigatie een link "GastenBoek" toevoegen onder het parent-artikel "Contact"? Mijn artikelen en content-tree zijn in 1 tabel verweven, dus dat wordt lastig te bewerkstelligen.
Vragen
Introductie
Voordat ik begin aan mijn eigen systeem, heb ik eerst een groot aantal cms'jes van anderen bekeken. Ik was vooral gecharmeerd van Userland Manila (proefsite te nemen via http://www.manilasites.com) en Drupal. Manila vanwege zijn gebruiksvriendelijkheid, Drupal vanwege de - naar mijn mening - schitterende manier van coden.
Nette url's
Beide producten hebben de navigatie losgekoppeld van het aanmaken van content. Als ik in drupal een nieuw artikel aanmaak, kan ik deze bereiken via de url site.com/node/view/18. Dezelfde pagina zou binnen Manila te bereiken zijn via site.com/stories/storyReader$18. Beide systemen geven vervolgens de mogelijkheid een url-alias aan het artikel toe te kennen: zo kan ik de alias site.com/fruit/appels laten doorverwijzen naar eerder gegeven url's.
Navigatie
Nog steeds heeft de site geen navigatie. Op een aparte pagina moet ik een menu item aanmaken ("Appels") en deze koppelen aan een url ("stories/storyReader$18" of "node/view/18"). Bij Drupal moet ik de node vervolgens toekennen aan een parent (als ik die al gedefinieerd had), om zo een navigatie met meerdere lagen te kunnen krijgen. Manila ondersteunt alleen navigatie-items op 1 niveau, maar dat terzijde.
Voordelen
De voordelen van een dergelijke manier van werken zijn:
- minder handelingen voor de gebruiker op het moment dat hij content aanmaakt
- flexibiliteit in de navigatie: ik kan een item naar een artikel, weblog comment, etc. laten verwijzen
Daar tegenover staan naar mijn mening genoeg nadelen:
- 9 van de 10 keer zal de gebruiker een pagina aanmaken en deze meteen aan de navigatie toegevoegd willen hebben. Daar moet hij nu voor naar een andere pagina binnen de admin
- er worden hele url's toegekend aan elke pagina: als node/view/18 (met als url-alias fruit/appels) en node/view/77 (alias: fruit/peren) verplaatst moeten worden van "fruit" naar bijvoorbeeld "groenten", moet ik alle aliassen stuk-voor-stuk gaan hernoemen (groenten/appels, groenten/peren).
- stel dat ik een artikel "rode peren" heb getypt, maar deze niet aan de navigatie heb toegevoegd, dan staat dit artikel tot geen enkel ander artikel in hierarchisch verband: als ik naar node/view/34 (het artikel) surf, zou de cookie crumb trail iets als "Home > fruit > peren > rode peren" moeten aangeven, maar omdat het artikel nog niet in de hierarchie is opgenomen, zul je zoiets als "Home > rode peren" krijgen. Helemaal raar is als je al wel een alias hebt aangemaakt voor het artikel, maar hem nog niet aan de navigatie hebt toegevoegd: je surft dan naar site.com/fruit/peren/rood, en de crumb trail zegt dan "Home > rode peren"...
Tot nu toe moest de gebruiker bij mij als hij een artikel aanmaakte, een arl-alias van 1 woord kiezen ("appels") en aanklikken tot welke parent-artikel deze behoorde. Database:
code:
Als iemand naar site.com/fruit/appels surft, query ik de database of dat pad toch wel bestaat. In dit geval wel, en ik laat artikel nummer 4 zien. Voordeel is dat als ik fruit ineens onder groenten zou willen hangen (en dus groenten/fruit/appels als geldige url wil hebben), ik alleen de pid van "fruit" hoef te veranderen van "1" naar "3". Dat is anders dan bij genoemde systemen, waarbij de url-alias zelf een complete url is.1
2
3
4
5
6
7
8
9
10
11
12
13
| +----+-----+-----------+-------+--------------------------+ | id | pid | url-alias | titel | tekst | +----+-----+-----------+-------+--------------------------+ | 1 | 0 | | Home | Welkom op mijn website.. | +----+-----+-----------+-------+--------------------------+ | 2 | 1 | fruit | Fruit | Gezond voor jong en oud, | +----+-----+-----------+-------+--------------------------+ | 3 | 1 | groenten | Groen | Niet altijd even lekker, | +----+-----+-----------+-------+--------------------------+ | 4 | 2 | appels | Appel | Vele soorten: elstar, ro | +----+-----+-----------+-------+--------------------------+ | 5 | 2 | peren | Peer | Erg lekker voor op het ..| +----+-----+-----------+-------+--------------------------+ |
Beperkingen aan mijn manier
Ik loop tegen de lamp nu ik meer functionaliteit in mijn cms'je wil brengen: de gebruiker kiest een parent voor elk nieuw artikel, zodat de navigatie automatisch wordt aangemaakt. Maar wat nu als ik het cms lever met een gastenboek-module, en de gebruiker wil aan de navigatie een link "GastenBoek" toevoegen onder het parent-artikel "Contact"? Mijn artikelen en content-tree zijn in 1 tabel verweven, dus dat wordt lastig te bewerkstelligen.
Vragen
- wordt bij jullie cms de navigatie automatisch aangemaakt als er een nieuw artikel geschreven wordt?
- kunnen gebruikers in de navigatie ook links maken naar bijvoorbeeld een bepaalde weblog-post of het gastenboek?
- op welke manier gebeurt dat? Kun je wellicht een screenshot van de user-interface posten hoe nieuwe navigatie-links worden aangemaakt?
[ Voor 14% gewijzigd door Reveller op 19-01-2005 17:26 ]
"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."