Reusing functionality with Drupal Modules, Features, Install profiles and Distributions
A module is one brick
Modules• Small and large bricks• More then 6000+ available• Code packages downloaded from d.o or drupalmodules.com
Functionality• Module ≠ functionality, with Drupal most of the time data = functionality – e.g. Views, content types, fields, variables, comment• Most CMS have a News module, Drupal has: – Module Node/CCK: Content type news – Module Views: Multiple content listings – Module Taxonomy: Categorise news – Module Comment: Commenting on news articles• Creating this news functionality takes configuration every time!
Features: multiple bricks already assembled
Features• “A feature is a collection of Drupal entities that, taken together, satisfy a certain use-case.”• Multiple bricks assembled – e.g. A news feature as described earlier• Technically its serialized data in a Drupal module.• Build by Developmentseed
Features• Features have a distributed system. Vendors are encouraged to setup a feature server.• So where can I find them? – http://drupal.org/taxonomy/term/11478 – Vendor pages like http://code.developmentseed.org• How can I build them? – Http://drupal.org/project/features – http://drupal.org/node/580026 – Check out modules: Ctools, Boxes, Context, Strongarm, Spaces
Install profiles: automated system to assemble bricks and pre- assembled bricks
Install profiles• Install profile: a list of modules, features and themes to install and additional configuration to be set. – Limited to projects available on d.o• Drupals packaging script translates a profile into a downloadable package including Drupal core, modules and themes.
Install profiles• 118 install profiles available – http://drupal.org/project/installation+profiles• Creating a install profile: – http://drupal.org/node/159730 – profilename_profile_modules(), profilename_profile_details(), profilename_profile_final()• Or Drush make files: – http://drupal.org/project/drush_make – http://drupal.org/node/642116
Distributions: assembled packages
Distributions• Distributions are packages similar to packaged install profiles. Differences: – Downloadable from vendor pages. – Modules/themes do not need to be on d.o – Core hacks are possible!• Find them at: http://drupaldistrowatch.com/• Create them by packaging your total codebase.