FrOSCon 2007 (dag 2): Theming in Drupal

Tijdens de tweede dag van FrOSCon (Free and Open Source Software Conference), in het Duitse Sankt-Augustin, ging de aandacht onder meer naar theming in Drupal. Olav Schettler van contAire, lichtte toe hoe je themes beheert & aanpast binnen de Drupal-interface en gaf uitleg over het theming-systeem van Drupal. Hij sloot zijn sessie af met de voorstelling van een zelfgemaakte module. Olav's presentatie was ook meteen het einde van de Drupal-track op FrOSCon.

Twee dagen lang kon je als Drupal-ontwikkelaar/gebruiker/nieuweling/... terecht op FrOSCon 2007 voor een reeks presentaties over je favoriete web-framework. Zaterdag was gericht op beginnende gebruikers, zondag was bedoeld voor de ervaren Drupaller. Alle Drupal-sessies vonden in dezelfde ruimte plaats, zodat je -indien gewenst- twee dagen in hetzelfde lokaal kon kamperen.

Maar de theming-presentatie dus. Olav Schettler begon met een algemene uitleg over het theme-beheerssysteem van Drupal. Hij liep door de verschillende schermen waar je in de beheersinterface van Drupal het uitzicht van je website met enkele klikken -beperkt- kan aanpassen. Zaken als de color picker, waarmee je zoals in grafische programma's (Photoshop, The GIMP, ...) snel kleuren kan kiezen en toepassen, kwamen uiteraard aan bod.

Wil je het uitzicht van je website echter volledig naar je hand zetten, dan zijn er tal van mogelijkheden. Olav haalde daarbij aan dat Drupal functionaliteit, content en design mooi uit elkaar houdt, waardoor je het laatste (design) volledig kunt aanpassen naar eigen goeddunken.

  • De zogeheten theme()-functies zijn hierbij essentieel. Drupal stuurt de output van haar code door die theme-functies. Themes kunnen die functies dan overschrijven (overriden), waardoor je de uiteindelijke html volledig naar je hand kan zetten. De theme-engine (zoals phptemplate) zorgt daarbij voor de scheiding van dataverwerking en presentatie.
  • Via je theme kan je ook de lay-out van je website veranderen naargelang de pagina (url) die je bezoekt. Voor interne Drupal-pagina's volstaat het om de correcte naam te gebruiken voor je theme-bestand (bijvoorbeeld page-node-edit.tpl.php), voor zelf aangemaakte pagina's is een stukje code in template.php nodig (zie pagina's 18 & 19 van de presentatie).
  • Custom regions laten je toe om je Drupal-blokken te tonen op gelijk welke plaats op je website. Met de php-optie in de zichtbaarheidsinstellingen van je blokken kan je vervolgens heel nauwgezet bepalen op welke pagina's een blok al dan niet getoond wordt.
  • De Panels-module laat je toe om op een eenvoudige manier blokken te rangschikken en op te vullen met content. De module werkt onder meer prima samen met de Views-module, waardoor je op een heel gebruiksvriendelijke manier visueel gevarieerde pagina's kan opbouwen met verschillende soorten inhoud. De volgende versie van Panels maakt het bovendien mogelijk om blokken met je muis te verslepen, waardoor alles nog een stuk intuïtiever wordt. (tip: wie naar de Drupal-conferentie in Barcelona komt, kan daar twee presentaties volgen van de auteur van de module).

Ten slotte stelde Olav nog een zelfgemaakte module voor. Vooral de manier waarop hij daarmee het taxonomie controleert, leek me erg handig. Wie een Drupal-website beheert met een groot aantal categorieën (termen), heeft al snel een hele lange lijst om uit te kiezen - niet altijd even makkelijk in gebruik. Olav's module zorgt ervoor dat de termen per hoofdterm (vocabulary) kunnen opengeklikt worden, in plaats van meteen álle termen in een lijst gepresenteerd te krijgen. Bovendien toont de module de geselecteerde termen naast het taxonomie-menu, met een handige knop om ze weer te deselecteren. De module zelf vind je op http://olav.net/drupal-auf-der-froscon.