L'une des grandes force de Drupal est d'être un mélange entre le CMS pur souche et la plate-forme de construction (CMF = Content Management Framework).
Il a été conçu de base pour être étendu, via ses mécanismes de <em>hooks</em>, et ses nombreuses API documentées (cf . http://api.drupal.org/api/drupal).
De plus il dispose d'une base importante de modules "contribués", qui permettent d'étendre les fonctionnalités. Mais parfois, les besoins d'un projet sont tellement spécifiques qu'il est nécessaire de développer un module. Dans ce cas, il est important, pour permettre une intégration optimale, de respecter certaines règles : utilisation des API (encore elles), des fonctions Drupal (notamment pour les accès à la base de données), et des bonnes pratiques de codage.
On peut se reposer sur une documentation bien fournie, que ce soit en ligne (https://drupal.org/documentation/develop), ou via des livres, par exemple chez Apress http://www.drupalbook.com/ ou Packt publishing : http://www.packtpub.com/drupal-7-module-development/book.
Depuis la V7, les Entities permettent d'ajouter des champs à tout contenu spécifique ce qui étend encore un peu plus les possibilités.
Bref, il y a pas mal de choses à faire...