Hvad kræver det for at udvikle et modul til Drupal? For det første skal du have en Drupal-installation kørende. Dernæst er det nok en god idé, hvis du kender noget til programmering. Hovedsproget i Drupal er PHP (version 5), men du kommer ikke udenom at bruge SQL.
Læs også
Fakta
Få mere at vide
http://drupal.org/developing/modules – Officiel dokumentation for modul-udviklere
http://en.wikipedia.org/wiki/Drupal – Wikipedia om Drupal
http://www.whitehouse.gov/ - et kendt Drupal-site
http://www.packtpub.com/drupal-books – Packt Publishing udgiver mange bøger om Drupal
Fakta
Drupal-udviklerne har endvidere opstillet en række regler for, hvordan din kode bør skrives (coding standards) og dem bør du følge, hvis din modul skal offentliggøres. Skal dit modul kun bruges af dig og på dine websites, er det ikke nødvendigt, at du følger disse regler. Fordelen er dog, at hyrer du en Drupal-udvikler, er det lettere for ham at sætte sig ind i din kode. Kode-reglerne går mest på, hvordan koden skal sættes op, det vil sige det layout, som du vælger (helt ned til hvor mange mellemrum indrykning skal være).
Et eksempel på et modul
Eksemplet her er et modul til håndtering af en database over artikler. Det er på ingen måde avanceret. Selve database-delen består af to tabeller, der er en række skribenter, som kan have skrevet 0, 1 eller flere artikler. Modulet kan bruges til at søge i databasen på forskellige måder. Selve administrationen bør modulet også tages sig af, men det er ikke vist her i artiklen.
Et modul består af række filer, som alle er placeret i en selvstændig folder under modules. For at implementere et modul, skal du implementere en række bestemte funktioner. Disse funktioner kaldes i Drupal-verdenen for kroge (hooks). Implementerer du krogen help til modulet aod, skal funktionen have navnet aod_help.
Hvilke kroge, du er nødt til at implementerer, afhænger helt af hvilket type modul, du har brug for. Ikke alle kroge er nødvendige at implementere.
Læs også
Fakta
Få mere at vide
http://drupal.org/developing/modules – Officiel dokumentation for modul-udviklere
http://en.wikipedia.org/wiki/Drupal – Wikipedia om Drupal
http://www.whitehouse.gov/ - et kendt Drupal-site
http://www.packtpub.com/drupal-books – Packt Publishing udgiver mange bøger om Drupal
Fakta
Nødvendige filer
Der er et par filer, som du skal have med i dit
modul for at Drupal overhovedet vil kunne installere modulet. I denne artikel
hedder modulet aod, og følgende tre filer er
nødvendige: aod.info, aod.module
og aod.install. Som du kan se, skal filer
til dit modul begynde med det samme som modulets navn. Endvidere skal filerne
være placeret i et folder under modules med samme
navn som modulet – i eksemplet her er det aod. Du
finder eksempler på filerne i henholdsvis infoboksene aod.info og aod.module.
Filen aod.info giver Drupal informationer om, hvad modulet hedder, en beskrivelse af modulet samt hvilken version (keyword core) af Drupal som er nødvendig. Med nøgleordet package kan du give Drupal information om hvilken kategori, modulet hører til. Udvikler du moduler, som kun skal bruges af dine websites, er det en fordel af sætte package til din organisations navn, så finder du lettere dine egenudviklede moduler i Drupal. Filen aod.module indeholder PHP-funktioner som kun dit modul skal bruge, i eksemplet er der ingen så filen er tom (ud over nogle kommentarer).
Filen aod.install indeholder to vigtige funktioner: aod_install og aod_uninstall. Det første PHP-funktion udføres, når modulet installeret, mens den anden udføres, når modulet afinstalleres. I de to funktioner kan du skrive den PHP-kode, som henholdsvis gør modulet klar til brug og fjerner det igen.
Adgang til databasen
Læs også
Fakta
Få mere at vide
http://drupal.org/developing/modules – Officiel dokumentation for modul-udviklere
http://en.wikipedia.org/wiki/Drupal – Wikipedia om Drupal
http://www.whitehouse.gov/ - et kendt Drupal-site
http://www.packtpub.com/drupal-books – Packt Publishing udgiver mange bøger om Drupal
Fakta
Drupal giver dig muligheden for at vælge database. Meget ofte bruges MySQL, men der er intet, som forhindrer dig i at bruge PostgreSQL. Det betyder, at Drupal-udviklerne har valgt at bygge et lag op, så modul-udviklere kan tilgå relationsdatabasen uden at tænke på, om det er MySQL, PostgreSQL eller en tredje, som ligger under Drupal. Laget er ikke tyndt, hvilket er medvirkende til, at Drupal ikke er et tungt CMS at bruge.
Du kan overlade oprettelse af tabeller til dit modul. Det skal forstås på den måde, at det er muligt at kode datamodellen i PHP og få oprettet tabellerne ved installationen af modulet. Du skal bruge schema-krogen. I infoboks Schema-krogen finder du den ene tabel til modulets datamodel. I filen aod.install skal du tilføje linjen drupal_install_schema('aod'); til funktionen aod_install og linjen drupal_uninstall_schema('aod'); til funktionen aod_uninstall. Typen serial angiver et felt, som automatisk giver en værdi ved indsættelse. Du kender sådanne felter i MySQL som auto_increment men andre databaser (både PostgreSQL og Oracle) kalder faktisk typen for serial, og det har Drupal-udviklerne valgt at følge.
Eftersom Drupal altid er i gang med at bruge databasen, behøver du ikke at oprette en forbindelse til den. Det gør din kode kompakt. Der findes en stribe funktioner til at tilgå databasen, og specielt db_query er vigtig. Denne funktion sender en forespørgsel til databasen. Drupals database-funktioner hjælper dig med at undgå SQL injection attacks ved at tjekke dine forespørgsler, inden de sendes til serveren. For at få Drupal til at tjekke dine forespørgsler, må du gøre lidt selv.
I infoboks SQL i Drupal kan du se, hvordan den enkle forespørgelse SELECT titel,nummer,aar FROM artikel WHERE skribent_id=$skribent_id vil se ud i Drupal. Du kan se, hvordan skribent_id tjekkes for at være et heltal med styrekoden %d. Tilsvarende kan du få Drupal til at tjekke andre typer, du skal bruge styrekoderne fra PHP-funktionen printf.
Ved at bruge { } rundt om tabelnavne, vil database-præfikset automatisk blive sat ind. Præfikset er noget, du vælger, når du installerer Drupal, og det sættes foran alle tabeller i din Drupal-installation.
Læs også
Fakta
Få mere at vide
http://drupal.org/developing/modules – Officiel dokumentation for modul-udviklere
http://en.wikipedia.org/wiki/Drupal – Wikipedia om Drupal
http://www.whitehouse.gov/ - et kendt Drupal-site
http://www.packtpub.com/drupal-books – Packt Publishing udgiver mange bøger om Drupal
Fakta
Som du kan se i infoboks SQL i Drupal, får du resultatet af forespørgslen række for række med funktionen db_fetch_array. Skal du indsætte en række i en tabel, bør du ikke bruge SQL' INSERT, men derimod Drupal-funktionen drupal_write_record.
Filer m.m.
Der findes også API'er til håndtering af filer, som skal uploades. Her kan du let og elegant skrive kode, som giver dine brugere mulighed for at uploade filer for eksempel billeder til et billedarkiv.
Drupal stiller en intern søgemaskine til rådighed. Det betyder, at du kan indsætte et søgefelt på de sider, du ønsker. Med search-krogen kan du skrive din helt egen søgerutine. På den måde kan du udvide Drupal-søgninger med data fra andre kilder for eksempel et kort fra Krak eller en køreplan fra Rejseplanen.
Du har adgang til opbygning af menuer i Drupal gennem et større menu-API. Eftersom der er en sammenhæng mellem en sides url og dens placering i menuerne, kan du bruge menu-API'et til at skrive komplekse moduler, idet det er muligt at definere en række callbacks, som så udføres, når en side skal vises.
Læs også
Fakta
Få mere at vide
http://drupal.org/developing/modules – Officiel dokumentation for modul-udviklere
http://en.wikipedia.org/wiki/Drupal – Wikipedia om Drupal
http://www.whitehouse.gov/ - et kendt Drupal-site
http://www.packtpub.com/drupal-books – Packt Publishing udgiver mange bøger om Drupal
Fakta
I web-applikationer bruges formularer (forms) til at lade brugeren give input, som så har betydning for udførelsen af applikationen. I klassiske web-applikationer bestod denne del af arbejdet ved at skrive en masse HTML, men Drupal stiller en lang række funktioner til rådighed, således at du let dels kan opbygge formularer, dels kan aflæse, hvad en bruger har som input. Hvis du vil bruge PHP til at bygge formularer op med, kan du skrive en PHP-funktion, som returnerer formularen som et array. Hvert element repræsenterer dybest set et HTML-element, og med et kald til funktionen drupal_get_form kan du få vist din formular.
Afslutning
Dette fjerde afsnit om Drupal giver dig kun et meget begrænset indblik i, hvordan du udvikler dine egne moduler til Drupal. Heldigvis er Drupals dokumentation god og detaljeret. Endvidere findes der flere bøger om Drupal, også bøger som kun handler om moduler.
Det er naturligvis også muligt at udvikle temaer. Du kan med temaer skifte udseende på dit website uden de store problemer.
Drupal er et godt og veludbygget contents management system. Men det er også mere end det, det er på mange måder også en platform til udvikling af web-applikationer.
SQL i Drupal
$result = db_query(”SELECT titel,nummer,aar FROM {artikel} WHERE skribent_id=%d”, $skribent_id); while ($artikel = db_fetch_array($result)) {
// print $artikel['titel'] etc.
}
Læs også
Fakta
Få mere at vide
http://drupal.org/developing/modules – Officiel dokumentation for modul-udviklere
http://en.wikipedia.org/wiki/Drupal – Wikipedia om Drupal
http://www.whitehouse.gov/ - et kendt Drupal-site
http://www.packtpub.com/drupal-books – Packt Publishing udgiver mange bøger om Drupal
Fakta
Infoboks – aod.info
name = AoD
description = Test-modul ti Alt om Data
package = AOD
version = 0.1
core = 6.x
Infoboks – aod.module
<?php
// $Id: aod.module
/**
* @file
* AoD test module.
*/
?>
Schema-krogen
function aod_schema() {
$schema['skribent'] = array(
'description' => 'Alle kendte skribenter',
'fields' => array(
'skribent_id' => array(
'type' => 'serial',
'size' => 'normal',
'not null' => TRUE
),
'navn' => array(
'type' => 'varchar',
'length' => 50,
'not null' => TRUE,
'default' => ''
)
),
'primary key' => array('skribent_id')
);
return $schema;
}
Læs også
Fakta
Få mere at vide
http://drupal.org/developing/modules – Officiel dokumentation for modul-udviklere
http://en.wikipedia.org/wiki/Drupal – Wikipedia om Drupal
http://www.whitehouse.gov/ - et kendt Drupal-site
http://www.packtpub.com/drupal-books – Packt Publishing udgiver mange bøger om Drupal
