Skip to content
bignomanatee edited this page Dec 29, 2010 · 1 revision

There is a lot that is wanting about the way Drupal works; nonetheless there are features that have made it popular amongst general audiences:

Administratively created, deep custom content types.

Drupal's node system in partnership with CCK and views allow you to create a deep structure - say a recipe, that has one or more ingredients, each of which have an amount and a type; all this without coding

Polymorphic content and contract based modules

The fact that all content is a variation of the same class of item ( a node) means that you have the opportunity for polymorphic extension. That is, a comment system that works for blog articles also works for recipes. This is the foundation for a contract system between modules; for instance, if I want to make a DHTML tool available for Drupal I can write a Drupal module for it, and use the Drupal API to map it to include or exclude various content types (node variations), and even be specific on a field by field basis.

Most CMS's have "Balkanized modules": i.e., there is little introspection between modules - at best they share a contract with the admin tool and access to the same repository.

A views engine that allows you to generate pages that report almost any permutation of data you want.

The views engine is extremely sophisticated. You can essentially create queries, join data, and from the result, choose fields, formats, conditions, and templates all through the UI. I have only seen that kind of power in enterprise level databases.

A tag system integrated into the content system

Not a massive win - but you can create semantic lists of tags to qualify data and they integrate with menus, views generation, et. all.

A HUGE amount of user generated modules

It is nearly impossible to think of something that has not gotten a significant treatment as a Drupal module - Facebook integration, web services, file management, etc.