In the previous post we introduced, Drupal the Content Management System. We also made a fleeting remark that Drupal is so powerful a CMS that it is also called a Content Management Framework. This time around, we will look at what makes Drupal THE content management framework.
The real power of Drupal comes from what we can call the holy trinity of Drupal – Taxonomy, CCK and Views. But before we come to what these are let us understand how Drupal manages content. Drupal calls your content as Node. All of your content – be it blog posts, static pages, story articles, product reviews, etc are the same for Drupal – Nodes. What is different though is the content type. For Drupal, a content type defines a set of Nodes – Each content type has a distinct set of fields that define the node. According to Drupal Documentation, a node is a piece of content in Drupal, typically corresponding to a single page on the site, that has a Title an optional Body, and perhaps additional fields. Every node also belongs to a particular content type, and can additionally be classified using the taxonomy system. Examples of nodes are polls, stories, book pages, images, etc. (via Drupal Terminology) Savvy?
Now lets have a look at Taxonomy. Taxonomy is literally ‘the science of classification’. The Drupal taxonomy system enables authorized users to categorize content using both tags and administrator-defined terms. It is a flexible tool for classifying content with many advanced features. Further information can be found within the taxonomy system documentation. (via Drupal Terminology)
What taxonomy helps in achieving is define a system of categorisation for content on your Drupal-run website. Now, since this system of categorisation is system-wide, you can really play with taxonomy in wonderful ways. Taxonomy is a very powerful tool within Drupal and plays an important role in streamlining your content structure and organisation on the website. It is available as an optional core module in your Drupal installation.
Next up is CCK, which stands for Content Creation Kit. CCK is a ‘contributed module’ (which means it is not included in the core package of Drupal and needs to be downloaded and installed; more importantly, it is a community contributed module and not initially developed as part of core drupal functionality), which permits site developers to define custom fields and content types. A variety of extension modules to CCK exist permitting specialized field definitions such as images, dates, and computed values. (via Drupal Terminology). What CCK helps you in doing is define custom fields to define your content types. Say, I am making a corporate website and want to list all of my customers. How do I do it? I create a content type for my customers, where the Customer Website is a Link field defined by CCK, Customer’s Industry is a Drupal Taxonomy term, again being referenced thruogh CCK, Customer’s Logo is an Image Node being referenced through CCK. Could I have done it without CCK? No!
Finally, We look up at Views. It is again a contributed module, not part of the standard Drupal distribution, which allows site developers a simple graphical interface for modifying the presentation of content. Views permits selection of specific fields to display, filtration against various node attributes, choice of basic layout options, and other more advanced features. (via Drupal Terminology) The Views module starkly highlights the power of the Drupal Framework and how drupal abstracts your data from the presentation. Using the Views Module (and its GUI), you can create new displays from a set of related data. Lets say, I want to have a user directory on my website. So I pick up some personal information from each’s profile, then I query the drupal database and list the posts contributed by each user, and structure it along and persent it as a whole page using Views; with the ease of point and click. Think of it as the Report Designer from your favorite Database Application. It’s that powerful!
Finally, we should also make a mention of the Drupal API, which is a very robust and extensible API using which anyone can create new modules that implement new functionalities in your favorite CMS application. Do you need anything else than Drupal? Not in this life, maybe.