Een paar weken terug, voor mijn verlof, had ik het over de voorbereidingen die ik nam bij het opzetten van een Drupal site. Vandaag ga ik verder met de volgende stap: de eigenlijke setup.
Dankzij de eerder gemaakte voorbereidingen hebben we al een goed idee wat de structuur van de site gaat zijn. Vaak kan je tijdens de voorbereidingen ook al weten welke modules je nodig gaat hebben. Heb je een goede briefing gehad met de klant over de gewenste functionaliteit dan sta je nog een stap verder.
De setup van een site doe ik grofweg in 4 stappen:
- Installeren van modules
- Aanmaken van alle content types & vocabularies
- Gebruikersrollen, toegangsrechten en andere instellingen
- Het opzetten van de boomstructuur
Deze stappen lopen uiteraard wat door mekaar, zeker in latere stadia waar zaken moeten aangepast en bijgesteld worden.
Uw setup omgeving
Ik heb het hier natuurlijk over uw virtuele omgeving. Het is interessant om op te merken dat het werken op een lokale server veel aangenamer en vlotter is dan op een eigenlijke online host (al dan niet onder het eigenlijke domeinnaam). Het hoe en waarom is voer voor een andere post.
Mensen die hun handen niet te vuil willen maken kunnen MAMP (Mac) en WAMP (Windows) eens bekijken. Dit is voldoende om met Drupal aan de slag te kunnen. Je kan overigens met zo een lokale server ook virtuele hosts opzetten. Een eigen domein gebied als het ware. project1.local, project2.local, project3.local, enz... Meer uitleg over hoe je dit bereikt met MAMP vind je bij SitePen. Wellicht met WAMP iets vergelijkbaar doen.
Installeren van Drupal
Ik ga er van uit dat je weet hoe dit moet, er is ten slotte voldoende info over te vinden. Drupal installeren is ook het gemakkelijkste van een Drupal site opzetten. Ik zet het hier maar even als stap om het logisch te houden, we moeten ergens mee beginnen, niet waar.
Installeren van modules
Als je niet zo bekend bent met Drupal en de vele modules dan is het zoeken naar de juiste modules een tijdrovende zaak. Vaak zijn er meerdere modules waarmee je hetzelfde resultaat of iets gelijkaardig kan bereiken. De ene module zal soms meer functionaliteit bieden dan dat je nodig hebt terwijl een ander juist gepast zal zijn.
Daarom is het belangrijk dat je goed nadenkt over wat je precies nodig hebt. Naarmate je meer sites opzet leer je de modules beter kennen en zal je beter kunnen inschatten wat je nodig hebt. Zelf heb ik gewoonlijk al een lijst van modules in mijn hoofd tijdens de briefing en de voorbereidingen.
Het is ook handig om ergens een fysieke lijst te hebben van modules die je veel gebruikt, of die je ooit denkt nodig te hebben.
Ik heb op mijn computer een map met modules die ik gedownload heb (opgesplitst in Drupal 5 en Drupal 6) en waarvan ik zeker ben dat ik ze nog wel eens nodig zal hebben. 2 of 3 modules heb ik nog niet gebruikt maar leken me ooit van pas te komen. Voor zaken die ik nog niet eerder heb gedaan of waar ik niet meteen een oplossing voor kan bedenken zoek ik even rond op de website van Drupal.
Het voordeel voor mij van zo een fysieke map is dat ik snel door de modules kan bladeren. Degene die ik nodig heb kopieer ik naar mijn (lokale) Drupal installatie (in de map sites/all/modules). Modules die veel gebruikt worden zijn gewoonlijk wel up to date. Van minder vaak gebruikte modules zoek ik gauw op of ik de laatste versie heb.
Eens ik klaar ben met het kopiëren van de nodige modules log ik in op mijn Drupal installatie en ga ik in de administratie naar Site Building > Modules. Hier activeer ik alles wat ik nodig heb om aan de site te werken.
NOTA! Je hebt niet altijd een extra module nodig om bepaalde zaken te bereiken, met een beetje creativiteit kom je even ver met wat je al hebt. Sommige modules kan je op andere manieren gebruiken dan waar ze op eerste zicht voor gemaakt lijken.
Enkele favoriete en veel gebruikte modules
Ruimte om modules te bespreken is er niet echt. Als ik de toestemming heb zal ik wel eens live voorbeelden uit de doeken doen en tonen hoe ik bepaalde modules gebruik. Hier alvast een handvol modules die ik bijna automatisch installeer op een nieuwe site.
1| Administration Menu is een geweldig handige module om snel door uw admin te navigeren.
2| Poormanscron: Drupal hangt voor sommige zaken sterk af van cron mogelijkheden (automatisch op bepaalde tijdstippen zaken uitvoeren). Sommige hosts laten cron niet toe, en zelf pruts ik niet graag met cron bestanden. Poormanscron doet alles via de site zelf.
3| Pathauto: Enorm belangrijk naar SEO toe en ook gewoon een deel van het personaliseren van een site. Met pathauto kan je gemakkelijk automatisch url's meegeven aan pagina's. Gebaseerd op uw inhoudstype.
4| Contemplate is voor mij een cheatsheet naar de variabelen die ik ter beschikking heb om mijn inhoud te themen. Ik gebruik het niet zoals het bedoeld is, gewoonlijk wis ik het eens de site af is. Voor Drupal 6 is er nu de geweldige Devel module met een Theme Developer
5| Met CCK kan je custom velden toevoegen aan je inhoud. Heel flexibel.
6| Met Views maak je eender wat voor typen overzichten. Je kan hier enorm ver in gaan.
7| TinyMCE gebruik ik als WYSIWYG editor. Dit maakt het voor de klanten net iets gemakkelijker om hun inhoud te beheren. Spijtig genoeg kan het ondanks een eenvoudige editor nog altijd sterk fout lopen.
IMCE is hier een handig plugin voor om bestanden te beheren en up te loaden. Natuurlijk probeer ik bestanden zoveel mogelijk zelf onder controle te houden door het in te werken in de template met eigen CCK velden.
8| Voor meertaligheid is het i18n pakket het beste dat er is. Nu met Drupal 6 is een deel van de functionaliteit om meertaligheid te ondersteunen ingebouwd, maar zelfs dan nog is dit pakket een goede aanvulling om uw meertalige inhoud te beheren.
Aanmaken van content types & vocabularies
Ik zet dit als tweede stap omdat dit mij veel dubbel werk kan besparen gezien ik voor elke site ook pathauto instel. Maar ook voor de toegangscontrole is dit handig.
Met pathauto kan je behoorlijk eenvoudige elke soort inhoud een eigen pad (URL) meegeven. Standaar voorziet Drupal systeem URL's. Zo heeft elke pagina een pad 'node/[nid]' waarbij [nid] het systeemnummer is van de pagina. Met pathauto kan dit pad verbergen door iets leesbaar. Voor een blogpost kan dit bv 'blog/[jjjj]/[mm]/[titel]' zijn.
Hetzelfde geldt voor uw categoriën. Drupal maakt er standaard 'taxonomy/term/[tid]', waarbij [tid] het systeem nummer van uw term/categorie is. Iets als '[type]/[catnaam]' is veel properder en scoort ook beter in zoekmachines.
Dus ik zorg dat ik eerst alle inhoudstypes aangemaakt heb. Tijdens het aanmaken zet ik ook al de eerste opties goed. Gewoonlijk zet ik de mogelijk om attachements te uploaden uit gezien ik met CCK specifieke velden probeer te voorzien die ik veel gemakkelijker kan themen.
De CCK velden zelf ga ik nog niet toevoegen aan de inhoudstypes, hoewel je dit zeker al kan doen. Ik loop graag enlke inhoudstype één voor één af tijdens het themen, waarbij ik dan de nodige velden ga voorzien. Meesetal is het ook zo dat de gewenste velden per inhoudstype pas later in het project duidelijk worden.
Ook voor mijn categoriën, of in Drupal termen taxonomy, ga ik al vocabularies voorzien. In geval van een blog wil ik misschien twee soorten vocabularies: vaste categoriën en losse tags dus ik maak voor beide alvast een vocabulair aan. Ik ga ze echter nog niet opvullen! Dus nog geen categoriën toevoegen. Dit doe ik om te vermijden dat ze verkeerde paden (of aliassen) toegewezen krijgen.
Instellingen
Het is pas als ik klaar ben met die zaken op te zetten dat ik de eigenlijke site begin in te stellen. Vanaf nu zal je hoe dan ook wat heen en weer moeten springen tussen verschillende pagina's om alles ingesteld te krijgen zoals je wil maar ik heb toch het gevoel dat de volgende methode mij wat tijd uitspaart.
Gebruikersrollen en toegangsrechten
Veel modules en andere instellingen worden gedaan op basis van gebruikersrollen. Drupal heeft een heel uitgebreid toegangscontrole waardoor je heel specifiek kan aanduiden wie wat mag doen op de site.
Drupal voorziet standaard twee gebruikersrollen, eentje voor anonieme gebruikers en eentje voor ingelogde gebruikers. Zelf maak ik nog een 'admin' rol en een 'editors' rol. Afhangende van de wensen van de klant kunnen daar nog andere rollen bij komen. 'Pers' is een veel voorkomend voorbeeld, die mensen hebben dan toegang tot een afgeschermde perssectie.
Na het aanmaken van de rollen ga ik de toegangscontrole per rol aanvullen. Voor de 'admin' rol vink ik alles aan. Die dient enerzijds voor mezelf om zeker te zijn dat ik toegang heb tot alles, maar ook voor de partners waarmee ik samen werk. Ze vragen wel aan mij om de setup te doen, maar vaak kunnen zelf ook met het systeem werken en willen ze zelf ook zaken kunnen aanpassen.
De 'editors' rol is doorgaans voor de eind klant. Daarin specificeer ik dan wat de eind klant moet kunnen. Bv het aanmaken en wijzigen van bepaalde inhoudstypes. Het is best van die rol het minimum aan rechten te geven. Zeker als je voor een klant bezig bent die niet zo vlot met de nieuwe internet zaken om kunnen. Meer opties is enkel verwarrend.
Als het om een persoonlijke website gaat kan je best ook een extra gebruiker (login) aanmaken en jezelf een rol met beperkte toegang geven. Stel dat je eens op een publieke computer inlogt en vergeet uit te loggen dan blijft de eventuele schade toch beperkt.
Andere instellingen
Na het instellen van de gebruikersrollen en de toegangsrechten loop ik gewoonlijk alle instellingen één voor één af, in het menu te beginnen van onder naar boven toe.
Je zal nu zien dat je jezelf heel wat tijd hebt uitgespaard door eerst bovenstaande zaken te doen. Als je pathauto hebt ingeschakeld zie je nu een lijst van al uw inhoudstypes en vocabularies die je elke een eigen pas kan geven.
Bij het instellen van TinyMCE wordt er je gevraagd welke rollen toegang moeten krijgen tot het profiel dat je aan het opstellen bent, enz.
Vergeet niet terug te keren naar de nodige instellingen als je bv een inhoudstype bij aanmaakt. Ik heb vooral de neiging om pathauto te vergeten instellen. Na het invullen van inhoud merk ik dan dat de pagina een verkeerde URL heeft.
Inhoud & boomstructuur
Na al die saaie instellingen kan je eindelijk je website beginnen opvullen. Omdat ik meestal de website opzet voor iemand anders houdt dit in dat ik de boomstructuur maak.
Ik voeg de gewenste velden toe aan de verschillende inhoudstypes en ik vul de nodige categorieën in.
Aan de hand van de sitemap maak ik alle pagina's aan die in het menu moeten komen. Zoals ik in de voorbereidingen ook heb aangeduid zijn sommige pagina's overzichten van berichten dus hiervoor ga ik Views opstellen met de juiste criteria.
Ik ga nu ook blokken aanmaken die bedoeld zijn om overzichten weer te geven. Ik denk maar aan een lijste met de meest recente persberichten.
Layout en theming
Vanaf nu zal alles een beetje door mekaar lopen. Instellingen moeten aangepast worden omdat ze toch niet juist werken, er komen inhoudstypes bij, enz.
Je begint nu ook aan de uiteindelijke layout. Je zet alle blokken op de juiste plaats, uw overzichten en pagina's beginnen vorm te krijgen.
Een eerste versie wordt doorgestuurd en de klant begint een idee te krijgen van hoe zijn website er zal uitzien en hoe het zal werken.
Om af te ronden
Drupal heeft een behoorlijk steile leercurve, maar eens je door hebt hoe alles draait en keert zie wat voor een flexibele framework Drupal eigenlijk is. Ik heb nog geen feature requests moeten weigeren, het kan nog komen, maar op dit moment heb ik alles voor mekaar gekregen. Een uitzonderlijke keer moet je je handen echt vuil maken om te bereiken wat je wil.
In een volgende post geef ik wat tips over het themen (in ruime zin) in Drupal. Een templatesysteem waar je toch ook wel wat zaken mee kan bereiken.