Drupal may be free and used by lots of hobbyists, but it is not a toy tool. It is a software system so massive that even its most bright and devoted developers can (and sometimes do) spend many years understanding parts of Drupal. Most Drupal developers have a hard time even keeping pace with development of the system, which is necessary to avoid coming to work one day and knowing less than they did the day before.
Roughly half of this book explains concepts that Drupal developers of every specialization should know - coders and module developers, designers and interface experts, server managers and database optimizers, as well as site builders.
The other half of this book is primarily targeted towards you: someone who wants to be a great Drupal site builder, building website functionality by clicking in the Drupal interface and making different modules work well together. But if you aspire to become a great Drupal coder, you will also find this book's second half useful.
The content of this book deals almost exclusively with functionality and information structure – things that could be called “the skeleton” of how a website works. Relatively little focus is put on topics like the user interface or modifying the presentation of websites – there is, for example, no chapter explaining how to install a wysiwyg editor in Drupal. This choice is very deliberate. Building the right information structure for a website is the foundation for making it useful, and learning other Drupal skills first would be a mistake. When you feel that you grasp most things presented in this book, you will have no problems installing a wysiwyg editor of your choice. If you had been using a wysiwyg editor to upload images, without taking your information structure into account, you would risk serious problems when trying to reuse the images on other parts of your website.
The Drupal way
Nothing covered by this book requires that you know how to code. The most advanced “code” mentioned is HTML links, and even HTML coding is only mentioned in some exceptions. Yet the topics in this book are essential to anyone who wants to code and build Drupal modules. Why?
One of the strongest merits of Drupal is that it allows you to build professional websites with very little coding. This is possible thanks to some very general and extremely flexible modules (plugins) available to extend Drupal's capacity. These modules not only make it possible to assemble amazing web applications without a single line of coding, they also provide coders with powerful libraries that can make every line of custom-written code a hundred or even a thousand times more useful.
A coder who doesn't know the ecosystem of Drupal modules well might reinvent the wheel over and over again. She might write code that, to a large extent, is unnoticed, unused – and unnecessary. On the other hand, if you, as a coder, know the most common Drupal modules well, you have the chance to extend them with small, efficient pieces of code. The result is you will have much less code to maintain and update, you will find better opportunities to reuse your code in other settings, and - surprisingly often - other Drupal developers will find new and unexpected use cases for the functionality you have added.
The philosophy of using the ecosystem of modules when building sites by clicking and configuring in addition to coding your own modules has been called by some the Drupal Way. The Drupal Way includes:
- Using common and well-used Drupal modules to solve tasks, when possible.
- Using modules that extend the common and well-used Drupal modules, rather than modules that are relatively isolated islands in the ecosystem.
- Focusing problem solving around how you can use and reuse the common and well-used Drupal modules, even when writing new code is required.
- Sharing your solutions with the Drupal community, if at all possible.
The philosophy behind the Drupal Way is the same as for open source in general - things are better when we work together.
The advantages of building sites the Drupal Way is not only that the ecosystem of modules grows and the community is strengthened; the direct economic advantages are equally appealing. One example of this is the work put into maintaining and upgrading websites. Drupal sites based on common and well-used modules will have the help of thousands of other website maintainers when it comes to finding and fixing bugs, getting one-click upgrade paths, or developing new features. Another advantage is that all Drupal developers will understand how the site works. Site owners at the opposite end of the scale, with sites largely based on custom code, will have to find and solve bugs themselves, develop all new features alone, and will most likely not be able to port their sites to the next version of Drupal. In the worst cases, they won't even be able to apply security updates provided by Drupal's security team, since custom hacks in the Drupal source code might be overwritten. On top of all this, there will only be a handful of people in the world who know how these sites work – making them unpleasantly vulnerable. The site owners could just as well have ignored Drupal altogether and built a custom publishing system, like web developers used to do in the previous millennium. This is not a situation you want to be in.
This book is completely based on the Drupal Way. All modules mentioned in this book are among the most used and tested modules in Drupal's ecosystem. The four modules given closer attention – Views, Flag, Rules and Page manager/Panels, are the foundation of innumerable websites the world over, and are considered by many to be the most important modules for Drupal.