<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="http://www.hiveminds.co.uk/feed.xsl" ?>
<?xml-stylesheet type="text/css" href="http://www.hiveminds.co.uk/feed.css" ?>
<rss version="2.0" xml:base="http://www.hiveminds.co.uk">
<channel>
 <title>Hiveminds Magazine - Drupal</title>
 <link>http://www.hiveminds.co.uk/taxonomy/term/180/Drupal</link>
 <description>&amp;nbsp;

Drupal is software that allows an individual or a community of users to easily publish, manage and organize a great variety of content on a website. Tens of thousands of people and organizations have used Drupal to set up scores of different kinds of web sites

Drupal is open source software licensed under the GPL, and is maintained and developed by a community of thousands of users and developers. Drupal is free to download and use. If you like what Drupal can do for you, please work with us to expand and refine Drupal to suit your needs.

Features:


modules
templates
localization support


Requirements:


php
mysql database


Options


PostgreSQL supported.


Website:


community and support
</description>
 <language>en</language>
 <copyright><![CDATA[Hiveminds Magazine copyrighted 2005-2006]]></copyright>
<item>
 <title>Drupal.org down again!</title>
 <link>http://www.hiveminds.co.uk/node/3739</link>
 <description><![CDATA[Maybe it is not such a good idea to run drupal.org on CVS version of the software. Maybe its time to stop throwing caching and hardware at an obvious problem. Drupal.org seems to be failing at regular intervals.
While I sit and wait I will be writing up an article on why Drupal is not ready for the enterprise.
]]></description>
<comments>http://www.hiveminds.co.uk/node/3739#comment-form</comments>
 <category domain="http://www.hiveminds.co.uk/taxonomy/term/180">Drupal</category>
<pubDate>Tue, 17 Jun 2008 00:06:14 -0700</pubDate>
<guid isPermaLink="true">http://www.hiveminds.co.uk/node/3739</guid>
</item>
<item>
 <title>Installation</title>
 <link>http://www.hiveminds.co.uk/node/3754</link>
 <description><![CDATA[How to install and setup Drupal 6.
]]></description>
<comments>http://www.hiveminds.co.uk/node/3754#comment-form</comments>
 <category domain="http://www.hiveminds.co.uk/taxonomy/term/164">Developer Zone</category>
 <category domain="http://www.hiveminds.co.uk/taxonomy/term/180">Drupal</category>
<pubDate>Sat, 14 Jun 2008 03:22:55 -0700</pubDate>
<guid isPermaLink="true">http://www.hiveminds.co.uk/node/3754</guid>
</item>
<item>
 <title>Core Modules</title>
 <link>http://www.hiveminds.co.uk/node/3760</link>
 <description><![CDATA[If you want to get an idea of how to use Drupal as a framework then you should make a close study of the core modules. Here is a list of those modules and what they do.
When you install Drupal, these modules are automatically installed. To make use of a module, first make sure it's enabled at administer &gt;&gt; site building &gt;&gt; modules. (Some modules automatically are.) Then set the right permissions for it at administer &gt;&gt; user management &gt;&gt; access control.
You can further extend the features of Drupal by using "contributed modules." A list of help pages for contributed modules is available at the contributed modules page.
If you would like to add a module help page, follow the authoring guidelines. The site maintainers can create and update pages for you.
Aggregator: publishing syndicated content
The news aggregator is a powerful on-site news reader that can gather fresh content from news sites and weblogs around the web and make it available from a Drupal site using common syndication formats including RSS, Atom and RDF.
Users can view the latest news chronologically in the main news aggregator display or by source.
Site administrators can add, edit, and delete feeds and choose how often to check each individual feed for updated news. Site administrators can also tag individual feeds with categories, offering selective grouping of some feeds into separate displays. Listings of the latest news for individual sources or categorized sources can be enabled as blocks for display in the sidebar through the block administration page.
The news aggregator requires cron to check for the latest news from the sites being aggregrated. Drupal also provides a machine-readable OPML file of all of your subscribed feeds.
Aggregator options include
    * administer your list of news feeds administer &gt;&gt; aggregator.
    * add a new feed administer &gt;&gt; aggregator &gt;&gt; add feed.
    * add a new category administer &gt;&gt; aggregator &gt;&gt; add category.
    * configure global settings for the news aggregator administer &gt;&gt; settings &gt;&gt; aggregator.
    * control access to the aggregator module through access permissions administer &gt;&gt; access control &gt;&gt; permissions.
    * set permissions to access new feeds for user roles such as anonymous users at administer &gt;&gt; access control &gt;&gt; permissions.
    * view the aggregator page.
    * run your cron job manually at your sites cron page.
    * read about configuring cron jobs.
Old page
Thousands of web sites, especially news sites and weblogs, syndicate their most recent site content for others to display. The syndicated content always includes titles, also known as headlines, for the newest published stories. Each headline acts as a direct link to the stories on the remote site. Along with the headline, most sites typically provide either the first few paragraphs of the story or a short summary. Many individuals use client-based news aggregators on their personal computer to aggregate content, such as FeedDemon (for Windows), NetNewsWire (for Macs) and AmphetaDesk (Windows, Mac and Linux).
Drupal also has a news aggregator built in as a standard feature. With it, you can subscribe to feeds from other sites and display their content for your site users. Simply enable the aggregator module in administer » modules, then click administer » aggregator and enter the feeds that you choose.
Open aggregator links in new browser window
Many people would like to keep users on their site. In order to have users open links in a new browser window instead of leaving your site you can either look at the External Link module or override the aggregator code in your template.php:
Find the function to override
First open aggregator.module in your favorite text editor. Then locate this function in the aggregator.module file:
function theme_aggregator_page_item($item) {
  $source = '';
  if ($item-&gt;ftitle &amp;amp;&amp; $item-&gt;fid) {
    $source = l($item-&gt;ftitle, "aggregator/sources/$item-&gt;fid", array('class' =&gt; 'feed-item-source')) . ' -';
  }
  if (date('Ymd', $item-&gt;timestamp) == date('Ymd')) {
    $source_date = t('%ago ago', array('%ago' =&gt; format_interval(time() - $item-&gt;timestamp)));
  }
  else {
    $source_date = format_date($item-&gt;timestamp, 'custom', variable_get('date_format_medium', 'D, m/d/Y - H:i'));
  }
  $output .= "\n";
  $output .= '
'. check_plain($item-&gt;title) ."
\n";
  $output .= "$source $source_date\n";
  if ($item-&gt;description) {
    $output .= ''. aggregator_filter_xss($item-&gt;description) ."\n";
  }
  $result = db_query('SELECT c.title, c.cid FROM {aggregator_category_item} ci LEFT JOIN {aggregator_category} c ON ci.cid = c.cid WHERE ci.iid = %d ORDER BY c.title', $item-&gt;iid);
  $categories = array();
  while ($category = db_fetch_object($result)) {
    $categories[] = l($category-&gt;title, 'aggregator/categories/'. $category-&gt;cid);
  }
  if ($categories) {
    $output .= ''. t('Categories') .': '. implode(', ', $categories) ."\n";
  }
  $output .= "\n";
  return $output;
}
Use template.php to override
Copy the aggregator code above
Next open the themes/the_active_theme/template.php. In this case I am using the default Garland theme so I open themes/garland/template.php and paste the code we just copied at the end of the file right before the closing php tag ?&gt;
Next change the name of the function we just pasted from:
function theme_aggregator_page_item($item) to
function garland_aggregator_page_item($item)
Now we can hunt down the code that we can change to make links open in a new window. In this case it looks like this:
  $output .= '
'. check_plain($item-&gt;title) ."
\n";
we just are going to add target="_blank" we have to escape the quotes so it will look like this
  $output .= '
'. check_plain($item-&gt;title) ."
\n";
Aggregator links in new window with jQuery
Rather than override the aggregator functions, I used jQuery to do this instead. It works great for me.
You'll need to add this to your template file either in a javascript file or directly on a template file.
/* find all aggregator links that have 'http' within the href and add a target */
$(document).ready(function(){
if($("#aggregator a[@href*=http]")[0]) {
$("#aggregator a[@href*=http]").each(function(i) {this.target = "aggwin";});
}
});
So far, it catches all the different external links and that's less of the core that I don't have to worry about.
Note that if it is not working in some instances, particularly for anonymous users, it may be because nothing else in the page is calling the core Drupal JavaScript. You may need to add a hard-coded call to misc/jquery.js in page.tpl.php.
What do I need to subscribe to a feed?
The standard method of syndication is using the XML-based RSS format. RSS stands for Really Simple Syndication, RDF Site Summary, or Rich Site Summary, depending on whom you talk to. To syndicate a site's content, obtain the full URL of the RSS page providing syndication. Common file tags for RSS pages are .rss, .xml and .rdf. Example: http://slashdot.org/slashdot.rdf.
Most weblog sites that offer syndication will have an obvious link on the main page. Often you need only look for a red XML button, such as the one Drupal uses for site syndication.
Some sites do not make their RSS feeds as easy to find. Or maybe you want to find a number of feeds on a given topic, without extensively searching the web. In that case, try an RSS syndication directory such as Syndic8.
To learn much more about RSS, here are some good introductions:
    * Mark Pilgrim's What is RSS
    * WebReference.com's The Evolution of RSS
NOTE: Enable your site's XML syndication button by turning on the Syndicate block in administer » blocks.
Configuring news feeds
To subscribe to an RSS feed on another site, click administer » aggregator.
Once there, select the add feed tab at the top of the aggregator administration page. Drupal will then ask for the following:
    * Title -- The text entered here will be used in your news aggregator, within the administration configuration section, and as title for the news feed block. As a general rule, use the web site name from which the feed originates.
    * URL -- Here you'll enter the fully-qualified URL for the feed for the site you want to subscribe to.
    * Update interval -- The update interval is how often Drupal will automatically access the RSS URL for the site for fresh content. The 1 hour default is typically a good minimum to use. Accessing another site's RSS page more frequently can be considered impolite because it requires the other site's server to handle your automatic requests. To take advantage of this feature, note that cron.php must be configured to have your feeds updated regularly. Otherwise, you'll have to manually update feeds one at a time within the news aggregation administration (administer » aggregator) section.
Once you submit your new feed, check to see if it is working properly. Select update items on the main news aggregation page. If you do not see any items listed for that feed, edit the feed and make sure that the URL was entered correctly.
Filter feeds by keyword, time, by summary
To filter by keyword: http://drupal.org/node/13047
Filtering by time and by summary to be added.
Creating categories in the aggregator
   1. Go to administer » aggregator then click on the add category tab.
   2. Add a title to the category, then a description.
   3. If you wish to have a block of the last x items from that category, select the number of items in "Latest items block". To place the block on your sidebar, go to administer » blocks and look for the category you just created.
Now every time you add a feed, you can select a category which the items will automatically appear under. Alternatively, you can tag individual items in your aggregator to appear in a category.
Tagging individual items in the aggregator
   1. To get to the categorization screen, in your sidebar navigation, click news aggregator
   2. Here you have two options:
         1. click categories, then the category you wish to look at, then the categorize tab.
         2. click sources, then the feed source you with to look at, then the categorize tab.
   3. You will be presented with a list of items to categorize, plus to the right, the categories which you can assign to each item. If you have the multiple-select option enabled in the aggregator configuration, you can select more than one category for an item by holding down CTRL (PC) or CMD (Mac) and clicking on each category.
Using the news aggregator
The news aggregator has a number of ways that it displays your subscribed content:
    * Latest News -- Displays all incoming content in the order received
      with 
    * The title of the original post.
    * The name of the source, which acts as a link to an individual feed page, listing information about that feed and incoming content for that feed only.
    * A description, the first few paragraphs or summary of the originating post (if any).
    * The list of categories that the feed (or feed item) belongs to, with a link to each category.
# News by Source: Organizes incoming content by feed, displaying titles which link to the originating post. Also has an icon which acts as blog it link.
# News by Topic: Organizes incoming content by bundles, displaying titles which link to the originating post. Also has an icon which acts as blog it link.
# News Sources: Displays an alphabetical listing of all subscribed feeds and a description. The title acts as a link to an individual feed page, listing information about that feed and incoming content for that feed only.
RSS feed blocks
In addition to providing subscribed content through the news aggregator, Drupal automatically can create a block for every feed as well as every category, though the administrator can choose whether or not a feed or category gets its own blocks by configuring the individual feeds and categories. Enable any or all of the blocks using block management by clicking administer » blocks.
Block: controlling content in the sidebars
Blocks are the boxes of related/grouped data that are visible in the left and/or right sidebar(s) of your web site. They can also be placed anywhere on your page using regions. These are usually generated automatically by modules (e.g. recent forum topics), but administrators can also create their own defined blocks.
The sidebar each block appears in depends on both which theme you are using (some are left-only, some right, some both), and on the settings in block management.
The block management screen lets you specify the vertical sort-order of the blocks within a sidebar. You do this by assigning a weight to each block. Lighter blocks (smaller weight) "float up" towards the top of the sidebar. Heavier ones "sink down" towards the bottom of it.
The block management screen also provides checkboxes and a configure link for customizing the visibility of individual blocks. A block's visibility depends on:
    * The Enabled checkbox. Disabled blocks are never shown.
    * The Throttle checkbox. Throttled blocks are hidden during high server loads.
    * Page specific visibility settings. Individual blocks can be configured to only show/hide on certain pages. You can also show/hide blocks based on the result of a PHP snippit.
    * Custom visibility settings. Individual blocks can be configured so that users decide whether to show/hide certain blocks.
    * Its function. Dynamic blocks (such as those defined by modules) may be empty on certain pages and will not be shown.
Module blocks
Module blocks are available when modules are enabled. These blocks can be administered in block administration.
Administrator defined blocks
An administrator defined block contains content supplied by the administrator. Each admin-defined block consists of a title, a description, and a body which can be as long as you wish. The Drupal engine will render the content of the block.
Note: Blocks are configured per theme so if you use multiple themes on a site you will need to enable and configure blocks for each theme.
You can
    * enable throttle and configure blocks at administer &gt;&gt; block.
    * add a block at administer &gt;&gt; block &gt;&gt; add block.
Blocks OUTSIDE Sidebars (above content, below it etc)
I am not an expert but have written this as I've noticed it's a common question, and I had to work out the answer for my own live case. I would have no objections to any better qualified person replacing this page with a "proper" one.
If you want to use Blocks outside Sidebars then you need to apply them to Regions.
General solution - if no suitable Region in your Theme, is to add one or more as needed. Links below should help if you are new to Regions.
Regions in PHPTemplate - http://drupal.org/node/29139
How to Build your Front Page with Regions - http://drupal.org/node/65064
Using Different Block Templates for Different Blocks, Regions etc. - http://drupal.org/node/104319
A common request is "putting blocks in a row above the content".
I have seen three ways suggested, the last of which is mine, but I take the first two on good faith. Option A certainly seems the proper way to handle a single row of Blocks, and with the right CSS could no doubt wrap for grid effects, whereas Option C is the one I use for a Grid of Blocks.
Option A
1) Create a Region - Before Content.
2) Create/assign Blocks to that Region.
3) Use weighting and float:left to line them up in order
Option B
Use MiniPanels - part of Panels 2 - http://drupal.org/project/panels
This was suggested by the author of the Panels Module.
Option C
(No doubt should be done with CSS, but I'm not a good designer).
1) Create a Region for each column of Blocks.
2) Put them into a single row table in page.tpl.php
3) Create and assign Blocks to Regions, weighting them so that they appear at the right place in each column.
Live example of method C at www.likal.com/uk/gloucester
Blog: a blog for every user
The blog module allows every registered user to maintain an individual online weblog (commonly known as a blog), often referred to as an online journal or diary. Blogs are made up of individual posts that are time stamped and are typically viewed by date as you would a diary. Blogs often contain links to webpages users have read and/or agree/disagree with.
Note that the blog module is not necessary for a "single-user" blog, that is a site that only has one individual blogging (the most common situation.) Blog module is used to create "multi-user" blog sites, where many different blogs, owned by different users are all running on one site. If you would like more information on creating a single-user blog, here is a Single User Blog recipe to get you started.
The blog module adds a blogs navigation link to the main navigation menu (the link must be enabled), which takes any visitor to a page that displays the most recent blog entries from all the users on the site. The navigation menu has a create content link (which takes you to a page with a link to a submission form) and a my blog link (which displays your blog entries as other people will see them). The blog module also creates a recent blog posts block that can be enabled.
Drupal also provides an RSS 2.0 feed for each blog.
You can
    * read your blog via your user profile at my account.
    * post a blog at create content &gt;&gt; blog entry.
    * administer blog at administer &gt;&gt; settings &gt;&gt; content types &gt;&gt; blog entry.
    * administer blog api at administer &gt;&gt; settings &gt;&gt; blogapi.
    * enable the "recent blog posts" block at administer &gt;&gt; blocks to show the 10 most recent blog posts.
HOWTO: Configure user blogs
To implement user blogs on your Drupal site, turn on the blog module and enable permissions:
   1. Go to administer » modules and check the box next to blog.
   2. Under administer » users » access control, check the edit own blog box for each role you wish to maintain blogs.
Aftewards, once logged in, each user with the permission to maintain a blog will be able to click create content » blog entry and will see my blog (which displays blog entries as other people will see them) in the user navigation block. At the top of each individual blog post, the original blog author will find an edit tab.
To add instructions for users on creating their blogs and set workflow options such as published, promoted to the front page, etc.:
   1. Select administer » content management » content types, then click the "edit" link next to blog entry
   2. Enter your instructions in the "Explanation or submission guidelines:" text field.
   3. Set workflow options.
   4. Use the Minimum number of words in a blog entry setting to specify a minimum length for all blog posts.
Most recent blog post block
Note that the block displaying "recent blog posts" cannot be easily customized to display fewer than 10 items. You have to modify the source code, the number is hard wired. There is a forum discussion on this limitation. See:
http://drupal.org/node/15635
Navigate through categories inside a blog
It's very useful knowing how to make the general taxonomy system fits with the needings of a multiblog site. If in our web there are many blogs independent, but the share the same vocabulary, there would be a problem when navigate using taxonomy links in a post.
There a interesting post titled "Blogs categories" very useful: http://drupal.org/node/20260 .
I'll write here the code to make a term link go to a view with two arguments (the user id, and the term id).
In the full node view, the link in the terms will web like "blogterms/32/6"
- blogterms will be a view.
- 32 is the taxonomy term id
- 6 is the user id (Remeber that the drupal blogs as listed using the author)
To obtain this link, in the node-blog.tpl insert this php code for the terms linsting:

&amp;lt;?phpif&amp;nbsp;($terms)&amp;nbsp;{if&amp;nbsp;(arg(0)&amp;nbsp;==&amp;nbsp;'node'&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;is_numeric(arg(1))&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;is_null(arg(2)))&amp;nbsp;{$result&amp;nbsp;=&amp;nbsp;db_query('SELECT&amp;nbsp;uid&amp;nbsp;FROM&amp;nbsp;{node}&amp;nbsp;WHERE&amp;nbsp;nid&amp;nbsp;=&amp;nbsp;%d&amp;nbsp;ORDER&amp;nbsp;BY&amp;nbsp;uid&amp;nbsp;DESC',&amp;nbsp;arg(1));&amp;nbsp;//&amp;nbsp;search&amp;nbsp;node&amp;nbsp;author&amp;nbsp;in&amp;nbsp;full&amp;nbsp;view&amp;nbsp;mode$user&amp;nbsp;=&amp;nbsp;db_fetch_object($result);$uid&amp;nbsp;=&amp;nbsp;$user-&amp;gt;uid;$nid&amp;nbsp;=&amp;nbsp;(int)arg(1);}&amp;nbsp;else&amp;nbsp;{$result&amp;nbsp;=&amp;nbsp;db_query('SELECT&amp;nbsp;uid&amp;nbsp;FROM&amp;nbsp;{node}&amp;nbsp;WHERE&amp;nbsp;nid&amp;nbsp;=&amp;nbsp;%d&amp;nbsp;ORDER&amp;nbsp;BY&amp;nbsp;uid&amp;nbsp;DESC',&amp;nbsp;$node-&amp;gt;nid);&amp;nbsp;//&amp;nbsp;search&amp;nbsp;node&amp;nbsp;author&amp;nbsp;when&amp;nbsp;you&amp;nbsp;are&amp;nbsp;in&amp;nbsp;the&amp;nbsp;blog&amp;nbsp;home&amp;nbsp;(/blog/6)$user&amp;nbsp;=&amp;nbsp;db_fetch_object($result);$uid&amp;nbsp;=&amp;nbsp;$user-&amp;gt;uid;$nid&amp;nbsp;=&amp;nbsp;$node-&amp;gt;nid;}}&amp;nbsp;&amp;nbsp;$terms&amp;nbsp;=&amp;nbsp;taxonomy_node_get_terms($nid);&amp;nbsp;&amp;nbsp;$output&amp;nbsp;=&amp;nbsp;"&amp;lt;ul&amp;gt;";&amp;nbsp;&amp;nbsp;foreach($terms&amp;nbsp;as&amp;nbsp;$term){$output&amp;nbsp;.=&amp;nbsp;"&amp;lt;li&amp;gt;&amp;lt;a&amp;nbsp;href=\"/blogterms/"&amp;nbsp;.$term-&amp;gt;tid&amp;nbsp;.&amp;nbsp;"/"&amp;nbsp;.$uid&amp;nbsp;.&amp;nbsp;"\"&amp;gt;$term-&amp;gt;name&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;";&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;$output&amp;nbsp;.=&amp;nbsp;"&amp;lt;/ul&amp;gt;";&amp;nbsp;&amp;nbsp;print&amp;nbsp;t('Tags:').$output;?&amp;gt;


Then in the view "blogterms" youy must use Arguments
Taxonomy: Term ID (The first argument)
User: UID is Author (The second argument)
And voilá
What is a blog or weblog?
Drupal's blog module allows all registered users to maintain a personal weblog on site. Blogs are easily- and frequently-updated websites usually written in an informal and conversational style. They are ordered reverse-chronologically (that is, the most recent entry is at the top) and have archives of past entries. Each individual entry has a permanent—that is to say, stable—URL linking directly to that item. Blogs typically have comments for each entry so that readers can participate in the discussion, and they usually have RSS feed to be syndicated elsewhere or read in an desktop aggregator. Each entry usually contains one idea, with a link to the source of the original item being discussed. Blogs can be (and are) written about any subject, from daily personal life to technology to politics to knitting to sports to a company's products.
From a more practical standpoint, blogs can be seen as a means of personal knowledge publishing, a place for researchers or enthusiasts to build and share knowledge about their interests. Or in project oriented sites, as a workspace for project members to post ideas for commenting by others in a group.
For a more complete definition of blogging with links to resources and examples, see George Siemens' The Art of Blogging - Part 1 and The Art of Blogging - Part 2.
Making user blogs more accessible
Drupal provides a number of ways to make user blog posts accessible. You'll need to decide which ones work best for how your Drupal site is configured:
    * A link in the navigation bar: After activating the blog module, most Drupal themes will include a Blogs link in the header navigation bar. The user blog listing contains the most recent blog posts by all site users. If the site is using xtemplate, you'll need to create the link yourself. Go to site configuration » themes » xtemplate and add in the HTML to create the URL (to find the URL, switch your site theme momentarily to Marvin and the link will be present in the navigation header).
    * Making user blog listings the default home page: Click administer » settings and type in the word "blog" (without quotes) for Default front page.
    * Promoting individual blog posts: If "node" is the Default front page setting, administrators can elect to promote any user blog posts to the front page. Click onto the blog post you want to promote, then the edit tab and then check Promoted to Front Page.
    * Promoting individual blog posts automatically: Click administer » content » configure » content type, then the "configure" link next to "personal blog entry, and check the Promoted front page box in the "Default options" group. (This will work if "node" is the Default front page in administer » settings.
    * Links to recently-updated blogs on the sidebar: Drupal also makes available a Most recent blogs block under administer » blocks.
Additional features
    * Blog it: Users with blogs will see a "blog it" link in the form of a linked image i.e. when viewing posts in the news aggregator. Other news listings, such as RSS blocks, will have an icon in place of the textual blog it link. When the blog it option is selected, the user will be taken to the blog entry form, with the title, a link to the item, and a link to the source already entered in the text input field, ready for the user to add explanation.
    * User Blog RSS syndication: each individual user blog has their own RSS feed, allowing other sites to syndicate their content or allowing readers to read the individual blog in an aggregator. To find the RSS feed for a user, view their personal blog (in their personal information, which you can get to by clicking on their username, select view recent blog entries). Then look for the XML icon at the bottom of their blog page.
BlogApi: post from blog tools
The Blog API module enables a post to be posted to a site via external GUI applications. Many users prefer to use external tools to improve their ability to read and post responses in a customized way. The Blog API provides users the freedom to use the blogging tools they want but still have the blogging server of choice.
When this module is enabled and configured you can use a variety of programs to create and publish posts from your desktop. Blog API module supports several XML-RPC based blogging APIs such as the Blogger API, MetaWeblog API, and most of the Movable Type API.
For more information on using software with the Blog API, see the Creating new content section of the End user Guide.
This module also allows site administrators to configure which content types can be posted via the external applications. So, for instance, users can post forum topics as well as blog posts. Where supported, the external applications will display each content type as a separate "blog".
To configure your blogging client for use with your Drupal site enter http://your_site/xmlrpc.php as the API URL for your blog.
You can:
    * view the XML-RPC page.
    * administer &gt;&gt; settings &gt;&gt; blogapi.
Book: structured document publishing
A book is a set of pages tied together in sequence, perhaps with chapters, sections, subsections, and so on. You can use books for manuals, site resource guides, Frequently Asked Questions (FAQs), or whatever you'd like.
Users who have permission can create a book and write, review, modify, or rearrange the pages. Many users can work together on a book. You can allow or disallow collaboration, to whatever extent you want.
At the bottom of book pages, Drupal automatically provides links for moving to the previous page and the next, and a link labeled up that leads to the level above in the structure. A contents page is also automatically created.
You can provide your users a menu that helps them find their way around inside your books. You do this by enabling the book navigation block on the blocks page (administer &gt;&gt; blocks). (Users will see the menu only when viewing the book.)
Apart from this, you can also add a books link to any of your menus. This link will take users to a list of your books. You add the link by enabling the books menu item on the menus page (administer &gt;&gt; menus). You'll find this item there under "Navigation." You can also add this link to any menu you want. (Click "add menu item," and when you fill in the "path" field on the dialogue page just enter "book.")
The "books" link takes users to your books. The "book navigation" block helps users move around inside your books.
You can also let users generate a printer-friendly display of a book page and all its subsections. They do this by selecting the link for printer-friendly version at the bottom of any book page.
On the books administration page (administer &gt;&gt; content &gt;&gt; books), administrators can view a list of all the books on your site. For each book there's a link to an outline, from which to edit or delete pages or sections, change their titles, or change their weight (thus putting them in a different order).
When you edit a page or section, you can also move it to a different level in the hierarchy by changing the "parent" to which it belongs. So you can move things around however you like. You can also check for orphan pages (pages that have become disconnected from the rest of the book).
On the access control page (administer &gt;&gt; access control) you can assign to users with various roles the permission to create book pages, to create new books, and to edit their own book pages or the pages of others.
When users you allow create a post of the type Book page, Drupal automatically prompts them to add their page at the level of their choice in a book, or to start a new book (by defining its "parent" as "top-level").
You can also give permission to outline posts in books. Users with this permission can take any other type of existing content on your site and add it to a book. When viewing a post they'll see an outline tab, and by clicking it they'll come to an interface that lets them move the post into a book.
You can:
    * create new book pages: create content &gt;&gt; book page.
    * administer individual books (choose a book from list): administer &gt;&gt; content &gt;&gt; books.
    * set workflow and other global book settings at administer &gt;&gt; settings &gt;&gt; content types &gt;&gt; book page.
    * enable the book navigation block: administer &gt;&gt; block.
    * control who can create, edit, and maintain book pages at administer &gt;&gt; access control.
Customising the book navigation menu
By default, the navigation menu block for a book appears only on pages that are part of the book hierarchy- that is, the top-level book page (www.example.com/books/book-name) and its child pages (www.example.com/books/book-name/child-page). This is because the code in the block is not an actual menu- it just simulates a menu, and so will never appear on the menu page at ..admin/menu.
This means that you can't make the book navigation block appear permanently on the front page (if you are using the book module to create a static hierarchical structure for example), or in any other place on the site except the book pages.
This seems like a major limitation, but fortunately a snippet is available that will create a book navigation menu that can be placed anywhere on your site and not just when navigating a book.
Maintaining a FAQ using a collaborative book
Collaborative books let you easily set up a Frequently Asked Questions (FAQ) section on your web site. The main benefit is that you don't have to write all the questions/answers by yourself - let the community do it for you!
Note:: There is also an FAQ module that can also be used collaboratively.
In order to set up the FAQ, you have to create a new book which will hold all your content. To do so,
   1. Click on the create content » book page link.
   2. Give it a thoughtful title. A title like "Estonia Travel - FAQ" is nice.
   3. Set the Parent to  to make this page the beginning of a new book
   4. Add in the text of the book page into the Body textarea.
   5. Leave the log message blank for now.
   6. Use the weight field to position this book in the list on the book module page.
After you have submitted this book page, you are ready to begin filling up your book with questions that are frequently asked.
Creating new pages for your FAQ. The process for creating new pages in your FAQ is very similar to above. When choosing the Parent option, select the FAQ book page that you already created to add it to the book.
Adding existing non-book pages to your FAQ. Whenever you come across a post which you want to include in your FAQ,
   1. Click on the outline tab at the top of the page.
   2. Place the relevant post wherever is most appropriate in your book by selecting a Parent.
Notes:
    * Books are quite flexible. They can have sections like Flying to Estonia, Eating in Estonia and so on. As you get more experienced with the book module, you can reorganize posts in your book so that it stays organized.
    * Any comments attached to those relevant posts which you designate as book pages will also be transported into your book. This is a great feature, since much wisdom is shared via comments. Remember that all future comments and edits will automatically be reflected in your book.
    * You may wish to edit the title of posts when adding them to your FAQ. Clear titles improve navigability enormously.
    * Book pages may come from any content type (blog, story, page, etc.). If you are creating a post solely for inclusion in your book, then use the create content » book page link.
    * If you don't see the edit link or outline tab , then you probably have insufficient permissions.
Color: Allows the user to change the color scheme of certain themes
Color module allows a site administrator to quickly and easily change the color scheme of the entire site. In order for color module to work however, a theme must be specifically designed to use the color changing features. The default theme, Garland, (as well as its fixed width counterpart, Minnelli) was designed to take advantage of these features. With color module, you can easily change the color of links, backgrounds, text, and more depending on which color module enabled theme you are using. Color module requires your file download method to be set to public.
It is important to remember that color module saves a modified copy of the theme's style.css file in the files directory, and includes it after the theme's original style.css. This means that if you make any manual changes to your theme's style.css file, you must save your color settings again, even if they haven't changed. This causes the color module generated version of style.css in the files directory to be recreated using the new version of the original file.
More about color module:
    * Integrating a theme with Color.module
    * Troubleshooting the color picker
Comment: allow comments on content
The comment module provides for discussion of posts. Users can post comments to discuss a forum topic, blog post, story, collaborative book page, etc. The ability to comment is an important part of involving members in a community dialogue.
An administrator can give comment permissions to user groups, and users can (optionally) edit their last comment, assuming no others have been posted since.
Attached to each comment board is a control panel for customizing the way that comments are displayed. Users can control the chronological ordering of posts (newest or oldest first) and the number of posts to display on each page.
Comments behave like other user submissions. Filters, smileys and HTML that work in nodes will also work with comments. The comment module provides specific features to inform site members when new comments have been posted. On sites with active commenting from users, the administrator can turn over comment moderation to the community.
The locations of settings for administration of comments in Drupal 5 are as follows:
    * control access for various comment module functions through access permissions administer &gt;&gt; user management &gt;&gt;access control.
    * administer comments administer &gt;&gt; content &gt;&gt; comments.
    * administer comment settings administer &gt;&gt; content &gt;&gt; comments &gt;&gt; settings.
    * enable the recent or new comments blocks: administer &gt;&gt; site building &gt;&gt; blocks
The locations of settings for administration of comments in Drupal 6 are as follows:
    * control access for various comment module functions through access permissions administer &gt;&gt; user management &gt;&gt;permissions.
    * administer comments administer &gt;&gt; content &gt;&gt; comments.
    * administer comment settings administer &gt;&gt; content &gt;&gt; content types and then choose the content type for specific content settings.
    * enable the recent or news comments block: administer &gt;&gt; site building &gt;&gt; blocks
Change the default comments status for new content types
I haven't checked this on previews versions, but it might work.
This will change the default selected option when you create a new content type.
You can see the original forum post here http://drupal.org/node/212923
Go to 'modules/comment/comment.module' in your installation directory and look for line 375 there you will find this:
'#default_value' =&gt; variable_get('comment_'. $form['#node_type']-&gt;type, COMMENT_NODE_READ_WRITE),
replace it with this:
'#default_value' =&gt; variable_get('comment_'. $form['#node_type']-&gt;type, COMMENT_NODE_DISABLED),
Status available are:
/**
* Comments for this node are disabled.
*/
define('COMMENT_NODE_DISABLED', 0);
/**
* Comments for this node are locked.
*/
define('COMMENT_NODE_READ_ONLY', 1);
/**
* Comments are enabled on this node.
*/
define('COMMENT_NODE_READ_WRITE', 2);
Detailed comment documentation
When enabled, the Drupal comment module creates a discussion board for each Drupal node. Users can post comments to discuss a forum topic, weblog post, story, collaborative book page, etc. An administrator can give comment permissions to user groups, and users can (optionally) edit their last comment, assuming no others have been posted since.
User control of comment display
Attached to each comment board is a control panel for customizing the way that comments are displayed. Users can control the chronological ordering of posts (newest or oldest first) and the number of posts to display on each page. Additional settings include:
    * Threaded — Displays the posts grouped according to conversations and subconversations.
    * Flat — Displays the posts in chronological order, with no threading whatsoever.
    * Expanded — Displays the title and text for each post.
    * Collapsed — Displays only the title for each post.
When a user chooses save settings, the comments are then redisplayed using the user's new choices. Administrators can set the default settings for the comment control panel, along with other comment defaults, in administer » comments » configure. NOTE: When comment moderation is enabled, users will have another control panel option to control thresholds (see below).
Additional comment configurations
Comments behave like other user submissions in Drupal. Filters, smileys and HTML that work in nodes will also work with comments. Administrators can control access to various comment module functions through administer » access control » permissions. In a new Drupal installation, all comment permissions are disabled by default. The choice of which permissions to grant to which roles (groups of users) is left up to the site administrator. The following permissions are available in Drupal 5:
    * Access comments — Allows users to view comments.
    * Administer comments — Allows users complete control over configuring, editing and deleting all comments.
    * Post comments — Allows users to post comments into an administrator moderation queue.
    * Post comments without approval — Allows users to directly post comments, without the administrator having to publish the comments.
Notification of new comments
Drupal provides specific features to inform site members when new comments have been posted.
Drupal displays the total number of comments attached to each node, and tracks comments read by individual site members. Members which have logged in will see a notice accompanying nodes which contain comments they have not read. Some administrators may want to download, install and configure the notify module. Users can then request that Drupal send them an e-mail when new comments are posted (the notify module requires that cron.php be configured properly).
The tracker module, disabled by default, displays all the site's recent posts. There is a link to the recent posts page in the navigation block. This page is a useful way to browse new or updated nodes and comments. Content which the user has not yet read is tagged with a red star (this graphic depends on the current theme). Visit the comment board for any node, and Drupal will display a red "new" label beside the text of unread comments.
Contact: a way for users to get in touch
The contact module helps people get in touch with one another and with you or the people running your site.
Through personal contact forms users can send one another e-mail. And through site-wide contact forms users can send e-mail to the people in charge of your site.
With either form, users can specify a subject, write their message, and also have a copy of their e-mail sent to their own address.
Through contact forms, users allow themselves to be contacted yet keep their own e-mail addresses private.
You can enable the contact module on the modules page (Administer &gt;&gt; Site Building &gt;&gt; Modules).
Users (in their account settings) can turn their personal contact forms on or off. When their form is turned on, a contact tab appears in their user profile, for everyone to see. (Privileged users such as site administrators can contact even users who have turned their forms off.)
When users view their own profiles they won't see their contact tab. Only other users will see it, if it's turned on.
Your navigation menu can show a link to your site-wide contact form. Just enable the "contact" link on your menus page (Administer &gt;&gt; Site building &gt;&gt; Menus). You can add that link to any other menu as well. (Click "add menu item," and when you fill in the "path" field on the dialogue page just enter "contact.")
On the contact administration page (Administer &gt;&gt; Site building &gt;&gt; Contact form) you can set up "categories" of site-wide contact you'd like to receive. For example, one category might be "website feedback," and another might be "product information."
For each category, you can specify whom you'd like to have receive your user's e-mail. The mail could go to one person or many. You can also specify whether or not the user will receive an automatic reply.
The settings portion of the contact administration page offers you other options. You can specify what message you'd like to show on your site-wide contact page. And you can limit how many times a user can contact you in an hour. You can also set whether users have their personal contact form enabled by default.
Allow users (including anonymous) to email individuals via Contact module
Let's say you have a few users that you want to be emailable through your contact form (and you don't want to use webform module). That's great, just set up a category for each one. But if you just link to the contact page, your visitors will have to manually select the person they want to email after they hit it. There's a quick way around that.
Create a module (or use an existing one if you have one for glue code like this) that contains this function:
// change mymodule to the name of your module, of course
function mymodule_form_alter ($form_id, &amp;amp;$form) {
  // changes the default value in the contact form if we have a ?c=x in the URL
  if ($form_id == 'contact_mail_page') {
    if ((int)$_GET['c'] &gt; 0) {
      $form['cid']['#default_value'] = (int)$_GET['c'];
    }
  }
}
Now you can use links in this form:
Email the second person in the contact form
Email the fourth person in the contact form
Until personal contact forms can be used by anonymous users, this solution might stave off the temptation to patch core.
Make your site wide contact form look prettier
Drupal ships with a sitewide contact form since version 4.7 that you can use to allow site visitors to send feedaback. As mentioned in the help text on the contact form settings page, you can also use the body area just above the form to give site visitors your postal address or share any other information.
However, because you can't specify an input format for the contact form page, the additional information you add will display without linebreaks or paragraph breaks and look pretty ugly.
There is a simple workaround for this. Just put  and  tags where you want the linebreaks and paragraphs to appear and you will have a nice looking contact page. Experiment with the line break and paragraph break tags until you are satisfied with the appearance of your contact page.
Content translation: translating posts to different languages
The content translation module allows content to be translated into different languages. Working with the locale module (which manages enabled languages and provides translation for the site interface), the content translation module is key to creating and maintaining translated site content.
Configuring content translation and translation-enabled content types:
    * Assign the “translate content” permission to the appropriate user roles at the "Permissions" configuration page.
    * Add and enable desired languages at the “Languages” configuration page.
    * Determine which content types should support translation features. To enable translation support for a content type, edit the type (at admin/content/types) and at the "Multilingual support" drop down, select "Enabled, with translation". ("Multilingual support" is located within "Workflow settings".) Be sure to save each content type after enabling multilingual support.
Working with translation-enabled content types:
    * Use the “Language” drop down to select the appropriate language when creating or editing posts.
    * Provide new or edit current translations for existing posts via the “Translation” tab. Only visible while viewing a post as a user with the “translate content” permission, this tab allows translations to be added or edited using a specialized editing form that also displays the content being translated.
    * Update translations as needed, so that they accurately reflect changes in the content of the original post. The translation status flag provides a simple method for tracking outdated translations. After editing a post, for example, select the "Flag translations as outdated" check box to mark all of its translations as outdated and in need of revision. Individual translations may be marked for revision by selecting the "This translation needs to be updated" check box on the translation editing form.
    * The "Content management" administration page displays the language of each post, and also allows filtering by language or translation status.
Use the language switcher block provided by locale module to allow users to select a language. If available, both the site interface and site content are presented in the language selected.
Dblog: Capture system events in log
The dblog module monitors your system, capturing system events in a log to be reviewed by an authorized individual at a later time. This is useful for site administrators who want a quick overview of activities on their site. The logs also record the sequence of events, so it can be useful for debugging site errors.
The dblog log is simply a list of recorded events containing usage data, performance data, errors, warnings and operational information. Administrators should check the dblog report on a regular basis to ensure their site is working properly.
Drupal: Drupal sites directory server
Please note, drupal module has been removed from Core as of Drupal 6. It will instead be available as the contrib "site_network" module.
The Drupal module uses the XML-RPC network communication protocol to connect your site with a directory server.
Enabling the Drupal module will:
    * allow members on all sites using the Drupal module to login to your site without registering using their distributed identification and vice versa.
    * allow members to login to any other site which uses the Drupal module, using a login name which looks much like an email address for your site: username@example.com
The Drupal module administration page allows you to set the xml-rpc server page. The listing of your site in a site directory will occur shortly after your sites next cron run.
You can
    * run your cron job manually at your sites cron page.
    * view the XML-RPC page.
    * administer Drupal administer &gt;&gt; settings &gt;&gt; drupal.
Old page
The "Drupal" module features a capability whereby other drupal sites may call home to report their existence. In turn, this enables a pod of Drupal sites to find, cooperate and advertise each other.
Currently, the main application of this feature is the Drupal sites page. By default, fresh Drupal installations can use drupal.org as their directory server and report their existence. This reporting occurs via scheduled XML-RPC pings.
Drupal administrators should simply enable this feature to get listed on the Drupal sites page. Just set your site's name, e-mail address, slogan and mission statement on the administer » settings page. Then make sure that the field called Drupal XML-RPC server on the administer » settings » drupal page is set to http://www.drupal.org/xmlrpc.php, and enable this feature using the dropdown directly below.
The listing of your site will occur shortly after your site's next cron run. Note that cron.php should be called using the domain name which you want to have listed at drupal.org. For example, don't kick off cron by requesting http://127.0.0.1/cron.php. Instead, use a publicly accessible domain name such as http://www.example.com/cron.php.
Also note that your installation need not use drupal.org as its directory server. For example, this feature is perfectly capable of aggregating pings from all of your departmental drupal installations sites within an enterprise.
Filter: Input formats for user content
The filter module allows you to configure formats for text input for your site. For example, you may want a filter to strip out malicious HTML from users' comments.
Despite the name "filter," the module not only lets you keep out text you don't want but also lets you enhance the text you let in. So, for example, you can use a filter to turn ordinary line breaks into HTML paragraph tags.
When users create or edit content, they can choose between the input formats you make available. You can configure which formats are available to which user roles, as well as choose a default input format. You can also create new input formats. And you can configure each input format to use your choice of filters.
You can
    * administer input format permissions and settings at administer &gt;&gt; site configuration &gt;&gt; input formats.
    * add a new input format at administer &gt;&gt; site configuration &gt;&gt; input formats &gt;&gt; add input format.
Forum: create threaded discussions
The forum module lets you create threaded discussion boards, called forums, on your site. This is similar to a message board system such as phpBB. Forums are very useful because they allow community members to discuss topics with one another, and the discussions are archived for future reference.
Topics, or threaded discussions, are posted to a forum. Each topic is comprised of an initial post and replies, or comments. Forum topics can have their own URLs.
Multiple forums are often set up for different areas of discussion. Forums can also be placed inside other forums for a discussion area that is a subset of the parent forum, in which case they are often called child boards or child forums.
Containers can also be created to hold a group of forums. However, unlike in parent forums, topics cannot be posted to containers. Both containers and forums can be placed inside other containers and forums. By planning the structure of your containers and forums well, you make it easier for users to find a discussion area of interest to them.
The Forums module requires Taxonomy and Comments modules to be enabled.
You can
    * Administer forums at administer &gt;&gt; forums.
    * Set workflow and other global forum settings on the forum configuration page: administer &gt;&gt; settings &gt;&gt; content types &gt;&gt; forum .
    * control who can create, edit, and administer forum posts with administer &gt;&gt; access control or taxonomy access control.
    * Move forum topics to a different forum board using the edit tab; a copy can be left in the existing forum by selecting leave a shadow copy.
    * Enable the required comment and taxonomy modules at administer &gt;&gt; modules.
    * Read about the comment module at administer &gt;&gt; help &gt;&gt; comment.
    * Read about the taxonomy module at administer &gt;&gt; help &gt;&gt; taxonomy.
    * The forum module, like Drupal itself, can be extended with different modules depending on the needs of your site. What features you choose to implement are in your control. Some suggested modules are advanced forum, quote, subscription, bbcode, and comment mover modules. Add private message with privatemsg module and extend user profile information with the profile module.
HOWTO: Create a forum
Users can post topics to forums. Forums can appear below other forums in a hierarchy, or can appear in containers.
   1. Click administer » forums.
   2. Click the add forum tab.
   3. Type in a forum name.
   4. Type in a forum description. This will show up below the forum name when users visit the forum section.
   5. Select a parent.
          * You can choose either a forum or a container to be a 'parent' for a forum. If there are no containers or existing forums to choose from, you will only see  as the option, meaning it will be at the top of the forum hierarchy.
   6. Select a weight. Higher numbers means the container will sink down in the list, lower numbers mean the container will rise up.
   7. Click the "Submit" button.
HOWTO: Create forum containers
Containers are 'parents' for forums (discussion boards); they are used to group forums. Users cannot post topics to containers; users post to the forums in the container(s). A site with only a few forum discussion boards may not need any containers.
   1. Click administer » forums.
   2. Click the add container tab.
   3. Type in a container name.
   4. Type in a container description. This will show up below the container name when users visit the forum section.
   5. Select a parent. If there are no containers or existing forums to choose from, you will only see  as the option, meaning it will be at the top of the forum hierarchy.
   6. Select a weight. Higher numbers means the container will sink down in the list, lower numbers mean the container will rise up.
   7. Click the "Submit" button.
Help: context-sensitive guidance
The help module displays context-sensitive help.
Administrators cannot alter the help system. But module authors can make informative use of it. And modules can make help texts available to other modules.
More about the help module
All user help should be presented using the help module. Some examples of help:
    * The name of a module (unused, but there).
    * The description found on the admin/system/modules page.
    * The module's help text, displayed on the admin/help page and through the module's individual help link.
    * The help for a distributed-authorization module (if applicable).
    * The description of a post type (if applicable).
The text of the help topics listed on administer &gt;&gt; help are maintained on drupal.org in the Drupal modules section. Additional help is often available in sub pages of that section.
Legacy: remapping of old-style URLs
The legacy module provides legacy handlers for upgrades from older installations. These handlers help automatically redirect references to pages from old installations and prevent page not found errors for your site.
The legacy module handles legacy style taxonomy page, taxonomy feed, and blog feed paths. It also handles URL upgrades from Drupal 4.1. It rewrites old-style URLs to new-style URLs (clean URLs).
Example Mappings:
    * taxonomy/page/or/52,97 to taxonomy/term/52+97.
    * taxonomy/feed/or/52,97 to taxonomy/term/52+97/0/feed.
    * blog/feed/52 to blog/52/feed.
    * node/view/52 to node/52.
    * book/view/52 to node/52.
    * user/view/52 to user/52.
Legacy module has no configurable options and does not need to be enabled for new Drupal sites.
Locale: multi-language support
The locale module allows you to present your Drupal site in a language other than the default English. You can use it to set up a multi-lingual web site or replace given built-in text with text which has been customized for your site. Whenever the locale module encounters text which needs to be displayed, it tries to translate it into the currently selected language. If a translation is not available, then the string is remembered, so you can look up untranslated strings easily.
The locale module provides two options for providing translations. The first is the integrated web interface, via which you can search for untranslated strings, and specify their translations. An easier and less time-consuming method is to import existing translations for your language. These translations are available as GNU gettext Portable Object files (.po files for short). Translations for many languages are available for download from the translation page.
If an existing translation does not meet your needs, the .po files are easily edited with special editing tools. The locale module's import feature allows you to add strings from such files into your site's database. The export functionality enables you to share your translations with others, generating Portable Object files from your site strings.
You can
    * administer localization at administer &gt;&gt; localization.
    * manage strings for the localization: administer &gt;&gt; localization &gt;&gt; manage strings.
    * add a locale language: administer &gt;&gt; localization &gt;&gt; add language.
    * download translation files from the Drupal translations page. 
Adjusting your php.ini settings for importing .po files
Gettext portable object files sometimes are big enough to require you to adjust the settings of you php.ini at least to be able to import the translated strings into your Drupal installation.
For example, the es.po (Spanish localization) for Drupal 4.6.4 is a 400K+ text file containing 1800+ translated strings. You might very well need to adjust the relevant php.ini settings for this file to get imported.
PHP defaults to this values:
; Maximum execution time of each script, in seconds
max_execution_time = 30
; Maximum amount of time each script may spend parsing request data
max_input_time = 60
; Maximum amount of memory a script may consume (8MB)
memory_limit = 8M
You'll more likely have to adjust the memory_limit to 16M (your mileage may vary) to have the import process complete.
If you're getting a blank page with no indication that the import process has been completed (or has failed) you're most probably having trouble with PHP's defaults. Make sure by checking the messages in your webserver's error log.
If it's the upload what is taking too much time go adjust max_input_time to a higher value. If it's the time the script is taking to complete the process what's taking too much time you'll have to adjust max_execution_time.
There should be no need to leave this values that way once you've imported a big .po file. If you're confident the new settings won't hurt your webserver's performance or security just leave them that way. Otherwise return them to the previous settings (even when it's highly iikely that you'll need to readjust them whenever you perform an upgrade or reinstall)
Editing text for translation
Translating text via the Drupal interface can be pretty tedious to say the least. This is not so much because of Drupal, but because of page reloads every time a string is updated. There is a much better way to translate strings into a different language, namely editing PO files with a PO editor, and then importing them into Drupal.
A full guide on how to translate Drupal Core or modules, using the above-mentioned technique, can be found here.
How to create Drupal site in Marathi (Devnagari)
I read a few posts asking guidelines on creating a Drupal site in Marathi (Devnagari) - a language spoken in western part of India. As there is neither standard Marathi translation nor any Marathi language specifc help is available, I thought of writing a small set of steps / guidelines for creating a Drupal based website in Marathi language ( rather any Indian Language for which Unicode fonts are available)
Although I have created Marathi websites using Drupal 4.7 &amp;amp; 5.1, this article applies to Drupal 5.1 only.
To create a Drupal site in Marathi, you may follow these steps:
- Install Drupal!
- Create first (Admin) user account
- Login as administrator to the newly created site
- Go to Administer &gt; Site Building &gt; Modules (/admin/build/modules)
- Enable Locale module
- Go to Administer &gt; Site Configuration &gt; Localization (/admin/settings/locale)
- Click on add language tab
- From the drop down of languages, select Marathi &amp;amp; click on Add language button
- On the Languages list page, you will now see mr (Marathi) as a language, enable it &amp;amp; make it default
Now you might expect that suddenly the entire site will appear in Marathi, but nothing like this will happen! Now you will need to 'translate' default English 'Strings' to Marathi one by one.
- To do so, go to Manage Strings Tab on the localization page (admin/settings/locale/strings/search)
- Enter the string / text you wish to translate to Marathi (e.g. Log in)
- If the string is found, a list of all the places where this string is used in Drupal site is displayed.
- In that list, go to the row which you want to translate to Marathi, click on edit
- In the next page enter your own Marathi translation of the string using unicode marathi font &amp;amp; save the string (e.g. Log In = येण्याची नोंद )
Follow these steps for all the labels / strings which are appearing on your site's interface and you are done!!
To avoid this painful process, there is an option of Importing a translation scheme (so we can actually import entire Marathi translation of Drupal interface in a single click). However, unfortunately, there is no standard Marathi Translation of Drupal interface available yet! So we have to wait for someone to write it or follow this string by string translation process!
If you need a Marathi Transliteration Typing interface for your site (so that your users can type in Marathi using normal English keyboards), you may try a module called as UniSaraswati (http://drupal.org/project/unisaraswati) specifically written for this purpose
If you need generic help about computing in Marathi, you may get it on Marathi Wikipedia - http://mr.wikipedia.org
You may find the examples of marathi sites created using Drupal at:
www.sadha-sopa.com (Drupal 4.7)
www.marathigazal.com (Drupal 5.1)
www.miloonsaryajani.com (Drupal 5.1)
Prasad Shirgaonkar
How to install a different language
To install a locale, simply enable the locale module. Then, go to admin/localization and import a .po file that you downloaded from http://drupal.org/project/Translations. You should select the right language code in the popup menu. That's it !
You can now let user switch languages, or not, by activating more than one. Also, you could look in the tab "translate srtings" in the localization module.
See Locale or internationalization support for more.
HOWTO: Creating a customized language set to replace Drupal terminology
   1. Enable the locale module on the administer » modules page
          * administer &gt; access control
          * give yourself (and any other roles that should have it) permission to access locale
   2. Go to the administer » localization page.
   3. Select the add language tab .
   4. Assuming English, create a custom language by adding en-US in the Language code text field.
   5. Give your language a name, such as custom-English (be sure not to use spaces in your language name), and add the language.
   6. This will return you to the main localization page. Set your new language as enabled and as the default.
   7. Save the configuration.
   8. Then disable the original English language set (that is, unless you would like users to be given the option to choose between the two in their account area).
Now, any time you visit a page with Drupal hard-coded content, it will be added into your language set database.
Once you have visited a page that you wish to change the content:
   1. Go to the manage strings page (admin/locale/string/search) of the localization section.
   2. Enter in the string you wish to search for.
   3. Edit the result and enter your replacement text.
Drupal 4.7: Creating a customized language set to replace Drupal terminology
Depending on your particular application, you may find that the default text or terminology used in the Drupal core or a contributed module doesn't suit your style or need. Customizing this text with the locale module is fairly simple and is portable if you create an additional site up upgrade your version of Drupal or a contributed module.
As simple examples, you might wish to change the "Search" button to say "Find", or you might wish that comments were shown as being "Posted by" rather than "Submitted by" a particular user. As a more advanced possibility, you might wish that the things described by Drupal as "forums" were instead called "bulletin boards", and that you could change this in every context where the word "forum" is used.
The locale module is a well-developed system for handling this situation. While described as a system for making translations, it will also efficiently substitute your prefered terminology for the default Drupal terminology. You should first read the instructions for Creating a customized language set to replace Drupal terminology. After following the steps outlined there to create your custom language, this page is intended to provide additional step-by-step and detailed instructions for those new to Drupal.
Again, before proceeding, follow the instructions in the first section at http://drupal.org/node/24593 to enable the locale module, create a customized language, and make it the default language. If you are not user #1, a user with appropriate access will need to go to the access control page at administer &gt;&gt; access control and enable "administer locales" for your user role.
Next, rather than searching for individual strings through the interface at administer &gt;&gt; localization, you'll probably find it easier to use a template file and then import the "translated" strings. So, download the translation templates from the appropriate version of Drupal. Some contributed modules will also include a translation template in a "po" directory.
In the downloaded directory of templates, you will see numerous template files ending in ".pot". The file "general.pot" contains strings that are reused in several modules. Open this in a text editor and look it over. Following through on the simple examples above, we can find these strings in the file in the following form:
#: includes/locale.inc:327;346 modules/search.module:142;996 modules/system.module:1198 modules/user.module:1958
msgid "Search"
msgstr ""
Edit the file so as to specify a replacement text, such as:
#: includes/locale.inc:327;346 modules/search.module:142;996 modules/system.module:1198 modules/user.module:1958
msgid "Search"
msgstr "Find"
Similarly, we can change the text shown by each comment by making a change to this entry:
#: themes/engines/phptemplate/phptemplate.engine:250;273
msgid "Submitted by %a on %b."
msgstr "Posted by %a on %b."
Note that the text following the "#:" is for information only and does not affect the outcome of this process.
From here, save your edited file somewhere handy (you might keep it together with your local copy of your customized theme). Now go back to administer-&gt;localization and choose "import" from the top tabs. Browse and choose your edited translation file, and then import it into your customized language. Voila, you should see that the name of the Search box it changed to "Find", etc.
For a more sweeping change, you could open the "forum-module.pot file", and provide an alternate term every place the word "forum" is used. For example, you could edit the following entry as shown:
#: modules/forum.module:51;110;216
msgid "forum topic"
msgstr "bulletin board subject"
Additional help and techniques for using the locale module and generating substitute text can be found in the Translator's guide.
Note for the curious
If you look in the PHP code for a module, you'll find (for example) in the search.module:

&amp;lt;?php&amp;nbsp;&amp;nbsp;$form['basic']['inline']['submit']&amp;nbsp;=&amp;nbsp;array('#type'&amp;nbsp;=&amp;gt;&amp;nbsp;'submit',&amp;nbsp;'#value'&amp;nbsp;=&amp;gt;&amp;nbsp;t('Search'));?&amp;gt;


'Search' is a t-ified string, which means it can be replaced by using the locale module.
Menu: customize site navigation
Menus are a collection of links (menu items) used to navigate a website. The menu module provides an interface to control and customize the powerful menu system that comes with Drupal. Menus are primarily displayed as a hierarchical list of links using Drupal's highly flexible blocks feature. Each menu automatically creates a block of the same name. By default, new menu items are placed inside a built-in menu labeled Navigation, but administrators can also create custom menus.
Drupal themes generally provide out-of-the-box support for two menus commonly labeled primary links and secondary links. These are sets of links which are usually displayed in the header or footer of each page (depending on the currently active theme). Any menu can be designated as the primary or secondary links menu via the menu settings page.
Menu administration tabs:
    * On the administer menu page, administrators can "edit" to change the title, description, parent or weight of a menu item. Under the "operations" column, click on "enable/disable" to toggle a menu item on or off. Only menu items which are enabled are displayed in the corresponding menu block. Note that the default menu items generated by the menu module cannot be deleted, only disabled.
    * Use the "add menu" tab to submit a title for a new custom menu. Once submitted, the menu will appear in a list toward the bottom of the administer menu page underneath the main navigation menu. Under the menu name there will be links to edit or delete the menu, and a link to add new items to the menu.
    * Use the "add menu item" tab to create new links in either the navigation or a custom menu (such as a primary/secondary links menu). Select the parent item to place the new link within an existing menu structure. For top level menu items, choose the name of the menu in which the link is to be added.
You can
    * administer menus at administer &gt;&gt; menus.
    * add a menu at administer &gt;&gt; menus.
    * add a menu item at administer &gt;&gt; menus &gt;&gt; add menu item.
    * modify menu settings (in particular, to specify a menu to use for primary or secondary links) at administer &gt;&gt; settings &gt;&gt; menus.
    * manage menu blocks at administer &gt;&gt; blocks.
Using named anchors with menus
Users who have tried using “named anchors,” also known as “jump links,” in the menu system can run into problems with them not to working. For clarification, a named anchor looks like this:

The expected behavior is that when a link that points to this named anchor is clicked, the user’s browswer should jump to a to the anchor tag on the html page, making it appear at the top of the user’s browser window.
This desired behavior can be accomplished by adding the following function to your theme’s template.php file:
function phptemplate_menu_item_link($item, $link_item) {
  // Convert anchors in path to proper fragment
  $path = explode('#', $link_item['path'], 2);
  $fragment = !empty($path[1]) ? $path[1] : NULL;
  $path = $path[0];
  return l(
            $item['title'],
            $path,
            !empty($item['description']) ? array('title' =&gt; $item['description']) : array(),
            !empty($item['query']) ? $item['query'] : NULL,
            $fragment,
            FALSE,
            FALSE
          );
}
Node: the content
All content on a Drupal website is stored and treated as "nodes." A node is any posting, such as a page, poll, story, forum text, or blog entry. Comments are not stored as nodes but are always tied to one.
Treating all content as nodes allows the flexibility of creating new types of content. It also allows you to painlessly apply new features or changes to all content.
Behind the scenes, the nodes module manages these nodes. This module is what lets you
    * list, sort through, and manage all the content on your site
    * set norms for how all posts are displayed
    * list and configure the "content types" for your site, and create new ones
Offering "content types" is a way Drupal allows you to have different kinds of nodes for different purposes. For example, a "story" is one kind of node, a "book page" another, and a "blog entry" yet another. You can also create new content types of your own.
You can
    * search for content at search.
    * administer all nodes at administer &gt;&gt; content management &gt;&gt; content.
    * administer workflow and other default settings for individual node types at administer &gt;&gt; content management &gt;&gt; content types.
    * configure the number of nodes to display on the main page and the length of trimmed posts at administer &gt;&gt; content management
      &gt;&gt;post settings.
    * set access permissions for various node types at administer &gt;&gt; user management &gt;&gt; access control.
Open ID
The OpenID module adds a feature to the User login block and displays a new link allowing a user to sign in using OpenID. The new OpenID link is located below the user/password field, and can be enabled by navigating to admin &gt; build &gt; modules, and selecting the checkbox next to the OpenID module.
OpenID is a secure method for logging into many websites with a single username and password. It does not require special software, and it does not share passwords with any site to which it is associated; including your site.
Users can create Drupal accounts using their OpenID. This lowers the barrier to registration, which is good for the site, and offers convenience and security to the users. OpenID is not a trust system, so email verification is still necessary. The benefit stems from the fact that users can have a single password that they can use on many websites. This means they can easily update their single password from a centralized location, rather than having to change dozens of passwords individually.
Note: If OpenID is enabled on a Drupal installation with an existing user base, those users need to assign one or more OpenIDs to their account before they can log in using an OpenID. This is accomplished by each user editing their OpenID identity under their user profile. Attempting to login with an OpenID that is not yet linked can easily lead to the creation of a new user if error messages aren't read or understood - and can be confusing to exiting users.
Concept Overview
The basic concept is as follows: A user has an account on an OpenID server. This account provides them with a unique URL (such as myusername.openidprovider.com). When the user comes to your site, they are presented with the option of entering this URL. Your site then communicates with the OpenID server, asking it to verify the identity of the user. If the user is logged into their OpenID server, the server communicates back to your site, verifying the user. If they are not logged in, the OpenID server will ask the user for their password. At no point does your site record, or need to record the user's password.
More information on OpenID is available at OpenID.net
Path: readable URLs
The path module lets you create URL aliases for your Drupal pages. By default, Drupal automatically creates web address like www.example.com/?q=node/67, which many people feel are not user-friendly. Also search engines will give better rankings to pages that have more human-friendly URLs, especially if they include relevant keywords - for instance, www.example.com/?q=all-about-tarantulas.
And with Drupal's "clean URLs" feature you can get rid of the "?q=": www.example.com/all-about-tarantulas.
Some examples of URL aliases:
    * user/login =&gt; login
    * image/tid/16 =&gt; store
    * taxonomy/term/7+19+20+21 =&gt; store/products/whirlygigs
    * node/3 =&gt; contact
    * node/10 =&gt; products/merchandise/cups
    * node/10 =&gt; cups
    * node/11 =&gt; products/merchandise/coffeemakers
You can create URLs as many levels deep in your virtual directory structure as you like. So, for example, suppose a page is called
www.example.com/taxonomy/term/7+19+20+21.
you could give it:
www.example.com/store/products/whirlygigs
Note that although it is possible to assign the same internal URL to multiple aliases, this is generally not a good idea if you care about your search engine rankings; Google for example penalises your site by dropping its rank if it thinks that you are publishing duplicate content under multiple URLs (a form of web spamming). So if you change your mind later on, and just HAVE to change a URL alias, for example from
www.example.com/dangerous/tarantulas
to
www.example.com/beautiful/tarantulas
you don't want to just delete the old URL, or that page will have to start from scratch building up page rankings. The best thing to do is to set up a "301 redirect" for the old URL; as with many things Drupal, there are several ways to do this and details are quite involved, so I'll leave that (and robots.txt files) for your research.
Another note along the same lines is that you should really enable the path module and assign aliases to your content from the very start, so you don't have to deal the consequences of search engines and external sites already linking to your pages via the /node/ URLs. Or, if you are converting a site over from another platform (blogging tool, standard HTML-CSS), create your aliases to match the URLs from the previous site and you'll carry all the search engine history right along to the new one.
Of course if you don't care about your search engine rankings, you can just ignore all this and just use the path module to give your visitors friendly-looking permanent links!
You enable the path module on the modules page (administer &gt;&gt; modules). Then when users with the right permissions create or edit posts, they'll see a field for "URL path settings." That's where they can enter an alias of their choice.
On the URL aliases page (administer &gt;&gt; url aliases) you'll see a list of all the URL aliases on your site. There you can edit them, and add new ones. You can assign more than one alias to a page (just use the add alias tab again for each new alias).
On the access control page (administer &gt;&gt; access control) you can decide who can create aliases and who can administer the list of them.
The path module also lets you define many URL aliases at once. This is useful if you wish to use URLs uniformly different from those assigned by default. For example, you may want to show your URLs in a different language. To do this sort of thing, you need to dig a bit into Drupal's source code.
You can
    * set the path for a post with the path module.
    * add a URL alias: administer &gt;&gt; url aliases &gt;&gt; add alias.
    * administer the list of URL aliases: administer &gt;&gt; url aliases.
    * read how to configure clean URLs for your webserver.
    * enable Clean URLS to remove the =? at administer &gt;&gt; settings in the General settings area.
    * automate URL alias creation by installing and using the pathauto module.
Mass URL aliasing
Drupal also comes with user defined mass URL aliasing capabilities. You might like to see completely different URLs used by Drupal, or even URLs translated to the visitors' native language, in which case this feature is handy. Only an administrator with access to the website source code can set up this kind of aliases. You can define a function somewhere in your code (even in settings.php), following this example:

&amp;lt;?php//&amp;nbsp;Example&amp;nbsp;for&amp;nbsp;Drupal&amp;nbsp;4.6.xfunction&amp;nbsp;conf_url_rewrite($path,&amp;nbsp;$mode&amp;nbsp;=&amp;nbsp;'incoming')&amp;nbsp;{&amp;nbsp;&amp;nbsp;if&amp;nbsp;($mode&amp;nbsp;==&amp;nbsp;'incoming')&amp;nbsp;{&amp;nbsp;//&amp;nbsp;URL&amp;nbsp;coming&amp;nbsp;from&amp;nbsp;a&amp;nbsp;client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;preg_replace('!^display/(\d+)$!',&amp;nbsp;'node/\1',&amp;nbsp;$path);&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;elseif&amp;nbsp;($mode&amp;nbsp;==&amp;nbsp;'outgoing')&amp;nbsp;{&amp;nbsp;//&amp;nbsp;URL&amp;nbsp;going&amp;nbsp;out&amp;nbsp;to&amp;nbsp;a&amp;nbsp;client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;preg_replace('!^node/(\d+)$!',&amp;nbsp;'display/\1',&amp;nbsp;$path);&amp;nbsp;&amp;nbsp;}}?&amp;gt;



&amp;lt;?php//&amp;nbsp;Example&amp;nbsp;for&amp;nbsp;Drupal&amp;nbsp;4.7.x&amp;nbsp;and&amp;nbsp;upfunction&amp;nbsp;custom_url_rewrite($type,&amp;nbsp;$path,&amp;nbsp;$original)&amp;nbsp;{&amp;nbsp;&amp;nbsp;//&amp;nbsp;This&amp;nbsp;path&amp;nbsp;was&amp;nbsp;already&amp;nbsp;aliased,&amp;nbsp;skip&amp;nbsp;rewriting&amp;nbsp;it&amp;nbsp;&amp;nbsp;if&amp;nbsp;($path&amp;nbsp;!=&amp;nbsp;$original)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$path;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;if&amp;nbsp;($type&amp;nbsp;==&amp;nbsp;'source')&amp;nbsp;{&amp;nbsp;//&amp;nbsp;URL&amp;nbsp;coming&amp;nbsp;from&amp;nbsp;a&amp;nbsp;client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;preg_replace('!^display/(\d+)$!',&amp;nbsp;'node/\1',&amp;nbsp;$path);&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;elseif&amp;nbsp;($type&amp;nbsp;==&amp;nbsp;'alias')&amp;nbsp;{&amp;nbsp;//&amp;nbsp;URL&amp;nbsp;going&amp;nbsp;out&amp;nbsp;to&amp;nbsp;a&amp;nbsp;client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;preg_replace('!^node/(\d+)$!',&amp;nbsp;'display/\1',&amp;nbsp;$path);&amp;nbsp;&amp;nbsp;}}?&amp;gt;


This function will shorten every node/$node_id type of URL to display/$node_id. Individual URL aliases defined on the browser interface of Drupal take precedence, so if you have a 'contact' page alias for example, then the display/3 alias will not be effective when outgoing links are created. Incoming URLs however always work with the mass URL aliased variant. Only two modes are supposed to be supported by your custom function.
You cannot only use this feature to shorten the URLs, or to translate them to you own language, but also to add completely new subURLs to an already existing module's URL space, or to compose a bunch of existing stuff together to a common URL space. You can create a news section for example aliasing nodes and taxonomy overview pages falling under a 'news' vocabulary, thus having news/15 and news/sections/3 instead of node/15 and taxonomy/term/3. You need extensive knowledge of Drupal's inner workings and regular expressions though to make such advanced aliases.
PHP Filter: Include PHP code in posts
The PHP filter adds the ability to include PHP code in posts. PHP is a general-purpose scripting language widely-used for web development; the content management system used by this website has been developed using PHP.
Through the PHP filter, users with the proper permission may include custom PHP code within a page of the site. While this is a powerful and flexible feature if used by a trusted user with PHP experience, it is a significant and dangerous security risk in the hands of a malicious user. Even a trusted user may accidentally compromise the site by entering malformed or incorrect PHP code. Only the most trusted users should be granted permission to use the PHP filter, and all PHP code added through the PHP filter should be carefully examined before use.
Some example PHP snippets are available, or you can create your own with some PHP experience and knowledge of the Drupal system.
Ping: notify services of changes
The ping module is useful for notifying interested sites that your site has changed. It automatically sends notifications (called "pings") to the pingomatic service to tell it that your site has changed. In turn pingomatic will ping other services such as weblogs.com, Technorati, blo.gs, BlogRolling, Feedster.com, Moreover, etc.
The ping module requires cron or a similar periodic job scheduler to be enabled.
You can:
    * enable or disable the ping module at administer &gt;&gt; modules.
    * run your cron job at your site's cron page.
    * read about configuring cron jobs.
There are no configuration options, and hence no configuration interface.
Another module that provides similar functionality is multiping.
Poll: community voting
The poll module lets you create simple polls. You ask a question, provide possible answers, and let your users vote. Drupal then keeps a running tally of the results.
When you create a poll, you can also specify the "base" vote counts (how many votes an item has at the start) and decide how long the voting will run.
You can enable the polls module on the modules page (administer &gt;&gt; modules).
The poll item in the navigation menu will take users to a page where they can see all of the current polls, vote on them (if they haven't already) and view the results.
On the access control page (administer &gt;&gt; access control) you can decide which users have permission to vote, to see the voting results, and to create polls of their own.
You can
    * view the polls page.
    * administer &gt;&gt; settings &gt;&gt; content types &gt;&gt; poll.
Profile: extending user account information
The profile module lets your users share information about themselves. You set up forms for them to fill in. Users tell about themselves by filling in your forms on the edit tab of their "My Account" page. And what each user tells will be visible to the rest of the users on your site, to the extent you choose when you design the forms.
You can enable the profile module on the modules page (Administer &gt;&gt; Site Building &gt;&gt; Modules in D5).
When you set up the forms for user profiles (at Administer &gt;&gt; User Management &gt;&gt; Profiles), you can define custom fields (for example, for name, age, and country). To do this, you can make use of fields of the following types:
    * single-line textfield
      Example: You want to ask your user's name
    * multi-line textfield
      Example: You want to ask an open-ended question: "What would you most like to do to make this a better community?"
    * checkbox
      Example: You want to say, "Please tick this box if you've ever been to Brazil."
    * list selection
      Example: You want to ask, "Which of these colors do you most prefer--red, blue or green?"
    * freeform list
      Example: You want to ask your user for a list--"What languages do you speak?"
    * URL
      Example: You want to ask, "What is the address of your personal website?"
    * date
      Example: You want to ask, "When were you born?"
You can have as many fields as you want, using any of these types as many times as you want. And you can put each field into the order you want by specifying its "weight."
Each time you add a field, you are asked to specify its "category." This allows you to divide each user's profile into more than one section. For example, you might divide the profile into two sections, one on "Community interests," the other on "Professional skills." So as you define each field, you assign it to one of these two categories. Drupal will then typically display each user's profile page with two separate sections--one for "Community interests," another for "Professional skills"--each with its own set of information, derived from the fields you have defined and your user has filled in.
You can mark a field as being required ("The user must enter a value"). And you can specify that when new users register, a field be shown for them to fill in.
If both the profile module and the menu module are enabled, from the Menus page (Administer &gt;&gt; Site Building &gt;&gt; Menus) you can enable the item User list within the Navigation Menu. This will take people to a page where they can see a list of your users. A person who has permission can click on the name of any user in the list to view that user's profile.
The option to show this menu item may be disabled by default, but you can enable it. You can also rename "User list" to whatever you wish as well as move the menu item to whatever menu you like (e.g. Primary Links.)
On the permissions page (Administer &gt;&gt; User Management &gt;&gt; Access control) you can decide who is normally allowed to view the user profiles. (You'll find the permissions for profiles under "user module.") In any case, the profiles are always accessible to your site administrators.
Contributed modules can also deploy the fields in user profiles to do much more with them. Such modules, for example, can help community-based sites identify and organize users through their profile fields.
Enabling user pictures (avatars)
Note that user pictures (or avatars) or pictures are part of the user.module, not the profile module.
Enable user pictures:
   1. Navigate to the administration area for user module configuration page under Administer &gt; User Management &gt; User Settings
   2. In the Pictures settings, for Picture support, select Enabled (Enable picture support.)
   3. Note: you must write in your directory name. Make sure the directory is created and make sure you have that directory has write permissions (that is, chmod to 755).
   4. Click "Save Configuration"
Drupal 4.7 allows you to enable avatars at administer » settings » users (admin/settings/user).
Once the pictures are enabled you must also make sure to change your settings to display them:
   1. Go to Administer &gt; Site Building &gt; Themes and click the "Configure" tab to change the setting for all of your themes. (To only make the change to one theme, click the "configure" link next to your-theme-name instead.)
   2. Check the boxes for "User pictures in posts" or/and "User pictures in comments" as appropriate.
   3. Make sure the check box for each content type you wish to use avatars is checked in the "Display post information on" section.
   4. Click "Save Configuration"
HowTo: Create new profile fields
   1. Enable the profile module:
          * In administer » modules select in the 'Enable' column where you see:
            profile | Support for configurable user profiles.
   2. Create new fields or edit existing ones:
          * Navigate to the administration area: administer » settings » profiles
          * Select a form field type under 'Add new field'
          * Follow onscreen instructions for configuring this field, and 'save field'.
HowTo: Make a field part of the registration process
To make a field part of the registration, perform the following steps:
   1. Go to: Administer &gt;&gt; User management &gt;&gt; Profiles.
   2. Create the profile field if it doesn't exist yet, and as follows:
          * Under the 'add new field' section, choose the type of field you want to create by clicking its link.
          * Provide the particulars for the field, namely category, title, form name, explanation, weight, visibility and page title.
          * Now check whether the field may or may not be left empty.
          * To make it appear on the registration page, make a checkmark in the 'Visible in user registration' checkbox.
   3. Click on the 'Save field' button.
Your new field will now appear on the registration page.
Note that in Drupal 4.6 and 4.7 the links are found in administer &gt;&gt; settings &gt;&gt; profiles.
HowTo Create a 'country' profile field
This page describes how to create a 'country' field in your users' profiles, similar to the one on Drupal.org, that lets you easily find users in any country.
   1. Create a new profile field.
   2. Go to the profile settings page (administer &gt; settings &gt; profiles ?q=admin/settings/profile)
   3. Select the 'list selection' type of form field.
          * Category (required): It can be a category you already have or a new one. (Suggested: Personal Information)
          * Title (required): Anything is OK. (Suggested: Country)
          * Form name (required): Anything is ok, as long as it is unique. (Suggested: profile_country)
          * Explanation (optional): Usually, country is self explanatory, but you may want to write a note here to your users about this field.
          * Selection options: Copy the list from the attached file here. This file is from Wikipedia
            (http://en.wikipedia.org/wiki/List_of_countries May 2006)
          * Weight: Select whatever you like (this is the weight in the category selected above).
          * Visibility: Select one of the 'Public Field' options.
          * Page title (required): You must put something here. (Suggested: People who live in)
          * Check boxes: Check 'the user must enter a value' to make this field required. Check 'visible in user registration form' to make it part of user registration.
   4. Click on 'Save field.'
Lista actualizada de países al 2008 (Castellano)
Fuente: http://es.wikipedia.org/wiki/Anexo:Pa%C3%ADses_del_mundo
Agradezco a xander21c por ayudarme a realizar la lista
Abjasia
Acrotiri y Dhekelia
Afganistán
Åland
Albania
Alemania
Andorra
Angola
Anguila
Antigua y Barbuda
Antillas Neerlandesas
Arabia Saudita
Argelia
Argentina
Armenia
Aruba
Isla Ascensión
Australia
Austria
Azerbaiyán
Bahamas
Bahréin
Bangladesh
Barbados
Bélgica
Belice
Benín
Bermudas
Bielorrusia
Bolivia
Bosnia y Herzegovina
Botsuana
Brasil
Brunéi
Bulgaria
Burkina Faso
Burundi
Bután
Cabo Verde
Islas Caimán
Camboya
Camerún
Canadá
Chad
Chile
China
Chipre
Chipre Septentrional
Islas Cocos
Colombia
Comoras
República del Congo
República Democrática del Congo
Islas Cook
Corea del Norte
Corea del Sur
Costa de Marfil
Costa Rica
Croacia
Cuba
Dinamarca
Dominica
Ecuador
Egipto
El Salvador
Emiratos Árabes Unidos
Eritrea
Eslovaquia
Eslovenia
España
Estados Unidos
Estonia
Etiopía
Islas Feroe
Filipinas
Finlandia
Fiyi
Francia
Gabón
Gambia
Georgia
Ghana
Gibraltar
Granada
Grecia
Groenlandia
Guam
Guatemala
Guernsey
Guinea
Guinea Ecuatorial
Guinea-Bissau
Guyana
Haití
Honduras
Hong Kong
Hungría
India
Indonesia
Irán
Iraq
Irlanda
Islandia
Israel
Italia
Jamaica
Japón
Jersey
Jordania
Kazajistán
Kenia
Kirguistán
Kiribati
Kosovo
Kuwait
Laos
Lesoto
Letonia
Líbano
Liberia
Libia
Liechtenstein
Lituania
Luxemburgo
Macao
ARY Macedonia
Madagascar
Malasia
Malawi
Maldivas
Malí
Malta
Islas Malvinas
Isla de Man
Islas Marianas del Norte
Marruecos
Islas Marshall
Mauricio
Mauritania
Mayotte
México
Micronesia
Moldavia
Mónaco
Mongolia
Montenegro
Montserrat
Mozambique
Birmania
Nagorno-Karabaj
Namibia
Isla de Navidad
Nauru
Nepal
Nicaragua
Níger
Nigeria
Niue
Norfolk
Noruega
Nueva Caledonia
Nueva Zelanda
Omán
Osetia del Sur
Bajos Países Bajos
Pakistán
Palaos
Palestina (ANP)
Panamá
Papúa Nueva Guinea
Paraguay
Perú
Islas Pitcairn
Polinesia Francesa
Polonia
Portugal
Puerto Rico
Puntland
Qatar
Reino Unido
República Centroafricana
República Checa
República Dominicana
Ruanda
Rumania
Rusia
Sahara Occidental
San Pedro y Miquelón
Islas Salomón
Samoa
Samoa Americana
San Bartolomé
San Cristóbal y Nieves
San Marino
San Martín
San Vicente y las Granadinas
Santa Helena
Santa Lucía
Santo Tomé y Príncipe
Senegal
Serbia
Seychelles
Sierra Leona
Singapur
Siria
Somalia
Somalilandia
Sri Lanka
Suazilandia
Sudáfrica
Sudán
Suecia
Suiza
Surinam
Svalbard
Tailandia
República de China
Tamil Eelam
Tanzania
Tayikistán
Timor Oriental
Togo
Tokelau
Tonga
Transnistria
Trinidad y Tobago
Tristán da Cunha
Túnez
Islas Turcas y Caicos
Turkmenistán
Turquía
Tuvalu
Ucrania
Uganda
Uruguay
Uzbekistán
Vanuatu
Ciudad del Vaticano
Venezuela
Vietnam
Islas Vírgenes Británicas
Islas Vírgenes Estadounidenses
Wallis y Futuna
Yemen
Yibuti
Zambia
Zimbabue
Updated list of Countries as of 2008 (English)
Extracted from: http://en.wikipedia.org/wiki/List_of_countries
Abkhazia
Afghanistan
Akrotiri and Dhekelia
Åland
Albania
Algeria
American Samoa
Andorra
Angola
Anguilla
Antigua and Barbuda
Argentina
Armenia
Aruba
Ascension Island
Australia
Austria
Azerbaijan
Bahamas, The
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bermuda
Bhutan
Bolivia
Bosnia
Botswana
Brazil
Brunei
Bulgaria
Burkina Faso
Burundi
Cambodia
Cameroon
Canada
Cape Verde
Cayman Islands
Central African Republic
Chad
Chile
China
Christmas Island
Cocos (Keeling) Islands
Colombia
Comoros
Congo (República)
Congo (República Democrática)
Cook Islands
Costa Rica
Côte d'Ivoire
Croatia
Cuba
Cyprus
Czech Republic
Denmark
Djibouti
Dominica
Dominican Republic
East Timor
Ecuador
Egypt
El Salvador
Equatorial Guinea
Eritrea
Estonia
Ethiopia
Falkland Islands
Faroe Islands
Fiji
Finland
France
French Polynesia
Gabon
Gambia, The
Georgia
Germany
Ghana
Gibraltar
Greece
Greenland
Grenada
Guam
Guatemala
Guernsey
Guinea
Guinea-Bissau
Guyana
Haiti
Honduras
Hong Kong
Hungary
Iceland
India
Indonesia
Iran
Iraq
Ireland
Isle of Man
Israel
Italy
Jamaica
Japan
Jersey
Jordan
Kazakhstan
Kenya
Kiribati
Korea, North
Korea, South
Kosovo
Kuwait
Kyrgyzstan
Laos
Latvia
Lebanon
Lesotho
Liberia
Libya
Liechtenstein
Lithuania
Luxembourg
Macau
Macedonia
Madagascar
Malawi
Malaysia
Maldives
Mali
Malta
Marshall Islands
Mauritania
Mauritius
Mayotte
Mexico
Micronesia
Moldova
Monaco
Mongolia
Montenegro
Montserrat
Morocco
Mozambique
Myanmar (Burma)
Nagorno-Karabakh
Namibia
Nauru
Nepal
Netherlands
Netherlands Antilles
New Caledonia
New Zealand
Nicaragua
Niger
Nigeria
Niue
Norfolk Island
Northern Cyprus
Northern Mariana Islands
Norway
Oman
Pakistan
Palau
Palestine
Panama
Papua New Guinea
Paraguay
Peru
Philippines
Pitcairn Islands
Poland
Portugal
Puerto Rico
Qatar
Romania
Russia
Rwanda
Saint Barthélemy
Saint Helena
Saint Kitts and Nevis
Saint Lucia
Saint Martin
Saint Pierre and Miquelon
Saint Vincent and the Grenadines
Samoa
San Marino
São Tomé and Príncipe São
Saudi Arabia
Senegal
Serbia
Seychelles
Sierra Leone
Singapore
Slovakia
Slovenia
Solomon Islands
Somalia
Somaliland
South Africa
South Ossetia
Spain
Sri Lanka
Sudan
Suriname
Svalbard
Swaziland
Sweden
Switzerland
Syria
Taiwan
Tajikistan
Tanzania
Thailand
Togo
Tokelau
Tonga
Transnistria
Trinidad and Tobago
Tristan da Cunha
Tunisia
Turkey
Turkmenistan
Turks and Caicos Islands
Tuvalu
Uganda
Ukraine
United Arab Emirates
United Kingdom
United States
Uruguay
Uzbekistan
Vanuatu
Vatican City
Venezuela
Vietnam
Virgin Islands, British
Virgin Islands, United States
Wallis and Futuna
Western Sahara
Yemen
Zambia
Zimbabwe
CiviCRM: Tags, Profiles, Groups, advanced community member management
CiviCRM's Profile functionality allows you to integrate and extend Drupal User screens with your contact management requirements. It also gives you tools for collecting and sharing contact information with community members and visitors.
You can:
    * configure user registration forms to include standard and custom CiviCRM fields
    * allow users to maintain some or all of their own contact data and find other contacts with shared characteristics
    * make a subset of CiviCRM data available for searchable listings
    * create custom 'sign-up' forms to collect contact information from site visitors
More information:
    * CiviCRM Quickstart - Website Integration
    * Configuring CiviCRM Profiles
Search: an internal site search system
The search module lets users search for specific content on your site. You can search both for users and for particular words.
With a regular search, if you enter more than one search term the search module will look for content that has all the terms you've entered. If instead you want either one term or another, join your terms with "or." If you're looking for an exact phrase, enclose it in quotation marks.
With Advanced Search you can also look for "any of these words" or "this phrase," or both, you can rule out words you don't want, and you can choose content types within which to confine your search.
You can enable the search module on the modules page (administer &gt;&gt; modules).
Drupal's search engine indexes the text of your site and the names of your users. You can tweak the way it does this.
The search engine does its indexing at intervals you choose by setting "cron runs." Cron (which stands for chronograph) is not a part of Drupal. It's a scheduler that resides on your server and runs tasks (called "cron jobs") at intervals, which you specify. The jobs can run weekly, daily, hourly, or whatever you like.
What you want to do is schedule a "cron job" that has a browser on your server regularly visit your "cron page." For instance, if your site were www.example.com your cron page would be http://www.example.com/cron.php. (This page is automatically set up for you when you install Drupal.)
Whenever such a visit occurs, the search engine will take up the work of indexing. You need to set up those cron runs before your search engine will work.
For a modest personal site to which you post now and then, you might set up such a cron job to run once a day. For a more active site you'd likely want to run that job more often--perhaps every few hours or every hour.
With Linux or Unix you can schedule your cron jobs by setting up what's called a "crontab." (You might rely on helper programs like C-Panel to make setting up your cron jobs easier.)
For further guidance on cron you can see Drupal's handbook page configuring cron jobs (or, if your server is running Windows, configuring Windows cron jobs). Your hosting company may also help guide you.
On your settings page for Search (administer &gt;&gt; settings &gt;&gt; search) you can limit how many items should be indexed in a single cron run. This can help keep your system from getting overloaded with work. (If you get a message that cron is timing out or PHP is running out of memory, lower the number of items to index per run.) You also have a few more search settings you can choose.
If both the search module and the menu module are enabled, from the menus page (administer &gt;&gt; menus) you can enable on the Navigation Menu the item Search. The option to show this menu item may be disabled by default, but you can enable it. (And you can rename "Search" to whatever you wish.)
You can also place a link to Search among your site's primary and secondary links, or on any other menu as well. (Click "add menu item," and when you fill in the "path" field on the dialogue page just enter "search.")
On your blocks page (administer &gt;&gt; blocks) for most themes there's also a Search form you can enable, and you can choose where you want it to display.
On your access control page (administer &gt;&gt; access control) you can decide who can do searches and who can administer the search settings. By default, anonymous users cannot perform searches.
A technical note: To use the search module the database user needs the create temporary table permission. If you seem not to have it, ask your systems administrator to make sure it's granted to you.
You can
    * read about how your site uses cron in the administer &gt;&gt; help &gt;&gt; system.
    * run your cron job manually at your sites cron page.
    * read about configuring cron jobs.
    * configure search at administer &gt;&gt; settings &gt;&gt; search. 
Add searching to your custom module
In order to have a custom module be searched the module must support the search hook. Read the Drupal API for the hook_search.
Searching: Jump to Title Immediately Without Showing Search Results
Imagine that you'd like, with Drupal's core search module, to jump straight to a node titled, say, "Spinal Tap" by just typing it, rather than having to sift through a bunch of search results. At the same time, you'd like search results when the exact title does not exist among your existing content.
I had this problem and seemingly solved it this way, though your feedback is appreciated for this Drupal noob in case I goofed up.
In search.module, you will find:

&amp;lt;?php&amp;gt;function&amp;nbsp;search_box_form_submit($form_id,&amp;nbsp;$form_values)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;'search/node/'.&amp;nbsp;trim($form_values[$form_id&amp;nbsp;.'_keys']);&amp;lt;?&amp;gt;


Replace it with the following to first check whether that title exists in your data base, and then to go to the URL of that title, here prefaced by movies/. Otherwise, just go ahead and provide search results as you would anyway:

&amp;lt;?php&amp;gt;function&amp;nbsp;search_box_form_submit($form_id,&amp;nbsp;$form_values)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$temp_result&amp;nbsp;=&amp;nbsp;db_query("SELECT&amp;nbsp;n.title&amp;nbsp;FROM&amp;nbsp;{node}&amp;nbsp;n&amp;nbsp;WHERE&amp;nbsp;n.title='%s'",&amp;nbsp;$form_values['search_theme_form_keys']);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$temp_object&amp;nbsp;=&amp;nbsp;db_fetch_object($temp_result);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if($temp_object-&amp;gt;title){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;'movies/'&amp;nbsp;.&amp;nbsp;$form_values['search_theme_form_keys'];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;'search/node/'.&amp;nbsp;trim($form_values[$form_id&amp;nbsp;.'_keys']);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;lt;?&amp;gt;


Of course, this isn't confined to titles. All you'd have to do is replace n.title above with n.whateverfieldyouwanthere
Things get even juicier when you use this with the Search AutoComplete module (http://drupal.org/project/search_autocomplete), where existing titles are suggested as you type.
Statistics: tracking referrers, page hits, etc.
The statistics module keeps track of numerous statistics of site usage. It counts how many times, and from where each of your posts is viewed. The statistics module can be used to learn many useful things about how users are interacting with each other and with your site.
Statistics module features
    * Logs show statistics for how many times the site and specific content on the site has been accessed.
    * Referrers tells you from where visitors came from (referrer URL).
    * Top pages shows you what's hot, what is the most popular content on your site.
    * Top visitors shows you the most active visitors for your site and allows you to ban abusive visitors.
    * Recent hits displays information about the latest activity on the site.
    * Node count displays the number of times a node has been accessed in the node's link section next to # comments.
Configuring the statistics module at Administer &gt;&gt; Logs &gt;&gt; Access log settings
    * Enable access log allows you to turn the access log on and off. This log is used to store data about every page accessed, such as the remote host's IP address, where they came from (referrer), what node they've viewed, and their user name. Enabling the log adds one database call per page displayed by Drupal.
    * Discard access logs older than allows you to configure how long an access log entry is saved, after which time it is deleted from the database table. To use this you need to run cron.php
    * Enabling Count content views allows you to turn on and off the node-counting functionality of this module. If it is turned on, an extra database query is added for each node displayed, which increments a counter.
Permissions at Administer &gt;&gt; User management &gt;&gt; Access control
    * access statistics allows users within a role to view the statistics logs.
    * view post access counter allows users within a role to view the count results from the Count content views setting.
You can
    * administer statistics administer &gt;&gt; settings &gt;&gt; statistics for Drupal 4.7 or Administer &gt;&gt; Logs &gt;&gt; Access log settings for Drupal 5.x.
    * access statistics logs Administer &gt;&gt; Logs.
    * view recent hits Administer &gt;&gt; Logs &gt;&gt; Recent hits.
Syslog: OS-integrated logging
Syslog is an operating system administration logging tool, where messages are routed by facility and severity. It is more suitable for medium to large sites, and would not be suitable for shared hosting environments. In the file /etc/syslog.conf you define where messages go for any combination of facility and severity.
For more information on syslog facilities, severity levels, and how to setup a syslog.conf file, see UNIX/Linux syslog.conf and PHP's syslog.
System: cron and caching
The system module provides system-wide defaults for running jobs at particular times, storing (caching) web pages to improve efficiency, and performing other essential tasks. The module also keeps track of various preferences you give for how you want your system to behave.
Some of Drupal's modules require regularly scheduled actions. The statistics module periodically cleans up logfiles. The aggregator module periodically updates feeds. Ping periodically notifies services of new content on your site. Search periodically indexes your site's content. All of these services rely on cron.
Cron (which is short for chronograph) is not a part of Drupal. It's a scheduler that resides on your server and performs tasks (called "cron jobs") at intervals, which you specify. The jobs can run weekly, daily, hourly, or whatever you like.
What you want to do is schedule a "cron job" that has a browser on your server regularly visit your "cron page." For instance, if your site were www.example.com your cron page would be http://www.example.com/cron.php. (This page is automatically set up for you when you install Drupal.) This regular visit to your cron page will help keep your system running smoothly.
For a modest personal site to which you post now and then, you might set up such a cron job to run once a day. For a more active site you'd likely want to run that job more often--perhaps every few hours or every hour.
With Linux or Unix you can schedule your cron jobs by setting up what's called a "crontab." (You might rely on helper programs like C-Panel to make setting up your cron jobs easier.)
For further guidance you can see Drupal's handbook page configuring cron jobs (or, if your server is running Windows, configuring Windows cron jobs). Your hosting company may also help guide you.
The system module's caching mechanism stores dynamically generated web pages in a cache--a stockpile--and reuses them. The pages on your site, rather than being never-changing sets of text and images, are all (or nearly all) likely to use elements pulled together "on the fly" from various parts of your database. Such pages are said to be "dynamically generated."
By caching such pages, the system module keeps them ready to use again, instead of having to create them again each time someone wants to view them. This way, displaying a page takes only one database query instead of several. Queries take time and system power, so caching lightens the load on your system and lets it respond more quickly.
Only pages requested by anonymous users are cached. To reduce server load and save bandwidth, the system module stores and sends cached pages compressed.
You can
    * run your cron job manually at your site's cron page.
    * read about configuring cron jobs.
    * administer cache settings in administer &gt;&gt; settings in the Cache settings area.
Configuring cron jobs
Some modules require regularly scheduled actions, such as cleaning up log files. Using cron can make these happen automatically.
Cron is a command scheduler that resides on your server and executes commands at intervals, specified in seconds. You can use it to control the execution of daily, weekly or monthly jobs (or anything with a period measured in seconds). These tasks are called "cron jobs."
What you want to do is schedule a "cron job" that tells a web browser on your server, such as lynx or wget, to regularly visit your "cron page." For instance, if your site were www.example.com, your cron page would be http://www.example.com/cron.php. (This page is automatically set up for you when you install Drupal.) This regular visit will automatically tell Drupal to perform its periodic tasks, and this will help keep your system running smoothly.
For a modest personal site to which you post now and then, you might set up such a cron job to run once a day. For a more active site you'd likely want to run that job more often--perhaps every few hours or every hour.
With Linux or Unix you schedule your cron jobs by setting up what's called a "crontab." (You might rely on helper programs like C-Panel to make setting up your cron jobs easier.)
Your crontab might look like this:
45 * * * *  /usr/bin/lynx -source http://example.com/cron.php
or
45 * * * * /usr/bin/wget -O - -q http://example.com/cron.php
This would have a browser (lynx or wget) visit your cron page 45 minutes after every hour. (At the start of the hour your site may receive a lot of traffic from other sites aggregating your content via RSS. So running your cron job earlier helps the job avoid that traffic.)
To set up a cron job on Windows read configuring Windows cron jobs.
Suppose your hosting company doesn't allow you to set up crontab entries.
    * You can ask the company to let you. Sometimes that's all you need to do.
    * You can ask someone else with access to the internet to set up an entry for you. After all, virtually any Unix/Linux machine with access to the internet can set up a crontab entry to regularly visit http://example.com/cron.php.
    * You can use a webcron service (for example, http://www.webcron.org), to set up cron jobs through a web interface.
    * If you can't run cron yourself or find someone to do it for you, consider the poormanscron module.
Cron doesn't guarantee your commands will run at the specified interval. But Drupal will try its best to come as close as possible. The more you visit cron.php, the more accurate cron will be.
Some guidelines of a more technical nature:
Take a look at the example scripts in the scripts directory. Make sure to adjust them to fit your needs. For example, the cron-lynx.sh file contains the line:
/usr/bin/lynx -source http://example.com/cron.php &gt; /dev/null 2&gt;&amp;amp;1
Enter:
whereis lynx
from your shell to make sure lynx is located at /usr/bin/lynx (if not, adjust the path as needed). Also change http://example.com/cron.php to the location of your Drupal installation (for instance, it might be http://www.example.com/drupal/cron.php).
A good crontab line to run this cron script once every hour would be:
00 * * * * /home/www/drupal/scripts/cron-lynx.sh
Note that it is essential to access cron.php using a browser on the web site's domain; do not run it using command line PHP directly and avoid using localhost or 127.0.0.1 or some of the environment variables will not be set correctly and features may not work as expected (for example, the Drupal module).
If your host doesn't give you permission to use a browser such as wget or lynx, there is also a script in Drupal's /scripts/ directory called cron-curl.sh which uses curl instead. It's also possible to write a simple PHP script which simulates a browser accessing your website's cron.php (using curl, fopen, or similar), and write a cron configuration which calls that instead. It is also possible to issue the call to cron.php directly from cron as follows:
/usr/bin/lynx -source http://example.com/cron.php &gt; /dev/null 2&gt;&amp;amp;1
or
curl --silent --compressed http://example.com/cron.php &gt; /dev/null 2&gt;&amp;amp;1
Note that the &gt; /dev/null 2&gt;&amp;amp;1 sends both error messages and any output to /dev/null so that users setting up cron jobs won't be emailed with error reports or output.
Configuring cron jobs on DreamHost
Setting up cron jobs via control panel interface.
To add the cron via the administration panel, visit:
https://panel.dreamhost.com/index.cgi?tab=goodies&amp;amp;subtab=cron&amp;amp;
And add a new cron tab using the following command:
/usr/bin/lynx -source http://example.com/cron.php &gt; /dev/null 2&gt;&amp;amp;1
To add a cron job using the shell
This information comes from the Dreamhost knowledge base.
Via the "crontab" command from the shell.
crontab -l will show you your currently set up cron jobs on the server.
crontab -r will delete your current cron jobs.
crontab -e will allow you to add or edit your current cron jobs by using your default text editor to edit your "crontab file".
Your crontab includes all the cron jobs you'd like, with one cron entry per line. A cron entry looks like this:
45 2 * * * /home/user/script.pl
      The first number is the minute of the hour for the command to run on.
      The second number is the hour of the day for the command to run on.
      The third number is the day of the month for the command to run on.
      The fourth number is the month of the year for the command to run on.
      The fifth number is the day of the week for the command to run on.
Here are some examples to help you learn the syntax for the numbers:
      32 * * * * : will be run every hour on the 32nd minute.
      12,42 * * * * : will be run twice an hour on the 12th and 42nd minutes.
      */15 */2 * * *: will be run at 0:00, 0:15, 0:30, 0:45, 2:00, 2:15, 2:30, ...
      43 18 * * 7: will be run at 6:43pm every Sunday.
You can also edit crontab on a local file. Upload it to a directory and run:
crontab YourFileName
It'll replace your crontab with what's on the text file, without having to edit it online. This is useful if you're using a telnet client which doesn't support ANSI control codes (such as the Windows' one) and can't understand what the heck is going on on the editors.
In my own experience, I found that only by entering one cron command per line worked (one line each for :10, :20, :30, etc.). I could not get crontab to take the "*/15" argument, so I worked around it. Also, if you have ANY character after the last command (space, CR, whatever) the file will not take.
I like this file-load approach because I have a basic command file to edit or call up again if needed. Afterwards, running crontab -l will confirm that the job did take.
Configuring cron jobs on Media Temple Grid Servers (gs)
Through my experience and to my knowledge, cron jobs on Media Temple's Grid Servers must be run via an .sh file in the "/scripts" directory of your Drupal installation. This was confusing to me as I've always setup cron jobs in cPanel. Media Temple does not use cPanel. Following the steps to setup a cron job like 45 * * * * /usr/bin/wget -O - -q http://www.example.com/cron.php through a typical cPanel interface will not work in Media Temple's cron job creation tool.
Use the following steps to get cron jobs working on a Media Temple Grid Server:
   1. Log into your (mt) AccountCenter and go to your WebControl panel.
   2. Click on the "Cron Jobs" icon to enter the cron configuration page.
   3. Select the "Add a new cron job" button.
   4. Enter an email address for the "Output email". Note:Leave this blank if you don't want constant emails.
   5. Enter the following in the "command to run" text box:
      curl http://www.example.com/cron.php
      where "example.com" is your domain name.
   6. Under "Scheduling Settings" select how often you want your cron job to run.
   7. Note the Media Temple will not allow a cron job to run more often than "every 5 minutes".
          * To setup a cron job to run once an hour:
                o Under the "minutes" entry, specify the minute value on which the cron job will start each hour.
                o Then select the following radio boxes: hour, day, month, day of the week.
Cronjobs without wget/lynx or curl
Some of you might have trouble getting lynx or wget to work. This may be the case if "localhost" is not permitted.
Then wget, lynx or curl won't work on the local machine. If you are not willing to depend on others to perform cronjobs and you dislike poormans cron, try this script.
touch ~/scripts/cron-php.sh
chmod 700 ~/scripts/cron-php.sh
vi ~/scripts/cron-php.sh
#!/bin/bash
#
# Simple cron script for those who cannot
# use wget, lynx or curl because the host
# closed the localhost loop.
#
# Usage:
# - put this file in the ~/scripts dir
# - add a cronjob pointing to this script
#
# Copyright OCS - 2006
# This script is provided under the GPL.
#
# v 0.1 original release
#
#############################
# CONFIGURATION OPTIONS
#############################
# Complete local path
#
# Set the complete local path
# to where the cron.php file
# is (ie the root path)
# Default is /var/www/html/
root_path=/var/www/html/
# Complete php path
#
# Set the complete path
# to the php parser if
# different from standard
parse=/usr/bin/php
##############################
# END OF CONFIGURATION OPTIONS
##############################
cd $root_path
if [ -e "cron.php" ]
then
  $parse cron.php
   if [ "$?" -ne "0" ]
    then
     echo "cron.php not parsed."
   else
     echo "cron.php has succesfully been parsed."
   fi
else
  echo "cron.php not found."
  exit
fi
exit
and then the crontab itself:
crontab -e
* * * * * ~/scripts/cron-php.sh &gt; /dev/null 2&gt;&amp;amp;1
where ~ is the directory where your drupal install is (the script defaults to /var/www/html/ but your professional hosting company will probably use /home/your.domain.tld/www
Multisite cron without wget/lynx or curl
I recently moved my sites to a new host, and they don't allow me to use either wget or curl from cron. Since I'm running multiple sites, I also can't just run cron.php directly. However, I can use the 'exec()' PHP call, so I came up with these two scripts:
runcron.php:
#!/usr/local/bin/php

&amp;lt;?php$SITES&amp;nbsp;=&amp;nbsp;array(&amp;nbsp;'www.mainsite.com',&amp;nbsp;'www.subsite1.com',&amp;nbsp;'www.subsite2.com',&amp;nbsp;...&amp;nbsp;);$_SERVER['SCRIPT_NAME']&amp;nbsp;=&amp;nbsp;'/cron.php';$_SERVER['SCRIPT_FILENAME']&amp;nbsp;=&amp;nbsp;'/cron.php';foreach(&amp;nbsp;$SITES&amp;nbsp;as&amp;nbsp;$site&amp;nbsp;)&amp;nbsp;{&amp;nbsp;&amp;nbsp;exec(&amp;nbsp;"./runsitecron.php&amp;nbsp;".$site&amp;nbsp;);}?&amp;gt;


runsitecron.php:
#!/usr/local/bin/php

&amp;lt;?php$_SERVER['SCRIPT_NAME']&amp;nbsp;=&amp;nbsp;'/cron.php';$_SERVER['SCRIPT_FILENAME']&amp;nbsp;=&amp;nbsp;'/cron.php';$_SERVER['HTTP_HOST']&amp;nbsp;=&amp;nbsp;$_SERVER["argv"][1];include&amp;nbsp;"cron.php";?&amp;gt;


Then I just call 'runcron.php' from my crontab and it runs Drupal's 'cron.php' for each of my sites.
Multisite cron
Sites that make use of Drupal's multisite feature need to take extra steps to ensure that each site gets it cron run, rather than just the default site. The following pages have ways that people have addressed this issue. Feel free to add your own solution as a child page.
Automatic multisite cron using php5
Create a new file preferebly in the same directory as your drupal dir. Name it 'cronall.php' or something. Copy the following script into it. Then adjust the settings in the file, and visit the script with your webbrowser, to see if it is setup correctly.
Then create a cronjob for the cronall.php script, and you're done.

&amp;lt;?php/***&amp;nbsp;This&amp;nbsp;script&amp;nbsp;scans&amp;nbsp;the&amp;nbsp;sites&amp;nbsp;directory,&amp;nbsp;and&amp;nbsp;uses&amp;nbsp;a&amp;nbsp;regular&amp;nbsp;expression&amp;nbsp;to&amp;nbsp;extract&amp;nbsp;the&amp;nbsp;sitenames.*&amp;nbsp;It&amp;nbsp;then&amp;nbsp;uses&amp;nbsp;this&amp;nbsp;sitename&amp;nbsp;to&amp;nbsp;execute&amp;nbsp;the&amp;nbsp;cronjob&amp;nbsp;for&amp;nbsp;these&amp;nbsp;sites.*&amp;nbsp;You&amp;nbsp;then&amp;nbsp;only&amp;nbsp;have&amp;nbsp;to&amp;nbsp;create&amp;nbsp;a&amp;nbsp;cronjob&amp;nbsp;for&amp;nbsp;this&amp;nbsp;script.*&amp;nbsp;In&amp;nbsp;this&amp;nbsp;way,&amp;nbsp;you&amp;nbsp;can&amp;nbsp;create&amp;nbsp;and&amp;nbsp;delete&amp;nbsp;sites&amp;nbsp;on&amp;nbsp;the&amp;nbsp;fly,&amp;nbsp;but&amp;nbsp;all&amp;nbsp;their&amp;nbsp;cronjobs&amp;nbsp;will&amp;nbsp;be&amp;nbsp;executed.*//************&amp;nbsp;SETTINGS**********///the&amp;nbsp;location&amp;nbsp;of&amp;nbsp;the&amp;nbsp;'sites'&amp;nbsp;directory&amp;nbsp;relative&amp;nbsp;to&amp;nbsp;this&amp;nbsp;script.$sitesDir&amp;nbsp;=&amp;nbsp;'../drupal/sites';/***&amp;nbsp;A&amp;nbsp;regular&amp;nbsp;expression&amp;nbsp;that&amp;nbsp;matches&amp;nbsp;the&amp;nbsp;name&amp;nbsp;of&amp;nbsp;the&amp;nbsp;directories&amp;nbsp;in*&amp;nbsp;the&amp;nbsp;'sites'&amp;nbsp;dir&amp;nbsp;that&amp;nbsp;you&amp;nbsp;want&amp;nbsp;to&amp;nbsp;execute&amp;nbsp;cronjobs&amp;nbsp;for,&amp;nbsp;with&amp;nbsp;a*&amp;nbsp;backreference&amp;nbsp;around&amp;nbsp;the&amp;nbsp;actual&amp;nbsp;site&amp;nbsp;name.&amp;nbsp;(so&amp;nbsp;we&amp;nbsp;can&amp;nbsp;exclude&amp;nbsp;the*&amp;nbsp;domain&amp;nbsp;part)**&amp;nbsp;If&amp;nbsp;you&amp;nbsp;don't&amp;nbsp;know&amp;nbsp;regular&amp;nbsp;expressions&amp;nbsp;you&amp;nbsp;might&amp;nbsp;want&amp;nbsp;to&amp;nbsp;brush&amp;nbsp;up*&amp;nbsp;on&amp;nbsp;them:&amp;nbsp;&amp;lt;a&amp;nbsp;href="http://www.regular-expressions.info/tutorial.html"&amp;nbsp;title="http://www.regular-expressions.info/tutorial.html"&amp;nbsp;rel="nofollow"&amp;gt;http://www.regular-expressions.info/tutorial.html&amp;lt;/a&amp;gt;&amp;nbsp;**&amp;nbsp;Alternatively,&amp;nbsp;you&amp;nbsp;can&amp;nbsp;just&amp;nbsp;copy&amp;nbsp;the&amp;nbsp;name&amp;nbsp;of&amp;nbsp;one&amp;nbsp;of&amp;nbsp;the&amp;nbsp;directories*&amp;nbsp;in&amp;nbsp;the&amp;nbsp;site&amp;nbsp;dir,&amp;nbsp;put&amp;nbsp;a&amp;nbsp;backslash&amp;nbsp;\&amp;nbsp;in&amp;nbsp;front&amp;nbsp;of&amp;nbsp;all&amp;nbsp;dots&amp;nbsp;.&amp;nbsp;and&amp;nbsp;replace*&amp;nbsp;the&amp;nbsp;actual&amp;nbsp;name&amp;nbsp;of&amp;nbsp;the&amp;nbsp;site&amp;nbsp;with&amp;nbsp;([a-zA-Z0-9_-])*/$siteNameRegExp&amp;nbsp;=&amp;nbsp;'www\.example\.com\.([a-zA-Z0-9_-])';//the&amp;nbsp;url&amp;nbsp;of&amp;nbsp;the&amp;nbsp;cron&amp;nbsp;script,&amp;nbsp;you&amp;nbsp;should&amp;nbsp;insert&amp;nbsp;%s&amp;nbsp;where&amp;nbsp;the&amp;nbsp;sitename&amp;nbsp;should&amp;nbsp;be&amp;nbsp;inserted&amp;nbsp;later.$cronUrl&amp;nbsp;=&amp;nbsp;'http://www.example.com/%s/cron.php';//any