Drupal模块大全

ProjectDownloadsDescription
Affiliate

站长可以把会员的链接提交给他们伙伴。当匿名的用户通过这些链接注册了一个账户,那么这个账户便于那个会员相关联。每天都会有电子邮件发送给会员和网站管理员。这些电子邮件列出了每个成员网站的新注册用户。

本模块由Share New York赞助,Share New York是一个创新的网络音乐共享网站。 http://sharenewyork.com

API

对Doxygen文件生成器的,一个应用,专门为Drupal网站设计。

Article

这个文章模块允许在一个集中的管理和显示文章。实际上,它是一个有着特殊功能的类别展示模块。这使它能够适应文章的需要。

Atom

提供Atom feed,使Atom API的一个应用。

Attached Node

The attached_node module allows users to include a reference to a node within the body of another node. Textually, this appears in the body text as a type of tag. This tag is translated by a filter into a teaser version of the node being referenced. Additionally, it allows users to customize position and attributes of this referenced node.

A simple example of a tag would be [node:123] where 123 is the node id of the node to be included.

Attachment

Allows the attachment of arbitrary files to nodes.

Features
--------
* Allow attachment of multiple files to a single node
* Allow configuration of which node types allow attachments
* Allow adding and removing attachments during node creation
* Allow adding and removing attachments inline during node administration
* Allow download of attachements
* Permission control on creating attachments

Automember

This module provides automated role management for one of the administrator-defined roles.

Applications of this module include:
1) automatically granting frequent and reliable contributers a special role, and
2) automatically granting new users a special role.
----
Certain kind folk in the Drupal community found this module so useful that they contributed financially. Their contributions are deeply appreciated.

Banner

The banner.module allows you to display ads on your Drupal website. It randomly displays the banners, and automatically tracks how many times each is displayed and clicked. Users of your website can be given ownership of banners, and be allowed to modify certain settings and view statistics.

Supports numerous graphic formats, flash animations, and text.

Bbcode

The Drupal bbcode.module adds a BBCode filter to Drupal. This allows you to use HTML-like tags as an alternative to HTML itself for adding markup to your posts. BBCode is easier to use than HTML and helps to prevent malicious users from disrupting your site's formatting.

See the help screen of the module (or the code) for information on which tags and variants are supported. This implementation is not necessarily the same as the original BBCode implementaion.

Note that this filter also recognizes and converts URLs and email addresses to links automatically.

The 4.5 version also comes with an email spam protection method built in.

Bookmarks

Gives users with the 'access bookmark' permission their own private bookmark block, allowing them to add any URL to the list. There is also a quicklink feature that makes it a breeze to add the currently viewed page to your site.

Buddylist

This module allows users to put each other on a personal 'Buddy List' ,
also enabling them to keep up with their friend's postings via the 'My Friend's Blogs' block.

captcha

Adds "captchas" to the user registration process. [What is a captcha?]

Chatbox

This is a simple chatbox module. It allows your site's visitors to chat in an HTML interface.

Codefilter

This is a simple filter module. It handles <code></code> and <?php ?> tags so that users can post code without having to worry about escaping with &lt; and &gt;

Collimator

Collimator is another module for displaying a list of nodes. By default, it displays a sorted list of nodes using columns. At the top of the column is the original node--the story, the picture, the beginning of the forum topic, or whatever. Dangling below the original node are the latest responses in chronological order. The original node and its responses form the bulk of the column.

For example, collimator could be used to view the latest posts to a site. Nodes are then sorted by their last modification time in descending order. The list is truncated to five nodes or so, and these columns are displayed as described above. In effect, new posts or modified posts appear in the left-most column while older posts "fall off the edge" on the right-hand side.

For an example, see http://njivy.org/.

Contextlinks

The contextlinks module allows you to easily create links to
context-related material using a simple markup syntax. The links
are indicated by either linking the text itself or by inserting a
specific string or icon that links to the related information.

Site administrators can define different "classes" of context
links. Each class can have a specific icon or string that is used
for all instances of that class. Additionally, administrators
define a default class which will be used if no class is specified.

CSV-filter

Allow to insert comma-separated (CSV) tables into postings.

Custom Ranks by Post Count

This is a module that allows you to assign custom ranks based on postcount. Specifically, it allows you to assign minimum post counts to items in a custom selection profile field. It requires the "PROFILE_HIDDEN" patch for profile.module that's here

Daily

The daily module is meant for things like comic strips or daily headlines. It offers a new node type daily that has a date associated with it. You can browse through earlier content using the built-in calendar. A second node type daily container displays for example the first or last currently available daily node. Nodes with a date in the future can automatically become available on that date.

Database Administration

The dba module provides Drupal administrators with direct access to their Drupal database tables from within the standard Drupal user interface. It is possible to execute scripts to create and alter tables, to backup one or more tables, to view/edit/delete data within tables, and to emtpy or drop tables. If using MySQL, it is also possible to check and repair tables.

Screenshots available.

dKosopedia Filter Module

Simple filter module (based on urlfilter) which creates easy links to the dKosopedia, an open wiki of for progressive US politics.

E-Commerce

A collection of modules used to sell goods and/or services. Some features include:

  • Sell file downloads, shippable items, and even collections of various products as a single item
  • Inventory management enabled on a per-product basis
  • Payment and shipping components are 'pluggable'
  • Invoice generation and shipping notifications for tangible products
  • Shopping cart and product 'look and feel' are themeable
  • Transaction reports and sales summaries
  • Transaction and payment workflow
  • Customers can review their order history.
  • Dynamically adjust item prices for a given group of users

Documentation and screenshots coming soon.

Event

This is a simple module to keep track of events and show them to users.

Feature

A module that lets you organize and maintain a feature list. You can see it in action at http://drupal.org/features.

Feedback

The simple feedback module allows visitors to your Drupal web site to contact the site administrator via e-mail using a web based form.

Features:

  • Configurable required fields on the web form (Sender Email Address, Sender Name, Postal Address, Phone Number, Message Subject,Message Body)
  • If the visitor is a registered user of the site, then the sender's email address field and sender's name default to the values entered upon registration
  • Configurable subject prefix for messages sent by visitors
  • Configurable navigation menu text for link to this module
  • Configurable instructions/guidelines text above the form (for example, you can use this to link to your FAQ page, site map, or ask users to do a search before contacting you)
  • Contact mail address can be different from the general email address of the site administrator
  • Optional setting for validation of the email address, by contacting SMTP server
  • Optional setting for logging of all attempts to contact you to the Drupal log
  • Logs the IP address of the sender and the browser they are using (helps detect bots, and abuse)
  • Works with clean URLs as well as regular URLs (post 4.5.0 CVS version)

This module does not require any new database tables to be installed.

Filemanager

The filemanager modules adds additional functionality to the file api. The filemanager will take care of all aspects of file management allowing your module to focus on UI and interaction.

Filestore2

a completely rewritten version of filestore which stores the files on the filesystem instead of in the database.

Flexinode

Flexinode is a module that allows non-programmers to create new node types (flexible content types) in Drupal when their needs are modest. Users can define the fields in the node edit form for their content type, and can either view the nodes as presented by the module or modify the presentation in their theme.

FOAF

FOAF module enables the following:
1. automatically import/synchronize profile information between any Drupal-powered sites
2. import profile information from external FOAF files
3. export a FOAF file based on a user's profile

For profile synchronization, when you login to site A using your account information from site B, your site A profile automatically gets filled with values from site B - presuming that both A and B have foaf.module
and drupal.module enabled

Foaf.module will also export your buddylist if buddylist.module is enabled.

The fields selected for this module are intended to conform to the FOAFNet specification.

SPONSORS
This module was developed by James Walker of Bryght.com, with support from the following:
* CivicSpaceLabs
* Marc Canter (FOAFnet)

Forms

Forms module provides an api for adding user-customizable form elements within modules.

SPONSORS:
CivicSpace

form_mail

This module makes it easy to create forms in Drupal which send their contents via email to one or more recipients. These can be 'contact us' forms, or any other type.

This module doesn't build the form for you. Instead it just handles the echoing of the form's contents to an email. The list of recipients is specified in a hidden form field.

FSCache

a file system cache which allows storing of files on the filesystem of your web site. This module is used by filestore2 to ease the maintenace of files uploaded to the website.

Glossary

Glossary helps newbies understand the jargon which always crops up when specialists talk about a topic. Doctors discuss CBC and EKG and CCs. Web developers keep talking about CSS, P2P, XSLT, etc. This is all intimidating for newbies.

The glossary module scans posts for glossary terms (including synonyms). The glossary indicator is inserted after every found term, or the term itself is turned into an indicator* depending on the site settings. By hovering over the indicator, users may learn the definition of that term. Clicking the indicator leads the user to that term presented within the whole glossary or directly to the detailed description of the term, if available.

The glossary uses Drupal's built in taxonomy feature, so you can organize your terms in a Drupal vocabulary. This allows you to create hierarchical structures, synonyms and relations. Glossary terms are represented with the taxonomy terms in the glossary vocabulary. Descriptions are used to provide a short explanation of the terms. You can attach nodes* to the terms to provide detailed explanation on the keywords.

This module also works with nicelinks.module, which will give you pretty hover-over glossary term descriptions on reasonably modern browsers (while degrading properly on older ones).

Note: features marked with * are only available in the current CVS version or Glossary 4.4.0 and newer versions.

Htmlarea

Allows Drupal to use the HTMLArea WYSIWYG formatter to replace text area fields.

If you are having any issues with strange things happening in htmlarea, please test it at the drupal htmlarea demo page

Htmlcorrector

This is an HTML correcting module. The filter completely scans the input,
builds up a list of open tags and closes them when needed.

Htmltidy

This module tidies up Drupal's HTML output.
It currently supports, configured via the normal interface, indenting, word wrapping, and optional info/warning/error information appended to pages including wrong HTML attributes and w3c validation info.

Image

This module allow users with proper permissions to upload images into drupal. Thumbnails are created automaticaly.

Images could be posted individualy to the front page, included in stories or grouped in galleries. Galleries are either personal, i.e linked to a user, or global to the drupal site.

Admin could administer images and set various parameters such as, among others, maximum image size, permissions to access images or manipulate them.

This module requires ImageMagick, GD or ImLib2.

Image filter

This module provides a filter for referencing image nodes from other nodes. It will not
work unless image.module is installed and configured properly.

Img_assist

Greatly simplifies the process of adding inline images to content. It works with image.module or upload.module, and does not upload images by itself.

More details can be found at:
http://asitis.org/node/view/131

Inline

This module permits to define a new [inline:N] tag, that permits to include into node body a link to the Nth file uploaded for that node through standard upload.module.
The effect is a link to the file or the display of an image, depending on its type.

Jsdomenu

This utility module generates multi-level popup menus using the open source, standards-based Jsdomenu library. Included is a "site menu" block with multi-layer popups to navigate the full hierarchy of a vocabulary.

Listhandler

Listhandler is a module that aims at inserting mailing list discussions in Drupal fora and vice versa.

Mail

A basic module for sending email to registered users. Email messages are saved to the database as a node for future reference. Email senders can select which roles to send to.

Mailalias

With this module, a user may associate additional email addresses with his account.
These addresses are used by mailhandler.module to authenticate incoming emails.

Mailhandler

The Mailhandler module allows registered users to create or edit nodes and comments via email. Authentication
is usually based on the From: email address. Users may post taxonomy terms, teasers, and
other node parameters using the Commands capability.

Markdown with SmartyPants

The Markdown with SmartyPants module allows you to enter content using Markdown, a simple, plain text syntax that is filtered into valid XHTML, and will automatically convert plain ASCII characters to their proper Unicode entities in context ("curly quotes," et al.) using SmartyPants.

Members

Members provides an alternate listing style to profile.module, with a focus on tabular display and an emphasis on roles (including listing by role).

mypage

Provides users with the ability to select among all your site's taxonomy terms, and then get a customized "mypage" with nodes from those selected terms only. Also allows for personalized RSS feeds.

News Page

Allows creation of pages which show syndicated 'news' items from an aggregator category.

News items are automatically filtered by keywords (chosen when creating the page), so that only news items which contain a keyword are shown.

News pages can be placed in a book, and added to a taxonomy.

Node Moderation

DESCRIPTION
This module enables users to vote on nodes. Like comment moderation, the available votes and the value of each vote is configured by the admin.

Each node maintains a score, based on the sum of all votes. As each vote is processed, the score is recalculated and if necessary, the post is either promoted to home page or unpublished. The thresholds for these actions are defined by the admin.

SPONSORS
Brady Jarvis and Alaric Hahn of http://Code0range.net

node privacy byrole

This module, when enabled, allows each user of a site to decide which roles can view or view/edit a node.

Node Type-Categories

A module that lets you easily group nodes of the same type (book, story, event, etc.) that belong to the same category (taxonomy).

node_import

This module enables importing of nodes of any type into Drupal. It accepts as input a comma separated values (CSV) file.

Your CSV file must contain field names in its first row. The following fields are required:

  • title
  • uid or name [both are ignored if current user does not have 'administer nodes' permission. if user does have this permission, name is used if available, otherwise uid, otherwise 'anonymous user' is assumed]
  • type

Your CSV file should use quotes around strings that contain a comma. Parsing is handled by the fgetcsv() function. See http://www.php.net/fgetcsv for details.

Field names should match columns in your database. Field values should match those usually entered into your DB.

This module adds a 'node import' link to your Navigation menu which is viewable by users who have the 'node import' permission.

Notify

This is a simple notification module. It provides e-mail notifications to
members about updates and changes to the Drupal web site.

Organic groups

Enable users to create and manage their own 'groups'. Each group can have subscribers, and maintains a
a group home page where subscribers communicate amongst themselves. They do so by posting the usual node types: blog, story, page, etc. A block is shown on the group home page which facilitates these posts. The block also provides summary information about the group.

Groups may be selective or not. Selective groups require approval in order to become a member.

Developers - this module exercises the node access API thoroughly. You may want to study it for guidance.

Over text

The over_text module enables the use of popup tooltip-like boxes using an included javascript function or the wz_tooltip library. Install over_text to get popups for events on the event calendar block.

paypal framework

Paypal IPN framework logging. This modules purpose is to remove alot of the bloat from "paypal aware" modules I have seen contributed to CVS lately. This module handles filtering and high performance logging to a relational database so that other module developers can use this "in place" database to handle events, track payments, calculate totals, ship packages, and whatever else the module developer can think of to do with the data. The module comes with filters, 'Verification Queueing', and a few other neat features. If planning to write a module that will use PayPal's Instant payment notifications, then you might want to investigate this module before re-inventing the wheel.

PayPal tip jar

This module provides a tip jar block to request donations and to describe the amount of recent contributions. If PHP was compiled with PNG support in the GD library, a simple bar graph can be automatically generated as well.

NOTE: paypal_framework.module is required in order to receive IPN information from PayPal.

Poormanscron

A module which runs the Drupal cron operations without needing the cron application.

For every page view, this module checks to see if the last cron run was more than 1
hour ago (this period is configurable). If so, the cron hooks are executed,
and Drupal is happy. These cron hooks fire after all HTML is returned to the browser,
so the user who kicks off the cron jobs should not notice any delay.

Print Friendly Pages

Generate printer friendly pages for all node types. Features include the ability to explicitly list all URL references made on the page, custom stylesheet and HTML template and complete control of the node elements that are visible when the page is rendered.

Privatemsg

This module allows your site's visitors to send private messages to each other.

Quickpost

Quickpost is a simpler way of entering content into Drupal. Quickpost allows for context-sensitive posting of nodes, a tab based way of selecting node type, and it allows administrators to control which hooks the users can see by default by giving adminstrators control over the "Advanced" and "Hidden" tabs. Administrators can move the various forms generated by modules (i.e. subscriptions form, scheduling form, etc.) to the Advanced or Hidden tabs. The user can then type in thier information, optionally click "Advanced" to see advanced options, and submit the node to the current category.

Quote

This module adds a 'quote' link below nodes and comments. When clicked, the contents of the node or comment are placed into a new comment enclosed with special markup that indicates it is quoted material.

This module also features a filter which translates the special markup into html code.

When output by Drupal, the quote will be displayed with special formatting to indicate the material has been quoted.

Quotes

The quotes module allows you to maintain a list of quotations that you find notable, humorous, famous, infamous, or otherwise worthy of sharing with website visitors. These quotes are selected randomly and displayed in a block on your Drupal site.

Recipe

A module for sharing cooking recipes.

Role to file

This module uses cron to build a flat text file based on the users in a given role. The original intent was to build a DNS file with one line per user in the role. However, additional features of low complexity have been added.

Features:
1) Optionally define a multi-line body of text for the file header.
2) Optionally define a multi-line body of text that is applied for each user in the group.
3) Optionally define a multi-line body of text for the file footer.
4) Use variables in each body of text, including: site name, number of users in the role, role name, role ID, current timestamp, user name (only in #2 above), and user ID (only in #2 above).
5) Optionally replace spaces in the site name, role name, and user name with a specified string.
6) Optionally convert the site name, role name, and user name to lowercase.
7) Specify the minimum hours between cron updates.

Scheduler

This module adds scheduled publish/unpublish capability to Drupal. Specifically, two dropdowns are added to node forms for automatically publishing or unpublishing a node at some future date. The actual publish/unpublish operation is handled by Drupal's cron hook.

Simpletest

A framework for running unit tests in Drupal.

Site map

This module provides a site map that displays a list of all the categories, optionally displays the full 'Navigation' menu, and optionally displays node counts by categories. RSS links can optionally be displayed next to each category. The site administrator may define a message to appear above the site map. The site map is themable.

Smileys

A filter that substitutes ASCII smileys with images.

Spam

The spam module is a powerful collection of tools designed to help website administrators to automatically deal with spam. Spam is any content that is posted to a website that is unrelated to the subject at hand, usually in the form of advertising and links back to the spammer's own website. This module can automatically detect spam, instantly unpublish it, and send notification to the site administrator.

The spam module provides four main mechanisms for automatically detecting spam: a trainable Bayesian filter, manually entered custom filters, counting the number of URLs, and detection of content posted from open email relays.

(Note: The latest release of this module is for 4.5, not 4.4 as erroneously listed below.)

Subscriptions

This module enables users to subscribe to be notified of changes to nodes or taxonomies, such as new comments in specific forums, or additions to some category of blog. Once enabled, all nodes will have an additional link that allows the user to change their subscriptions.

Summary

The summary module provides several options for content display on a home page in addition to the standard list of recent posts. Summary implements functionality of, and therefore works best with, two other modules: node_image (for displaying images associated with particular nodes and taxonomy terms) and taxonomy_context (for displaying info on taxonomies as site sections).

Survey

Allows users to create surveys to be completed by site visitors. Survey submissions are stored in the database and can be downloaded to excel.

This module requires forms.module.

SPONSORS:
CivicSpace

SXIP

The SXIP module implements an authentication hook for the Sxip
Networks
identity network. This will allow a Drupal site to share
users with any other site that also implements SXIP logins.

The SXIP module ties into Drupal's existing authentication
structure. It has the following capabilities:

* any user with a SXIP account can use a "sxip in" button to
authenticate with the Drupal site
* if the user has an existing account on the Drupal site (determined
by matching email addresses with the SXIP persona), the existing
account is re-used

You can get an overview of how the SXIP network works from the SXIP site.

REQUIREMENTS

In addition to this module, you will need to download the PHP
Membersite Development Kit
.

SPONSORS
This module was developed by James Walker of Bryght.com, with
support from the following:

* SXIP

Syndication

Syndication.module offers a web page which centralizes all of the RSS feeds
generated by Drupal. This helps users find interesting feeds from your web site.

Taxonomy Access Control

Allows the user administrator to control access to categories based on user role.

Taxonomy Browser

Think of this as a 'build your own category view' page.

A single page with checkboxes for each term (organized nicely by vocabulary). User checks off the terms which he wants to see, and then this module contructs the right URL (e.g. taxonomy/view/and/3,4,5) and then displays matching nodes ot the user.

Taxonomy context

For organizational websites one often wants to display information like a title and summary of the current section. The taxonomy_context module enables you to do this through taxonomy terms, displaying the title and description of the current term, a "breadcrumb" trail of the current taxonomy term and any parent terms, and titles and descriptions of any sub-terms of the current term (similar in format to the listing of nodes in a term). The module also includes a context-sensitive menu block for each vocabulary.

Taxonomy dhtml

A page listing recent nodes on your site, organized by taxonomy term. Also provides a block
for each vocabulary, listing terms and their node counts. Finally, a box is
exported to the syndication.module main page.

Taxonomy html

This module adds several HTML representations of site's taxonomy. This is useful for enabling users to browse your
site according to topics of their own interest ... Specifically, this module
adds a Block for each vocabulary and an Overview page listing all terms and vocabularies.
Node counts for each term are also shown beside each term link or in a help tip (aka title attribute).

Taxonomy image

The taxonomy_image module allows site administrators to associate images with taxonomy terms. With the association created, an admin can then make a call to 'taxonomy_image_display()' from their theme or other PHP code to display the appropriate image.

The module allows the admin to create a one-to-one term-to-image relationship. With image display recursion, it is also possible to create a many-to-one relationship. This is useful if creating taxonomy hierarchies in which an entire tree of terms will use the same image. With recursion enabled, you only need to associate an image with the tree parent, and all children will automatically inherit the same image.

Taxonomy Menu

This module adds links to taxonomy terms to the global navigation menu. The new integrated administration menu in Drupal 4.3 allows modules to add their own links to the global heirarchical menu, and this module takes advantage of this in order to display a taxonomy navigation menu in a style consistent with the rest of the Drupal site navigation.

Term statistics

Based on the core statistics module, which tracks general page views and node views, term_statistics keeps track of views of categories (terms) and includes a page and block for top-viewed categories.

Textile

The Textile module allows you to enter content using Textile, a simple, plain text syntax that is filtered into valid XHTML. The module can filter version one and version two (currently in beta) syntax. Additionally, Textile filtering can be enabled and disabled on a per-node basis. The Textile page found at <http://your_drupal_site/textile> provides syntax descriptions and examples.

More information about Textile can be found at the Textile home page.

Themedev

Provides several diagnostic CSS stylesheets which can be used to reveal the structure of a site. Particularly useful for anyone developing a theme or customizing an existing theme to suit a different site. Viewing of the themedev CSS can be restricted to specific user roles.

Title

The Title module is an input filter that creates links to nodes depending on their title. E.g. [foobar] will be replaced by a link to all pages that have "foobar" in their title.

TrackBack

Adds TrackBack support to Drupal. Sending and retrieval of TrackBacks are supported either using POST or GET.

Translation

This module allow to maintain translation of node content to different languages and switch between them. Will useful for sites, where need support translations of certain documents; for cases when all content must be multilanguage and synchronized between languages better will be use the 'internationalization' module.

Trip Search

trip_search is a simple search module what does not use Drupal search indexing, but simply matches the search keywords using SQL LIKE command.

This approach has been tested and is not significantly slower than search.module. futher, it requires no expensive cron-based search indexing what might choke older systems.

Current features:

  • searches from taxonomy terms (descriptions, synonyms,
    related), users, nodes and comments
  • display results sorted by the results type
  • allows search terms in url: ?q=trip_search/my_keywords_here
  • logs all search actions to a watchdog
  • provides a search block
Urlfilter

This is a simple filter module. It automatically converts URLs (http, ftp,
email, ...) into hyperlinks.

userposts

userposts is a very simple and small module that puts a list of nodes that were posted by a user on that user his/her page.

Validation

Creates a block in the sidebar displaying validation tool buttons.

Variable

A small module which accepts an HTTP POST and saves the POST variables to the variables table.

Weather

This module parses weatherroom.com's xml'd TAF data and displays both current weather and a 5 day extended forecast. Requires a ICAO (International Civil Aviation Organization) 4-letter airport indentifier code, or a 5 digit US zip code.

webform

This module adds a webform nodetype to your Drupal site.
A webform can be a questionnaires, contact or request form. These can be used by visitor to make contact or to enable a more complex survey that the type polls enable. Submissions from a webform are saved in a database table and can optionaly also be mailed to an e-mail address upon submission.

Weblink

This module enables you to maintain a Yahoo like listing with
links categorized with Drupal's taxonomy system. Link clicks
are tracked, and website monitoring is also possible.

There is a weblink filter that allows you to include urls
in your posts using the following syntax [weblink:node_id]
or [weblink:url]

This module also integrates well with bookmarks.module
providing direct bokmarking capabilities via the a node link (just in CVS).

Webserver Auth

Admins can now enable access control their drupal directory via their webserver (e.g. http auth, NTLM, .htaccess) and with this module, Drupal honor's the web server's authentication. That means that your users don't maintain separate passwords for Drupal, and that terminated users automatically become inaccessible in Drupal. If you are running an LDAP server, or Microsoft Active Directory, use UNIX authentication, this is likely a good module for you.

Workspace

This is a module designed for users to have a central place to view and manage their content. It's a user-centric view of a Drupal site.