Understanding DrupalThe beginning is the most important part of the work - Plato
This section provides background information that will help you understand the concepts andtechnologies that underpin Drupal.
Drupal conceptsBefore you install Drupal and begin using it, its a good idea to get an overall sense of what it is,and how it works. This section gives you the big picture, helps you to frame how you think aboutDrupal, and assists you in determining whether its a good fit for your project. This smallinvestment of time up front will help you immeasurably in the long run.
The Drupal overviewAlthough Drupal is often described as a "content management system" (CMS) it is also a "contentmanagement framework" (CMF). In other words, unlike a typical CMS, it is geared more towardsconfigurability and customization. Picture a range of measurement where one end of the scale islabeled specific and the other end abstract. On the specific end of the spectrum, you wouldhave something whose form is very specialized because its meant for a specific purposelike,say, a hammer. On the other end of the spectrum, you would have something much moreabstracted, that is available to be configured any way you like, for a variety of purposeslikesome wood and a chunk of steel. You could make a hammer, or any number of other things withthe wood and steel.Of course, while chunks of wood and steel are more configurable than a hammer, they arentterribly useful because few people have the specialized knowledge to work with such rawmaterials. Drupals purpose is to sit in the sweet spot between the two ends of the scale, and createa sort of builders kit made up of pre-designed components that can be used as-is or can beextensively reconfigured to suit your needs. Its design provides incredible flexibility while stillallowing people who arent programmers to make powerful websites. This principle of manageableabstraction is important to understand, because it is a central concept to all things Drupal. Whenyou understand why a measured amount of abstraction is valuable, youll begin to understand whythis approach is such a strong argument for using Drupal.
The power of abstractionImagine you get yourself a shiny new toy truck and a matching toy boat, and as you are enjoyingthem, you find yourself thinking about how nice it would be if you had a toy that had certaintruck-like qualities, and certain boat-like qualities. But, unfortunately, your truck and boat arefirmly rooted at the specific end of the toy spectrum. They are what they are, you must enjoythem as-is.Now, imagine that someone hands you a case full of neatly arranged little toy vehicle partsorganized according to type. They explain that this vehicle construction kit will allow you tosnap together whatever sort of toy vehicle you like, with the ability to choose different body types,
snap together whatever sort of toy vehicle you like, with the ability to choose different body types,varied cockpits, and multiple propulsion mechanismslots of jets, propellers, wheels, tank treads,etc. Now, your truck/boat dream can become a reality. And, as you look at all the shiny new bits,you realize that a truck/boat is just the beginning.Many popular content management systems are focused on a fixed, particular way of approachingthe task of managing a websitethey tend toward the specific end of our spectrum. While theymay use various plug-ins to extend that functionality, the plug-ins are often authored in the samemannerthey are very fixed in their task-oriented approach to getting things done. Drupal, on theother hand, with this idea of abstraction embedded in its DNA, is intentionally generalized in itsapproach to doing things. For instance, instead of creating a fixed news engine, Drupal providessystems and tools that allow you to quickly assemble your own custom news engine and tweak itto do exactly what you like. But because these systems and methods are generalized in theirapproach, they dont lock you into just news-related thingsyou can use them to make all sorts ofother engines and functional widgets. This means that once you learn some of the key toolswithin the Drupal universe, you will realize that you can endlessly combine them to do all sorts ofclever things you (and the Drupal system/plugin creators) may never have imagined before.A concrete example might go something like this: Say you want to have a news engine that letsyou post news articles on your site, and you want to be able to put a little widget on the homepagethat shows blurbs for the five most recent news stories. Next, you decide that you want to keeptrack of recent blog posts, and put a running list of blurbs of the five most recent of those on thehomepage as well. With a CMS whose paradigm is rooted more on the specific end of thespectrum, youd likely look for a module that handled news, and had a feature that let you putblurbs on the homepage (not an uncommon thing). Next, youd locate a module that would trackthe latest blog posts and put a list of those on the homepage (again, not unlikely to find such athing). Each module would concentrate on tracking, managing and displaying the information ithandles.But, what happens when you have that brilliant middle-of-the-night idea, and want to blend thesetwo functions by showing a list of blog posts about the latest news items, ordered by most-active-contributor first? If youre using a toy truck CMS, you may be out of luck, or need to hire adeveloper to write you something custom. But with a CMF thats built around the idea ofabstraction, you can whip out your kit full of parts and knock this together pretty quickly. Theadvantage of an architecture like Drupals is that the generalization and standardization in how itdoes things means that building all sorts of clever, customized site functions is just a matter ofsnapping parts together. And, to return to our toy metaphor, we arent talking about those shabby,knobbed blocks that let you create only rough approximations of the things you wantDrupalsflexibility is layered, and it gives you highly granular control over nearly every aspect of whatyoure building.Of course, this flexibility comes at a certain cost. While a toy truck is instantly understandable andready to use without much thought, a modular vehicle construction kit will by nature require youto read the instruction manual first. Keep in mind, this is not about building from scratch, itsabout learning how to connect modules and systems that are already available to create articulate,customized websites.Drupal has been intentionally kept flexible enough that its power, and the means of accomplishingcertain tasks are not immediately evident to those unfamiliar with it. However, after investing alittle time, you will find that learning how to do things the Drupal way opens up a whole newworld of possibility you never knew existed outside of custom programming. You will likely leaveyour toy truck and boat in the closet gathering dust.
How Drupal does itAs explained above, Drupals power comes from its more abstracted approach to handling webcontent and functionality. People often think of a website as a collection of pages, with somefunctions (like a blog, or a news engine) thrown in to round it out. When they go to manage theirsite, they are thinking in terms of a tree-like hierarchy of pages that they will go in and edit.Drupal, on the other hand, treats most content types as variations on the same concept: a node(more on these in a moment). Pages, blog posts and news items (some possible node types) are allstored in a common pool, and the sitemap (its information architecture) is an overlay that isdesigned separately by managing and editing navigation menus. Its a lot like the separation youfind in standards-compliant page codingXHTML provides the meaningful structure of theinformation, while CSS arranges it for presentation. In Drupal, nodes hold the structuredinformation pertaining to a blog post (such as title, content, author, date) or a news item (title,content, go-live date, take-down date), while the menuing system creates the sitemap as a separatelayer. Other elements (node layout themes, and modules like Views and Panels) provide theonscreen display of node contents.The beautiful thing about keeping these layers separate, is that its simple to provide completelyremixed sitemaps for different user types just by serving them a different navigation menu basedon their login information. Pages can be grouped differently, prioritized in a different order basedon user needs, and various functions and content can be shown or hidden on a per-user-type basis.It just depends on the experience you want to create.OK, so what exactly is a node? At its most basic, a node is a cluster of related bits of data. Whenyou create a new blog post, you are actually creating a collection of things such as title, content,author link, creation date, etc. Some of these data points hold information that is displayed whenthe node is displayed. Others hold meta-data that describes important facts about the node (such asthe category).By keeping all nodes in one big bucket instead of segregating them out into separate systems,Drupal ensures that they are all built on the same foundation, and can be handled in the same way.This means that they can all be remixed with down-to-the-pixel control over how they aredisplayed, and their data points can be used and combined together to organize, search and relatenodes with other nodes. This flexibility makes for some powerful possibilities.Again, because the idea of abstraction is built into the Drupal paradigm, instead of creatingspecialized solutions for each and every little thing someone might want to do, systems andmethodologies have been built to handle more generalized tasks, and then threaded throughout theentire CMF. These more generalized ways of doing things mean that once you lear