Pages

Tuesday, December 28, 2010

Some people use Drupal for a long time before having direct interaction with this community. These folks might be unaware that the community is out there, or of the benefits of having a good relationship with it.
In this chapter, we'll introduce the community and give some suggestions for how to interact with it (and get support) to get the best results for you and your website(s). First, let's start by sharing some basic information about the community. Then we'll talk about finding support. We'll end with some suggestions of ways that you (yes, you!) can say thanks to the Drupal community for the help and free software.

Thursday, December 23, 2010

We're back down to 0 critical issues again!
We've announced a January 5 release date for Drupal 7!
There are release parties being thrown worldwide on January 7. Please set one up in your town! (tips)
So. It's officially GO time for final testing! Something to keep you busy over the holidays. :)

Since the last release candidate two weeks ago, we have fixed numerous bugs, improved the AJAX framework, field UI etc. Also alternate database systems have seen serious improvement thanks to http://ci.drupal.org/. PostgreSQL 9.0 now installs without errors, and we have 100% tests passing on SQLite! And files[] is no longer required in .info files for each file! Only if the file in question registers a class or interface. $cruft--;

The first alpha announcement provided a comprehensive list of high level improvements made since Drupal 6.x, so in this announcement we'll concentrate on how you can help ensure that Drupal 7 is released as soon as possible and is as rock solid as the previous Drupal releases that you've grown to love!

There are a number of modules already ported to Drupal 7 for your testing pleasure. You can keep tabs on whether or not your site is ready for Drupal 7 by using the Upgrade Status module. If you are a translator, now is the time to start working on your translations. If you are a module or theme maintainer, now is the time to start working on the update to Drupal 7! Read on for more details.

Start by either installing a new Drupal site or upgrading an existing one running on Drupal 6.x (see INSTALL.txt or UPGRADE.txt in the package for some important instructions). When setting up a new site, you can use the development module to generate some test data (content, users, etc) to help you start testing quickly. As with everything still in development, we do not recommend running release candidates on a live site. Also, always be sure to make a backup of your data before performing any upgrade or starting testing.

Module and theme developers

If you have not done so already, now is the time to ensure that your modules and themes will work with the new version of Drupal. The updating your modules and updating your themes pages have plenty of information to help you with the migration to Drupal 7, and the Coder Upgrade module can help automate many of the most tedious changes. Consider signing up for the #D7CX pledge, to have a stable release of your module available when 7.0 ships!

Please help ensure that your users will have a smooth and well tested upgrade path in the not to distant future! Be sure to file any core bugs that you may find while updating your module or theme.

Drupal interface translators

The interface strings of Drupal 7.0 are officially frozen now. Only critical fixes, and corrections may be made to the interface text from this point forward. Read more about how localize.drupal.org works and how can you contribute in the drupal.org handbooks.

Testers

Are you gifted with the "Poison Finger"? Does seemingly normal code collapse into a flying mess of errors as soon as you get hold of the mouse? If so, why not have a run at breaking Drupal? When you discover a bug, check the issue queue to see if someone else has already found it. If your suspected bug hasn't been reported yet, please submit a bug report (remember to search first)! The more bugs we can find and fix before the final release, the better.

Monday, December 20, 2010

Water&stone has released their annual Open Source CMS Market Share Report. Who is dominating the open source web content management space? And who managed to move ahead of other contenders? Find out here.The Report

2010 is the third year that water&stone has published the Open Source CMS Market Share Report. The report is non-commercial and released under an open license, unlike similar work from other industry firms. This year’s report began with thirty open source systems but ten were eliminated due to current market position. Water&stone assess the remaining twenty systems on metrics related to rate of adoption and brand strength. Using this data, the report defines market leaders.

The report uses multiple data sources to draw conclusions. In addition to a survey, which water&stone conducted with over 5000 responses, other metrics included:

* Product downloads
* W3Techs’ analysis of technologies used on the top one million websites in Alexa’s rankings
* BuiltWith’s technology rankings
* The number of developers offering services in the technology on Elance and Guru
* The number of books in print for the platform
* Google page rank

Using a multi-faceted approach minimizes the likelihood that the outcome is biased toward a single factor and hopefully quiets the inevitable cries of, “But what about…” that will come from supporters of platforms that did not rank as expected. The firm was also very careful to note cases where their methodology might have resulted in a skewed outcome.

The Good

WordPress, Joomla! and Drupal, three of the most well-known open source CMS platforms, remain decisively in control of the market. In metrics such as number of installations and shares of Facebook
posts, these three clearly dominated the field.

water&stone 2010 CMS survey - installations

share of Facebook posts

In fact, in almost every measure, there is little indication that the leadership of the top three platforms is being challenged in the near future; but this is the internet — we could all be surprised.

As for the leader of the pack, WordPress managed to take the lead in a number of key metrics. They included:

In terms of technology specific results, Liferay leads the Java WCM market, followed closely by Alfresco. DotNetNuke is the leading platform for the .NET market, although newcomer Umbraco is quickly narrowing the lead. The report also lists Concrete5 and Umbraco as solutions that are gathering strength in the market.

Friday, December 17, 2010

Posting external links to your website in the Drupal.org on-line documentation is frowned upon. We encourage people to contribute back to the handbooks instead of taking reader attention away. External links should only be added as a reference.

If you want your new page reviewed for location or content after adding it, submit an issuewith status "needs review."

Rough drafts of new pages or edited pages which are not production ready -- i.e., need feedback and/or additional development -- should first be submitted as an issue to the Documentation project as an HTML or text attachment.

Finally, make sure you have enabled the personal contact form in your user account in case someone wishes to contact you about your contribution.

Restricted actions: The site maintainer role is required to delete handbook pages, to remove comments (once they have been incorporated into a handbook page), to unpublish and publish pages, and to edit certain pages. Submit an issue if you need any of these tasks done.

Overview
What does the project do? What problem does it solve? Who is the intended audience?

Features
A bulleted list of features to help people quickly figure out if it's useful to them.

Requirements
Describe required PHP version, link to required modules and any other extraordinary items or steps needed to install or use.

Known problems
Be upfront about any known problems, bugs, etc. Link to active issues regarding those problems. Tip: use [#nnn] syntax and Drupal.org will automatically link to the issues and show their current status inside the node body.

Monday, December 13, 2010

Presets

OpenLayers presets contain

Map Settings

Height, width

Centerpoint

OpenLayers source file, theme location, ProxyHost

Enabled Behaviors

Enabled Layers

Enabled Styles

OpenLayers Map Views

OpenLayers map views use the Views module merely as a way to put a map on a page. They do not, like other views, query data by themselves. To add Drupal nodes or data to a OpenLayers map view, enable openlayers_views and create a OpenLayers Map Data view, and add it as a layer.
OpenLayers Map Views pull from OpenLayers Presets

Layer Types

Layer types are plugins. A base set of layer types is provided within the OpenLayers module, and other contrib modules like MapBox can provide even more. Layer Types generate Layers and provide their functionality

Layers

Layers are exportables which contain per-layer configuration.

Styles

Styles are exportables which contain OpenLayers Styles. They are attached to layers by the configuration in Presets.

Plain-English Explanation

Styles are exportables, as simple as that, they don't have any functionality and have a very simple interface
Layer types are basically factories for layers and provide their functionality. They're ctools plugins, so they're loaded via that framework, but they aren't exportables because they're functional, rather than data. A layer_type generates layers, which are, in fact, exportables, which are tied back to the layer_type that created them. At runtime, a layer_type is initialized as an object (which has the all-important render() function) with a layer, to provide them with configuration and data. And layer types can also provide another function outside of this - the settings_form() allows a layer to define a per-site setting, which is most commonly an API key.

Of course, this is a bit un-obvious with a quick glance over the code, but it's quite important, because this means that we can define new layer types outside of openlayers proper, which provide their own forms and functionality, and then make multiple layers with those layer types.

The same goes for behaviors: behaviors are basically factory objects, since they provide the same kind of render() method and are also ctools plugins, but then give birth to instances of themselves, which are the behaviors you attach to each map. So as a result, behaviors can have per-map settings, like the zoomToLayer behavior can have a per-map setting of which layer to zoom to.

Sunday, December 12, 2010

The golden rule for Authcache is: the final cached page HTML must be the same for every user! For example, if you set up the "paid members" role to receive cached pages, then the final source HTML must be the same for each person for cached pages within this role.

The most common theme element for logged-in users is a username link (e.g. "Hello, [username]"). Authcache defines several new variables to use in your theme files (e.g., page.tpl.php):

$user_name to display the logged-in user name

$user_link to display the name linked to their profile (both work for cached and non-cached pages).

You'll need to modify your .tpl files to use these variables if you display a username or a link to a user's account page.

A global variable named $is_page_authcache is set to TRUE when a page is to be cached. This variable may change to FALSE during page generation, however, such as when a status message is displayed. You may also set it to FALSE to programmatically disable caching.

The authcache_preprocess() function defines these variables. For example, if a page is to be cached, then the output of $user_name will be <span class="authcache-user"></span>. The value will then be filled in automatically by Authcache JavaScript. The username and user id is retrieved from a cookie that is created when a user logs in.

Friday, December 10, 2010

Whenever you seek help from the handbooks and get stuck, start taking notes. Write down every step that you take as you try to solve your problem. Don't do it later, because you'll forget the all-important details. After you find the solution, use your notes to improve the handbook. Once you develop this habit, it is a very easy way to help!

You don't have to be a member of a special team or get permission in order to help. Everyone with a Drupal.org account can help.

Here are ways to improve the handbooks that are available to anyone with a Drupal.org account:

Edit pages directly by clicking on the "Edit" tab. Most handbook pages are open to editing by Drupal.org users. We do have a number of pages that are "locked" for various reasons. Don't worry about mistakes. We keep revisions of all handbook pages so we can always go back to a previous version, if needed.

Submit an issue to the "documentation" project to suggest an update or ask for feedback. See if an issue already exists for your suggestion; if so, you should improve the existing issue. For more details, see Documentation issue reports.

Add handbook pages. Presently, all authenticated users can add new pages. If you want your new page reviewed for navigation (where to place in the handbook hierarchy) or content after adding it, submit an issue with status "code needs review." For "missing" pages you feel should be created to cover a particular subject, do not create a nearly-blank stub page; instead, submit an issue with category "feature request." Be sure to familiarize yourself with the Documentation writer's guide and the Style guide.

Thursday, December 9, 2010

Building Facebook Applications can be a complicated process. We couldn't possibly write a one-size-fits-all description of how to configure all apps. So, in this section we describe a few commonly-required features and how to implement them with Drupal for Facebook.

Note: In general, if you plan on creating any kind of Facebook application (which we assume you are!), you must enable the fb_app.module (listed as Drupal for Facebook Applications in /sites/all/modules) and fb_user.module (Drupal for Facebook User Management).

To support applications beyond simple social plugins, you must enable clean URLs by going to admin/settings/clean-urls on your site. If you don't, some links that Drupal creates will not work properly on FB Application (canvas) pages.

To support Drupal websites integrating FB features (FB Connect), enable the fb_connect.module.

To support FB Application (Canvas) pages, enable the fb_canvas.module.

Creating a patch

In the synchronise view, right click on an item (file or folder) and choose Create Patch.... Or in the navigator, right click on an item and choose Team -> Create Patch....

This brings up a two-page wizard. On the first page you can select where you want the patch made. For small patches it can be useful to create them on the clipboard, but normally you will want to save them in a file.

On the second page, use Unified diff format, and set the patch root most likely to your (Eclipse) project -- assuming you set up your Eclipse projects by core installs (6.18, 6.19, etc) and contrib/custom modules.

If you are creating a patch to post to an issue queue, it is common practice to name your patch file with the node id of the issue along with a word or two for context. This make it much easier to refer back to the issue after the patch has been applied.

There is a corresponding apply patch wizard that you can use to apply a patch to a project.

Tuesday, December 7, 2010

There are a couple Drupal starter themes. Zen, Sky, Fusion, and Framework are the four most widely used starter themes.

ZenZen is the most widely used starter theme for Drupal. It has lots of good quality documentation and won the "Best Drupal Theme" title. Zen has a lot of flexibility built in which means you can build off of it to create even better themes. Other starter themes such as Zen NineSixty and Basic, were originally highly modified versions of Zen.

Reported Installs: 45,001

Versions Supported: 5,6,7

Layout Types: 1, 2, and 3 column layouts

Fusions

Fusion is a theme used for creating advanced Drupal themes such as Acquia Prosper and Mix and Match. This theme can be based on a grid and has all the defaults already set. Fusion also has lots of support and can also skinnr for easy block style editing.

Reported Installs: 18,438

Versions Supported: 6,7

Layout Types: 1, 2, and 3 column layouts

Sky

Sky is a center aligned theme, which is almost completely css based. It has many configurable colour options and supports some of the more popular contributed modules. Although there is no Drupal 7 support yet, the development team is hoping to have a compatible release ready by the time Drupal 7 is released.

Reported Installs: 4,315

Versions Supported: 5,6

Layout Types: 1, 2, and 3 column layouts

Framework

Framework is a grid based theme, and is almost completely blank as well. It is very clean and simple, and works nicely in mobile browsers. Framework is good for general placements and basic theme designs.

Monday, December 6, 2010

Attribute Replacement

The OpenLayers library allows you to use a specific syntax, ${variable_name}, to easily style a feature based on its attributes. The most direct use of this is with the OpenLayers Views Display plugin.

Saturday, December 4, 2010

Content types

A content type defines the way in which content is collected and displayed. Content types are a container for all content with the same characteristics (e.g. a "Bio" might contain different kinds of information than an "Event"). Some fields are part of all content types (e.g., basic data such as a title, date, and author). Some modules create their own content types and some don't. Those that do can have unique fields defined in their content type (e.g., the Location module adds fields such as city, country, longitude, and latitude). Additional custom fields of many kinds can be added using the CCK module. Content types have settings that can be modified by editing the content type and managing the fields.

Examples of content types provided by core Drupal modules:

Page

A page is a simple method for creating and displaying information that rarely changes, such as an "About us" section of a website. By default, a page entry does not allow visitor comments and is not featured on the site's initial home page.

Story

A story, similar in form to a page, is ideal for creating and displaying content that informs or engages website visitors. Press releases, site announcements, and informal blog-like entries may all be created with a story entry. By default, a story entry is automatically featured on the site's initial home page, and provides the ability to post comments.

Webform

Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users.

Image

An image (with thumbnail or other sizes). This is good for photos, art work or screen shots.

Create your own content type

You can define a content type to exactly meet your information needs. The easiest way is to start with a page. As you create your content, think about the menu as well. Another handbook section you may find useful is Creating new content.

Creating content

To create content: click Content management > Create content, then select the content type you want to create. There are usually one or more fields within each content type. We are providing an example of a page.

Title and Body fields are found in many content types. The Title is used by Drupal to create the page URL. Keep it concise.

Body is where you put the text for the page. "Input format" controls what code can go in the Body field. There are three (core) options: filtered HTML, PHP code, and full HTML. CCK allows you to change the name of this field; for example, you might call it "Product description."

Use the log message to provide information that might be useful to other authors who may edit your document later, or provide your rationale for making edits to your own or other people's content. The log message is not visible to users without the appropriate content editing rights.

Menu settings are used only if you are making this piece of content an item in one of your menus. It's the most efficient way to create menus. Another handbook section you may find useful is Working with the Menu.

Comment settings are probably best set at the site level (click Content management > Comments > Settings), but can be specified for an individual piece of content.

You can attach files to many content types. The "Upload" module must be enabled, and then the content type has to be set to allow this.

If you enabled the Path core module or added PathAuto, you'll have URL path settings next. You can enter a "normal" name here rather than being required to use "node/2" when you refer to it later on. PathAuto will automatically create a URL based on your page title.

Authoring sets the time stamp and creator information. The other use for this section is to control the page or story order when they are based on the time and date it was created.

Publishing options: only "Published" items show up on the website. You can also promote content to the front page and make the content item sticky to the top of lists.

Thursday, December 2, 2010

TheContent Construction Kit allows you to add custom fields to custom content types using a web interface. In Drupal 5.x, custom content types can be created in Drupal core, and the Content Construction Kit allows you to add custom fields to any content type. In Drupal 7 and later, most of the functionality of CCK has been absorbed into Drupal core. For more information on fields in core, see Working with Fields (Drupal 7 and later)
Documentation and instructions are available in the separate CCK Handbook.

Summary and purpose of CCK?

Drupal comes with core content types like story and blog. For such a content type, go to 'Create content' and submit a new story or blog. That's sufficient for pages of pure text and with or without attachments.
But what if your users want to be able to submit reviews of their favorite aardvark? That would be a new content type, but I want to be able to display other stuff as well as a chunk of text for every node of that type, and I don't want it to be just attached file links.
My options: I could hack the story.module, OR I could see if someone has already created an aardvark.module for the exact type of content I want, OR using CCK I could create a new content type called Aardvark Review.
Using CCK, I can create a content type that has exactly the fields I need, no more or less. My Aardvark Review for instance might have:

text field (comments on the aardvark)

dropdown menu (aardvark color)

audio file (recording of the aardvark's grunting)

image (photo of aardvark)

The CCK admin interface for creating these new content types is nice and easy: just create your new type and then click through, adding the type of fields you want it to have and what their parameters will be (how much text for the review? which colors in the dropdown menu?). There are many add-ons available in the downloads section under CCK that add new kinds of fields to your options (video field, audio field, calculated values and vastly more complicated ones).
From the users' perspective, they'll just click on Create content > Aardvark Review and get a form that asks them to submit their review, the aardvark's color, a recording, and picture.

Wednesday, December 1, 2010

Decisions allows for several different types of advanced voting methods.

Simple Plurality
The most common voting method is Simple Plurality, where each voter gets to make one choice, and the candidate with the most votes wins.

ApprovalApproval Voting is a system where voters can give a yes or no vote for each candidate on the ballot. The winner is the candidate with the most approval votes. So if you like 2 out of 3 candidates, then you vote for 2 out of 3 candidates.

Ranked Choice - Instant-Runoff
In Ranked Choice Voting, voters can select candidates in order, by ranking their choices as first, second, third, etc. One type of Ranked Choice Voting is Instant-Runoff. The idea is that when votes are being counted, you gradually drop out the candidates with the least votes until there is one candidate with a majority of votes. If your first candidate is dropped out because of too few votes, then your ballot goes to your second choice. You can vote for multiple candidates in the order you prefer, and don't have to worry that you might accidentally help elect your least favorite candidate.

Ranked Choice - Borda Count
Another type of Ranked Choice Voting is Borda Count, where a certain number of points are awarded to the candidates based on voters' ranking preferences.

Ranked Choice - Condorcet
You can also do Condorcet style Ranked Choice Voting. The main point here is that the winner is determined by seeing which candidate performs best in heads-up matchups against the other candidates.
Because of all the advanced voting options, Decisions is an awesome tool for group decision-making. See also Advanced Voting with the Decisions Drupal Module.

Tuesday, November 30, 2010

The Wireframe module allows designers to create information architecture designs for user testing. Web page wireframes are an information architecture deliverable that convey the information, the structure and relationships between information, and the flow and navigation of information on a web page. The wireframe module allows designers to share their wireframes with remote users, programmers, and visual designers to improve the development process. The wireframe module allows designers to add, re-use, and manage interface objects in their wireframes.

Designers can create new wireframe components for re-use in the design of their wireframes. They can change the interface objects and they will change in all wireframes in which they appear. Each wireframe page has a list of interface objects that it contains and interface objects can be removed from wireframe pages.
To create a wireframe, simple click on create content, choose page and then select 'PHP code' input format. You do not need to know PHP, just use HTML code. But you can reuse a 'wireframe component' you added before: type <?php print _wireframe_view(184) ?> to insert the contents of node/184, where node/184 is a 'wireframe component'. That's all PHP you'll need. A 'Wireframe component' can be any input format, typically these are simple HTML snippets but they also can be simple PHP nodes to display a list of users etc.

Sunday, November 28, 2010

This guide explains how to create a Drupal website that supports more than one language, or languages other than English, popularly known as a localized, internationalized or a multi-lingual website.
A multi-lingual or internationalized Drupal website has two key components for translation:

This two module functionalities can be extended by contributed modules for language and locale.
User interface elements include built-in system strings such as menu items, form labels, help text, and button labels such as 'Log in', 'Logout', 'Submit', 'View', 'Edit', 'Delete' etc.
Content means the actual user-created pages, stories, blocks, etc. of the website.

Import an existing translation Administer > Site Building > Translate Interface > Import. You can check if the Drupal interface translation for your language is available at http://drupal.org/project/translations

If you don't have a translation file for your language as per step 4, you may need to translate the interface on your own. Translate interface Administer > Site Building > Translate Interface > Search. View details on the Content Translation module handbook page

Steps for Content Translation

You need to follow the below mentioned steps only if you are building a bi-lingual or a multi-lingual website. For a non-English language, simply make your desired language the Default in the step 3 mentioned above and start adding content in your own language.

Once you enable Multi-lingual support for a content type, while adding new nodes of this content type, users will see a drop down of all enabled languages and they can select the desired language for the content and any translations they create.

Also, for all existing nodes, users with Translate Content permission can see a Translate tab and will be able to add translations to existing nodes.

Translate menu, block and taxonomy

For a proper multi-lingual menu system and multi-lingual blocks and taxonomy install Internationalization module.

Drupal language-related resources.

Help the Drupal project create localized versions of Drupal, see the section on translationg of the Getting Involved handbook.
Writing code for localized modules, see the Localization API section of the Developing for Drupal guide.

Reading Drupal forum notes etc... I started to explore the database and tables out the back.
- Repairing the database didn't work.
- The registration page isn't a node, so I can't edit the permissions to access it
- I discovered that the sessions UID's listed registered users (1 etc) but not UID = 0 (anonymous users)

Could this be related to the problem at hand? It's interesting anyway :-), especially since I did a bulk mail to all the club members that the website was up and running an hour before I discovered the glitch!

Thursday, November 25, 2010

Manual Drupal 7 setup

To install and use Drupal in a language other than English without additional module requirements:
See if a translation of this Drupal version is available in your language of choice on the translation server. Not all languages are available for every version of Drupal, but if yours is available, follow these steps to install Drupal in your language:

Rename the downloaded file retaining only the language code at the end of the file name and its extension. For example, if the file name is drupal-7.0.pt-br.po rename it to pt-br.po

Create a directory named translations inside the directory of the profile you will be using. This is most likely inside profiles/standard.

Move the renamed .po file inside the translations folder you just created.

Install Drupal as per usual by visiting www.example.com/install.php.

Automating installation and updates

Once you start to add modules and a theme to the site, downloading and keeping translations updated manually can be tedious. It is suggested that instead you start off with the Localized Drupal installation profile or adapt the Localization update module to keep yourself updated.

Legacy translation downloads

You might find documentation mentioning drupal.org/project/translations as the source for Drupal translations. These projects only cover Drupal core and are packaged differently to the files available from localize.drupal.org. The new files and sources are better in many ways, so we are/were continually migrating to use localize.drupal.org only. It is suggested you look at localize.drupal.org as the primary source of language translations.

Wednesday, November 24, 2010

The SimpleTest module (Drupal 6.x) or Testing module (Drupal 7.x and beyond) provides a framework for running automated unit and functional tests in Drupal. It can be used to verify a working state of Drupal before and after any code changes, or as a means for developers to write and execute tests for their modules. The original module was based on the SimpleTest PHP library.

Visit Administer >> Site building >> SimpleTest (Drupal 6.x) or Administration >> Configuration >> Development >> Testing (Drupal 7.x) to display a list of available tests. For comprehensive testing, select all tests, or individually select tests for more targeted testing. (Note: Selecting all tests may take several minutes to complete, and if you select too many, they may fail to complete.)

After the tests have run, a message will be displayed next to each test group indicating whether tests within it passed, failed, or had exceptions. A pass means that a test returned the expected results, while fail means that it did not. An exception normally indicates an error outside of the test, such as a PHP warning or notice. If there were fails or exceptions, the results are expanded, and the tests that had issues will be indicated in red or pink rows. Use these results to refine your code and tests until all tests return a pass.

For more information on creating and modifying your own tests, read the rest of the SimpleTest Documentation in the Drupal handbook.

Tuesday, November 23, 2010

Introduction

Cache Actions is a way to get complete control over your cache and when it should be invalidated. It does so by defining rules actions for the rules module. These actions can be used to define exactly how you want to invalidate your cache. You can for instance decide to clear the cache of some views when content of a specific type is created, or when a user with a specific role creates a comment.

Other cache invalidation techniques

Drupal Core and other contributed modules handles the way cache invalidation happens differently from the cache actions. Here are some examples:

Time-based cache

This is used by Drupal core page caching (if you set the maximum time to live) and the bundled views and panels modules. It basicly clears the cache after a specified period of time has passed. This method can be great if you don't have a need for always up-to-date content.

Built-in caching logic

When you build a module, you can sometimes predict when the cache should be cleared for a particular item. You could for instance be quite sure that the caching for the node page should be invalidated when new content has been created. This is leveraged by Drupal Core for page caching of nodes, in order for new content in nodes and comments to show up.
Examples of module that use this technique is views content cache for views and the expire module that is used by boost and can be used to clear varnish pages.

The Cache Actions way of doing it

Cache Actions takes the configure more code less approach to the caching problem by letting you configure exactly the way you want the cache to be invalidated. By supporting views, panels and varnish, it is also a quite complete solution. It has the downside of being harder to configure than a built-in solution, but in return it gives you complete control of how the cache invalidation should work.

On the other hand, for certain limited uses, Drupal may not be the best choice:

If your only requirement is to write a personal blog, you may also want to evaluate one of the more specialized blogging platforms like WordPress or a hosted blogging solution like Blogger. Although Drupal can serve as a blogging platform out-of-the-box, blog-specific software may have a simpler administration interface.

Similarly, if your only requirement is to create a wiki, you should probably consider using dedicated wiki software like MediaWiki or a hosted wiki solution. You can certainly configure Drupal so that anyone can edit content (and even enable advanced wiki features with the help of several contributed modules like wikitools and Diff), but it may be simpler for you to use a more specialized solution.

With every release, Drupal is becoming easier to use; but like most powerful tools, it will always have a learning curve. If you or your organization are not prepared to spend some time learning how Drupal works (or if you are not able to hire Drupal expertise), it may not be your best option.

Friday, November 19, 2010

At ImageX Media, we pride ourselves on building sites that are as visually remarkable as they are powerful. Founded in 2001 as a full service media firm, our accomplished team of senior Drupal engineers, designers, project managers, business and marketing professionals have spent the past four years exclusively refining our approach to building Drupal based sites. With a long history of commitment, participation, and contribution in the Drupal community -- and with over 100 successful Drupal site launches (for some pretty big names), we have the expertise needed to ensure success.

Working in partnership with our clients, we strive to meet or exceed their needs and help take their online operations to the next level. As a specialized Drupal firm we handle everything from strategy, planning, design, information architecture to development, quality assurance and beyond. After launch we work in conjunction with Acquia to tailor and create a support and service plan that meets our client's long term goals.
While we accept clients from many sectors, we have the greatest experience in the following areas:

Wednesday, November 17, 2010

Resources

A minimum base installation requires at least 3MB of disk space but you should assume that your actual disk space will be somewhat higher. For example, if you install many contributed modules and contributed themes, the actual disk space for your installation could easily be 40 MB or more (exclusive of database content, media, backups and other files).
A useful FAQ (http://drupal.org/node/59680) explains how to use phpinfo to get the details of your system. For example, phpinfo will tell you if you have a database already installed and what version your system is running. Phpinfo will also tell you what php variables are set as well as many other helpful things.

Drupal has been deployed successfully on both Apache and IIS.Apache (Recommended)

Drupal will work on Apache 1.3 or Apache 2.x hosted on UNIX/Linux, OS X, or Windows. The majority of Drupal development and deployment is done on Apache, so there is more community experience and testing performed on Apache than on other web servers.

You can use the Apache 'mod_rewrite' extension to allow for clean URLs.

Drupal core will work using IIS 5, IIS 6, or IIS 7 if PHP is configured correctly.

To achieve clean URLs you may need to use a third party product. For IIS7 you can use the Microsoft URL Rewrite Module or a third party solution.

When using Drupal on IIS 7 with fastcgi you must install Hotfix kb954946, or wait until the hotfix appears in a package update (recommended). KB954946 was included in Windows 2008 Server SP2

Drupal is being developed to be web server independent, but we have limited or no reports of successful use on web servers not listed here.
The total file size of your Drupal installation will depend on what you add to your site, but Drupal core files alone will take up approximately 2 to 3 MB uncompressed. The exact size depends on the version of Drupal you have installed.

Drupal 7 will only support MySQL 5.0.15 or higher, and requires the PDO database extension for PHP (see PHP section below).

There are several drop-in replacements for MySQL. Drupal has been extensively tested with MariaDB, and version 5.1.44 (or greater) is recommended. It is also likely that other drop-in replacements will work well with Drupal, but they have not specifically undergone testing.

NOTE: Drupal makes use of some features not available on some inexpensive hosting plans so please check that your host allows database accounts with the following rights:
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER.
These rights are sufficient to run Drupal core 6.x.
Some contributed modules, and also Drupal core 5.x (but not Drupal core 6.x), additionally require the following rights:

CREATE TEMPORARY TABLES, LOCK TABLES.

Note: If your system/host is running MySQL 4.1 or newer and you receive the error "Client does not support authentication protocol requested by server", address the problem by following the instructions provided by MySQL AB. There is a minor OS issue with some MySQL 5+ installations primarily on Windows but affecting some versions of Unix/Linux as well.

Note: When using Drupal 5.x or later, particularly with contributed modules, it may be necessary to set the system variable max_allowed_packet to at least 16M. Some inexpensive hosting plans set this value too low (the MySQL default is only 1M). In that case, you may need to choose a better hosting plan. A value of 1M may be sufficient for 5.x.

Note: Drupal supports MyISAM and InnoDB table types. NDB tables (MySQL Cluster) are not supported.
Note that if your web hosting account is set up with a graphic control panel such as Plesk or CPanel, it is very likely that you do not need to worry about installing a driver for MySQL -- it is probably already installed on your server. You might wish to simply create your database and proceed with installing Drupal, and then refer back to Drupal documentation for specific troubleshooting help if you run into problems.

Note: Some contributed modules are not as abstracted from MySQL-specific code as everyone would like. If you are familiar with PostgreSQL please file issues with those contributed modules as you find them.

Drupal 6 supports PostgreSQL 7.1 or higher

Drupal 7 will only support PostgreSQL 8.3 or higher

PHP 5.2.6 for Windows has a bug in its pgsql extension. You will need to replace it with the php_pgsql.dll from version 5.2.5.

Note: Some contributed modules are not as abstracted from MySQL-specific code as everyone would like. If you are familiar with SQLite please file issues with those contributed modules as you find them.

Other database engines

Recommended: PHP 5.2.x
Required: PHP version 4.4.0 or higher (Contributed modules may not support this version of PHP)

PHP 5.3 is not yet supported by Drupal 5.x, but is supported by Drupal 6.14 core and higher (see the release notes for 6.14) and also by Drupal 7.x. Note that some contributed modules may not be compatible with PHP 5.3, and that some PHP 5.3 configurations still show warnings with Drupal 6.14; work is ongoing to resolve the latter in #360605: PHP 5.3 Compatibility.

PHP memory requirements can vary significantly depending on the modules in use on your site. Drupal 6 core requires PHP's memory_limit to be at least 16MB, and Drupal 7 core requires 40MB. Warning messages will be shown if the PHP configuration does not meet these requirements. However, while these values may be sufficient for a default Drupal installation, a production site with a number of commonly used modules enabled (CCK, Views etc.) could require 64 MB or more. Some installations may require much more, especially with media-rich implementations. If you are using a hosting service it is important to verify that your host can provide sufficient memory for the set of modules you are deploying or may deploy in the future. (See the Increase PHP memory limit page in the Troubleshooting FAQ for additional information on modifying the PHP memory limit.)

The PHP extension for connecting to your chosen database must be installed and enabled. Drupal's currently supported database connectors are: mysql (the original MySQL extension), mysqli (an improved connector for newer MySQL installations), and pgsql (for PostgreSQL). Note: PHP 5.x no longer enables the mysql extension by default. Please read the links above for installing and enabling your chosen connector. Additionally, Drupal 6.x does not provide the option to select the mysql connector if mysqli is enabled in your PHP configuration.

PHP XML extension (for Blog API, Drupal, and Ping modules). This extension is enabled by default in a standard PHP installation; the Windows version of PHP has built-in support for this extension.

An image library for PHP such as the GD library is needed for image manipulation (resizing user pictures, image and imagecache modules). GD is included with PHP 4.3 and higher and usually enabled by default. ImageMagick is also supported for basic image manipulations in Drupal core but there is much less support from contributed modules.
If you have administrator rights on a Debian/Ubuntu server, and GD is not already available (see your phpinfo) it can usually be installed by going:sudo apt-get install php5-gd
or on Redhat/Centos:sudo yum install php-gd
See the ImageMagick install instructions for your platform if you want that.

Php Data Objects (PDO) must be activated for Drupal 7 to install and run correctly. Look in your php.ini. Uncomment (remove the leading semicolon) at line extension=php_pdo.dll, extension=php_pdo_mysql.dll. If these lines are not there, you will need to add them. The PECL version of PDO is not compatible with Drupal 7 and cannot be used. More information can be found on the What is PDO page.

Some of these settings are contained in the default .htaccess file that ships with Drupal, so you shouldn't need to set them explicitly. Note, however, that setting PHP configuration options from .htaccess only works under the following conditions:

With Apache (or a compatible web server)

If the .htaccess file is actually read, i.e. AllowOverride is not None

If PHP is installed as an Apache module

See the PHP manual for how to change configuration settings for other interfaces to PHP.

Drupal 7 may require the time parameter to be at least 30 seconds.

In some shared hosting environments, access to these settings is restricted. If you cannot make these changes yourself, please ask your hosting provider to adjust them for you.

Tuesday, November 16, 2010

We have some changes to announce relative to Drupal's documentation team.

Firstly, I'd like to thank Addison Berry (add1sun) for her two years of service as the Drupal documentation lead. She has done a great job of coaching documentation contributors and developing a vision for Drupal's documentation during her time as the lead. Addison has recently decided it was time to step down from this role, and I am pleased to be able to have her pass the torch onto a pair of keen documentation contributors.

Jennifer and Ariane co-led the Drupal 7 help page upgrade last winter, and have since been putting great efforts into maintaining the online and core documentation, managing their respective issue queues, running sprints at various DrupalCamps, Summits, and DrupalCons, and helping mentor other documentation contributors. Formalizing their roles within the community will help to allow them to continue and further their efforts to improve Drupal's documentation with the help of the documentation team.

Drupal is a collaborative effort, so Ariane and Jennifer would love to have your help working on the documentation. One of their top priorities is to enable others to contribute. The documentation team has a Drupal group at http://groups.drupal.org/documentation-team, which you are encouraged to join -- this is a great venue for discussions of new ideas and directions. If you have ideas to share or need help getting started as a contributor, you can usually find Ariane (arianek) and Jennifer (jhodgdon) on the #drupal-contribute and #drupal-docs IRC channels.

Addison, Ariane, Jennifer, and several other members of the documentation team will be meeting in early December in Vancouver (http://groups.drupal.org/node/105309) to work on the leadership transition and discuss strategies and priorities. This meeting will be followed by a day-long documentation sprint Saturday, December 11 -- the sprint will be both in person and on IRC, so please join in!