Drupal als een lego bouwdoos gebruiken

Ingediend door Donny op ma, 06/02/2012 - 07:45

Wie geregeld nieuwe Drupal sites ontwikkelt zal ongetwijfeld wel gemerkt hebben dat er veel zaken zijn die je elke keer opnieuw exact hetzelfde doet. Het downloaden van de Drupal core, modules en libraries, het aanmaken van inhoudstypes, WYSIWYG-editor en bijhorende profielen, ...

Elk project heeft natuurlijk ook zijn eigen specifieke extra modules en instellingen maar een groot deel bij de start zal altijd het hetzelfde zijn, zo zijn er modules die je hoogst waarschijnlijk wel voor elke website zal gebruiken. Ik denk bv aan Views, Features, XML sitemap, pathauto, WYSIWYG, ...

Ondertussen schreef ik eerder al enkele blogposts over Drush, Drush Make en Features die je hierbij kunnen helpen om dit proces te versnellen. Onlangs volgde ik met grote interesse de door Drupaleuven georganiseerde DUG over distributies en installation profiles.

Code Driven Development binnen Drupal sprak me al een tijdje aan en na het lezen en bekijken van verschillende blogposts en video's over dit onderwerp was ik natuurlijk zeer blij met het gekozen onderwerp voor de DUG.

Ondertussen heb ik mijn eerste volledig Code Driven project achter de rug en heb ik de smaak wel te pakken en zie ik er de voordelen van in. Natuurlijk leent niet elk project zich hiervoor. Op basis van mijn eerste ervaringen met deze manier van ontwikkelen ging ik aan de slag met het samenstellen van een custom installatie profiel dat oa het volgende bevat:

  • Modules downloaden en inschakelen die ik veel gebruik (Views, Features, WYSIWYG, Mollom, Google Analytics, ...)
  • Libraries downloaden (Colorbox, CKEditor, FlickrPHP)
  • Inhoudstypes installeren, WYSIWYG profiel wegschrijven, rechten instellen, ...
  • Mollom captcha toevoegen op reactie formulieren
  • Global contact formulier van een e-mailadres voorzien

Dit installatie profiel heb ik op een private Git repository geplaatst bij Bitbucket, zodat ik bij het opstarten van een nieuwe website dit altijd kan laten ophalen in mijn Drush Make bestand.

Aangezien modules als Mollom, GA en FlickrGallery hun eigen API sleutels nodig hebben, heb ik deze bij het installatie profiel als tasks toegevoegd, zodat ik deze bij het installeren kan opgeven en dit niet dient te gebeuren in de code of achteraf binnen Drupal zelf.

Drupal als een lego bouwdoos gebruiken zei ik? Wel met dit custom installatie profiel heb ik al een mooie basis om een nieuwe site op te starten. Echter zijn er nog heel wat zaken die soms wel eens opnieuw dienen samengesteld te worden. Fotogalerijen, Events, Blogs, ... Dit zijn maar enkele voorbeelden van onderdelen die zich perfect lenen om in Features te plaatsen. Je hebt ze niet voor elke site van doen, maar af en toe herbouw je ze wel volledig opnieuw.

Wanneer je deze als aparte Features zou aanmaken, kan je ze ook in een aparte Git repository plaatsen en vanuit je Drush Make file aanroepen.
Wat ik extra handig vind aan Drush Make is dat het ook andere Drush Make files herkent die je binnenhaalt en deze dan ook uitvoert.

Als je dus een Feature aanmaakt, voorzie er dan ook een Drush Make file bij die de benodigde modules en libraries zal downloaden.

Bij het opstarten van een nieuwe Drupal site hoef je dus enkel nog maar een Drush Make file aan te maken die het juiste installatie profiel en de nodige features download. Eenmaal alles binnen is hoef je nog maar net de installatie op te starten, de nodige API keys ingeven en je nieuwe Drupal site is al voor een groot deel klaar. #win

Om even aan te tonen hoeveel tijd je er mee kan winnen heb ik onderstaande video opgenomen. 

  • Eerst roep ik mijn Drush Make bestand op dat ik voor deze demo heb samengestelt
  • Het installatie profiel wordt gedownload, alsook een extra Feature die ik heb toegevoegd voor deze demo. Een Drupal 7 foto galerij met de Media, Media Gallery en plupload module (Beetje nutteloos aangezien het profiel ook de FlickrGallery module bevat, maar als demonstratie voor het inladen van een Feature heb ik hem erbij geplaatst)
  • Drush zal de 2de Drush Make file (Feature) herkennen en ook de daarvoor nodige modules en libraries downloaden (Het gaat hier niet echt om een Feature van de Feature module, maar enkel om een Drush Make die de nodige modules binnenhaalt. De module Media Gallery komt als een complete oplossing voor een foto galerij)
  • Wanneer alles binnen is kan het installatieproces starten, je zal hier de extra toegevoegde tasks zien zoals oa het opgeven van de Mollom en FlickrGallery API keys, Google Analytics account ID, e-mailadres voor het global contact formulier

(In de video geef ik fictieve waardes op voor de API keys, voor deze demo heb ik de juiste even in de code zelf geplaatst zodat deze niet zichtbaar zijn maar je toch alles in werking kan zien)

Voor wie interesse moest hebben, bij deze de Drush Make voor het downloaden van benodigde modules en libraries voor de foto galerij met de Media, Media Gallery en Plupload modules:

; Core version
; ------------
core = 7.x

; API version
; ------------
api = 2

; Drupal version
projects[drupal][version] = 7.10

; Modules
; --------
projects[media][version] = 1.0-rc3
projects[media][type] = "module"
projects[media][subdir] = "contrib"
projects[ctools][version] = 1.0-rc1
projects[ctools][type] = "module"
projects[ctools][subdir] = "contrib"plupload
projects[plupload][version] = 1.0-beta3
projects[plupload][type] = "module"
projects[plupload][subdir] = "contrib"
projects[multiform][version] = 1.0-beta2
projects[multiform][type] = "module"
projects[multiform][subdir] = "contrib"
projects[media_gallery][version] = 1.0-beta7
projects[media_gallery][type] = "module"
projects[media_gallery][subdir] = "contrib"

; Libraries
; ---------
libraries[plupload][type] = "libraries"
libraries[plupload][download][type] = "file"
libraries[plupload][download][url] = "https://github.com/downloads/moxiecode/plupload/plupload_1_5_2.zip"
libraries[plupload][directory_name] = "plupload" 

Video