Drupal
From DocForge
Drupal is a web-based content management system, or CMS, written in PHP. The official release of Drupal is version 7, although version 6, and to a lesser extent version 5, are widely used. For version 6, officially supported data sources are MySQL and PostgreSQL. However, version 7 includes support for SQLite as well. Support for other databases is also possible, especially in version 7, due to it's more abstracted database api.
Contents |
[edit] Features
- Easy installation - after installation all configuration options are available through the administrative section of the web site. Additional modules are installed by unpacking into a directory and turning on the modules through the administrative section.
- Easy upgrades with an automated update script to handle relational database changes.
- Many themes available and new themes are relatively easy to implement.
- Common CMS features are included in built-in standard modules, including blogging, forums, user profiles, categorization (taxonomy) and comments.
- Role-based access control provides granular security. Roles can be added by an administrator and assigned to users. Two default roles are "anonymous user" and "authenticated user". Permissions (such as "create pages", "post comments", and "select different theme") are assigned to roles.
Features of interest to software developers:
- Drupal is written in the functional programming paradigm. Objects are used for passing basic data elements, such as users and nodes.
- Drupal is a modular system down to the core. Creating basic modules is very simple. New content types are created by writing modules.
- The basis for all content is one data type called a node. This allows all functionality for nodes to automatically support new content types. For example, all content types can be organized by taxonomy. New content types are created by expanding the features of a basic node.
- Simple permissions are added by each module and automatically maintained by administrators from an access control page.
- Built-in RSS syndication.
- Internal application logging.
- Execution is procedural, with complex data passed as objects.
- The developer's mailing list, forums, and ticket system are very active.
- The highest levels of the development team are very strict about the quality of contributions. Every contribution is heavily scrutinized before being accepted into the core of the project code.
- Multiple theming options are available, including purely functional, through a theme engine, or by overriding built-in templates.
[edit] Terminology
Drupal consistently uses a set of terms to describe various aspects of the application. The language used both in the user interface and programmatically is friendly to developers but often intimidating to end users.
- Node is the fundamental data type of basic content, what you might call a document. All document types are extensions of nodes.
- A block is a section of HTML displayed anywhere around the main content. Blocks can be created within modules or through the administrative system. Blocks can also be turned on and positioned through the admin.
- Taxonomy is the organized set of categories. Sets of categories can be used for multiple or single node types.
- A module, as one would expect, is a set of functions following an API naming convention and typically included in one file in the modules directory or subdirectory of modules.
- A theme, also as one would expect, is a set of files and/or functions defining most of the layout, HTML, and CSS of the application.
[edit] Drupal Developers
There are many web developers who specialize in Drupal. Given software requirements they will customize the basic Drupal application by building modules and themes. In addition to what one might require from any web developer, there are plenty of questions one should ask when hiring a Drupal developer:
- Ask what contributions they've made to the Drupal project. Have they contributed patches? Do they have any downloadable modules available on the Drupal site? If so, they should be able to demonstrate them on a sample site. Drupal contributions require a great understanding of Drupal's architecture, API, and often internals.
- Have them describe the various customizations they've done for other clients. They should be able to explain what unique demands were made and how they solved it.
- See if/what they've contributed to the Drupal community. A very knowledgeable and engaged Drupal developer will often post to discussions on the Drupal website and elsewhere.
- Have the developers demonstrate their work early and often. Since Drupal starts as a complete system and the developers are extending it, they should be able to demo the site very early and show off each addition as it's worked on. This should be very informative early in the process if they're on track.
[edit] Usability Issues
Users often raise a common set of complaints when using Drupal:
- Drupal has a high learning curve for users not already familiar with site administration or CMSs. Features like content filters and block visibility rules are not obvious to the non-technical. Some of this is due to Drupal being a generalized CMS, but improvements can be made.
- Much of the language used in the administrative interface is more familiar to developers than new site administrators. (See #Terminology.) Granted, this is often an issue with any site management interface because the back-end tasks must be broken down into technically manageable components.
- Drupal can have a confusing administrator navigation for those not technically inclined. This has improved with every major release, but it's still confusing to some. When adding various 3rd party modules the admin can be especially confusing and cluttered.
- Drupal lacks common workflow features. It has very basic workflow, but anything advanced requires 3rd party modules that often aren't as high quality or conflict with each other. These modules would be much less convoluted, in both implementation and usability, if similar features were integrated into the Drupal core.
- Drupal has some odd quirks, like automatically modifying menu items when changing publication of a node, without informing the user.
- Some custom designs require ugly solutions, like lots of blocks or regions.
- File management is lacking in features. Files should probably be prioritized data, similar to nodes.
- Picking the right modules and installing them requires a very knowledgeable Drupal user, system administrator, or developer. It's often not simple, as an end user, to pick appropriate modules and add them.
[edit] Configuration Issues
When attempting to use Drupal with PHP 5.2 connecting to MySQL, the "mysqli" driver must be set in settings.php. The "mysql" driver will run SELECT SQL queries but not properly execute UPDATEs. The first symptom you may notice for an improperly configured Drupal installation is the inability to remain logged in. The first page displayed after logging in will look correct, but proceeding pages will show you are not actually logged into your Drupal installation.
[edit] See Also
- Drupal Project Homepage
[edit] Documentation
- Drupal Handbooks for users, administrators, and developers
- API Reference for module, theme, and core developers
- Forms API Reference