Notable Drupal Modules
From TechWiki
Here are notes on various modules for Drupal (v 6).
General
- With many modules installed and some turned on, can often get a message similar to the following:
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 320212 bytes) in /usr/share/drupal/ includes/database.inc on line 224
- A good comparison between the different CCK and Taxonomy Modules is available from http://drupal.org/node/212834
In Use
These are modules typical used and active in an OSF installation.
Advanced Help
- The advanced help module allows module developers to store their help outside the module system, in pure .html files. The files can be easily translated simply by copying them into the right translations directory. The entire system can appear in a popup or not as the module prefers (and by taking away access to view the popups, a site can force the popups to not exist).
- The system ties into Drupal's search system and is fully indexed, so the entire contents can be searched for keywords. the help files can be placed in a hierarchy as well, allowing for top down navigation of the help.
- See http://drupal.org/project/advanced_help
CCK
- Content Construction Kit (CCK) is a very complicated module
- Many other modules depend on it
- When installed, appears Create Content
- Nice video at: http://mustardseedmedia.com/podcast/episode7
- See http://drupal.org/project/cck
conStruct
- The series of OSF-related modules, critical to exposing capabilities within Drupal; see the current listing as shown below
- See conStruct
Content Access
- Content Access allows you to manage permissions for content types by role and author. It allows you to specifiy custom view, edit and delete permissions for each content type. Optionally you can enable per content access settings, so you can customize the access for each content node.devel is a suite of modules for both module and theme developers
- See http://drupal.org/project/content_access
devel
- devel is a suite of modules for both module and theme developers:
- Devel, which has helper functions for Drupal developers
- Theme developer, which is a Firebug for Drupal themeing
- Generate content, to quickly generate nodes, comments, terms, users, and more
- Node Access Summary
- Performance Logging
- See http://drupal.org/project/devel
Organic Groups
- Organic groups enables users to create and manage their own 'groups'. Each group can have subscribers, and maintains 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
- Has many module dependencies
- See http://drupal.org/project/og
- Helpful code snippets and recipes: http://drupal.org/node/293494
Pathauto
- The Pathauto module automatically generates path aliases for various kinds of content (nodes, categories, users) without requiring the user to manually specify the path alias. This allows you to get aliases like /category/my-node-title.html instead of /node/123. The aliases are based upon a "pattern" system which the administrator can control
- Requires the Tokens module
- Also see http://drupal.org/node/247205 for a video on creating views using substrings from Pathauto
- See http://drupal.org/project/pathauto
Token
- Tokens are small bits of text that can be placed into larger documents via simple placeholders, like %site-name or [user]. The Token module provides a central API for modules to use these tokens, and expose their own token values. Note that Token module doesn't provide any visible functions to the user on its own, it just provides token handling services for other modules, and is used by many
- See http://drupal.org/project/token
Views
- Views are customized lists of content on your system; they are highly configurable and give you control over how lists of content are presented
- Quite complicated module, with many interdependencies
- A good starting video tutorial is http://www.learnbythedrop.com/drop/22
- Another good video is http://mustardseedmedia.com/podcast/episode9
- Another useful video tutorial on the combination of CCK + Views is found at: http://learn.awakenedvoice.com/2007/07/30/drupal-cck-and-views-tutorial/. It does not really handle content types (like emails, dates, etc.) for CCK; rather, it addresses the basic display options in the combination.
- Found under: Home » Administer » Site Building
- See http://drupal.org/project/views
- An alternative approach is to work around the idea of Views based on the Views module.
- See Active Template, including:
- Here is an absolutely cool display: http://carli.collectivecolors.com/
- SimpleViews might be an interesting way to drive template creation as a first step from a series of dropdown lists; these could then be refined in the Views UI
- See this demonstration: http://blip.tv/file/1297933/
- Editview is a plugin for the Views module. It allows you to create a view in which the nodes are editable, and new nodes can be created. Editview uses AJAX to speed things up, but will still work on browsers with javascript disabled
- Views Datasource is also a useful module to look at since it provides output capabilities in XML, JSON, RDF for a current view
- A CCK and Views video intro is at: http://learn.awakenedvoice.com/2007/07/30/drupal-cck-and-views-tutorial/
- Another great screencast for Views 2 (only) is: http://www.masteringdrupal.com/screencast/new-features-in-views2/play
- A detailed tutorial that also relates to Panels: http://drupaleasy.com/blogs/ryanprice/2008/06/using-views-2-drupal-6-create-a-related-pages-block; and another one: http://linuxbasement.com/content/drupal-6-dynamic-content-cck-views-and-panels
WYSIWYG (API)
- Wysiwyg API allows users to use client-side editors to edit contents. The editors must be separately and individually installed. The editors presently available are: TinyMCE 2.x, TinyMCE 3.x, jWYSIWYG 0.5, nicEdit 0.9.0, FCKeditor 2.6.x, Whizzywig 55+
- Found off of the Create Content link
- Configured under: Home » Administer » Site configuration
- See http://drupal.org/project/wysiwyg
Tested, Sometimes Used
ApacheSolr
- This module integrates Drupal with the Apache Solr search platform. Solr search can be used as a replacement for core content search and boasts both extra features and better performance. Among the extra features is the ability to have faceted search on facets ranging from content author to taxonomy to arbitrary CCK fields
- Here is a listing of facet options: http://wiki.apache.org/solr/SimpleFacetParameters
- A good video from Douglass: http://robshouse.net/blog-post/fosdem-2008-drupal-apachesolr-module-0
- See http://drupal.org/project/apachesolr
DHTML Menu
- DHTML Menu uses Javascript to reduce the number of page loads when using nested menus; this is particularly useful with Drupal's administration system. Clicking a menu link once will expand it to reveal its sub-items without reloading the page. A double-click on the item will load the page normally. Additionally, a cookie stores which menus are open and which are closed, so that the state of the menus remain consistent as you navigate around the site
- Found under: Home » Administer » Site configuration
- See http://drupal.org/project/dhtml_menu
Exhibit
- Exhibit displays structured data in the form of rich visualizations that can be searched, filtered and sorted using faceted browsing
- Don't really care for the slowness, client-side, lack of data-driven nature of this module; in the process of being replaced
- See http://drupal.org/project/exhibit
Node Convert
- Node Convert adds a menu tab "Convert" on the node view page, i.e. node/1/convert, which gives the ability of converting the node from it's current node type, to another node type. Also it gives the ability of transfering all the custom cck field values of the current node type, to the destination cck fields, or discard them
- Found under: Home » Administer » Site configuration
- See http://drupal.org/project/node_convert
Panels
- This module allows you to create pages that are divided into areas of the page via a completely flexible system that includes a couple of 2 column and 3 column layouts by default, but is also highly extensible and other layouts can be plugged in with a little HTML and CSS knowledge
- The interface lets you add blocks, nodes and custom content just by selecting and clicking
- There are three kinds of panels available:
- Panels-pages, is the the primary panels module, you can use this for creating single full page layouts. This replaces the standard panel that existed in the earlier versions of panels. If you are upgrading your site from Panels 1, and you cannot find where your panels went, be sure to enable the panel pages module!
- Panels-nodes, is useful for creating layouts that only occupy the content area of your pages. Frequently, it is desirable to add an area to a node layout, such as a pull quote for a newspaper or a photo block, that you don't necessarily want on every node. Panels Nodes lets you control the layout of a single node at a time and place content such as blog posts, images, blogs in and around the post.
- Mini-panels, is a layout mechanism for blocks. It won't take long using panels before you get to a point when you want a panel inside of a panel. Or a panel that can be used as a block. That is exactly what mini-panels does. You can create a small panel here with various pieces of content and then put it inside of a panels-page or panels-node
- Node-panes is NOT being used, as it is an older method and now deprecated
- This appears to be a good Panels starting point: http://drupal.org/node/206185
- Here is a tutorial on mini-panels: http://drupal.org/node/213733
- Found under: Home » Administer
- See http://drupal.org/project/panels
Site Map
- This module provides a site map that gives visitors an overview of your site. It can also display the RSS feeds for all blogs and categories.
- See http://drupal.org/project/site_map
Taxonomy Image
- The taxonomy_image module allows site administrators to associate images with taxonomy terms. 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
- Useful for the icon assignments to the 'Tools' menu block
- A directory, such as: sites/default/files/category_pictures is created
- Found under Home » Administer » Content management » Taxonomy » Add terms or Edit
- See http://drupal.org/project/taxonomy_image
Possible Use
BlockTheme
- BlockTheme allows an admin to define tpl files for standard block templates
and provides a select box on the block configure form so the user can select a tpl file to use as opposed to having to override the templates by block ID.
- Excellent video at: http://mustardseedmedia.com/podcast/episode13
- See http://drupal.org/project/blocktheme
Content Taxonomy
- This module provides a field type for CCK for referencing taxonomy terms. The fields are independent from vocabulary settings. All settings are done in the CCK Field Admin pages. There you can specify the field type (widget type), the vocabulary, etc.
- See http://drupal.org/project/content_taxonomy
Content Templates (ConTemplate)
- The Content Template (a.k.a. ConTemplate) module allows modification of Drupal's teaser and body fields using administrator defined templates. These templates use PHP code and all of the node object variables are available for use in the template. An example node object is displayed and it is as simple as clicking on its properties to add them to the current template. This module dovetails nicely with CCK, adding a "template" tab to CCK content-type editing pages and pre-populating the templates with CCK's default layout. This makes it easy to rearrange fields, output different fields for teaser and body, remove the field title headers, etc. But Content Template can be used on any node type and allows modification of the teaser and body properties before they go out in an RSS feed, search index, or are handed off to the theme. Additionally, ConTemplate can choose to add any files, images, or other media to RSS feeds as an attachment. Templates are normally stored in the database but it is also possible to create disk-based templates which live in your sites directory and can be inherited across multisite installations in the same way as themes or modules
- Basically, these allows individual theming of new content types
- See http://drupal.org/project/contemplate
Header Image
- This module allows you to display an image on selected pages. Each image, included in a node, can be shown on pages based on node id, path, taxonomy, node type, book or PHP code. A single block is used to display different images (nodes) each image having its own conditions. Using a weight per node the order of selection can be controlled
- See http://drupal.org/project/headerimage
Lightbox V2
- The Lightbox2 module is a simple, unobtrusive script used to overlay images on the current page. It works on most modern browsers. The module places images above your current page, not within. This frees you from the constraints of the layout, particularly column widths
- See http://drupal.org/project/lightbox2
Module Builder
- A module which auto-generates a skeleton or "scaffolding" for a module, along with hints on how to fill them in. Useful for newbie developers to learn how hooks work, and seasoned developers who are too lazy to look up what arguments a function has to take
- See http://drupal.org/project/module_builder
STORM
- Storm (SpeedTech Organization and Resource Manager) is a project management application that features attributes, organizations, projects, tasks, time tracking, invoices and expenses (there apparently is no Gantt)
- See http://drupal.org/project/storm
String Overrides
- Provides a quick and easy way to replace any text on the site by easily replacing anything that's passed through t()
- See http://drupal.org/project/stringoverrides
Taxonomy Manager
- This module provides a powerful interface for managing a taxonomy vocabulary. A vocabulary gets displayed in a dynamic tree view, where parent terms can be expanded to list their nested child terms or can be collapsed. Operations include mass deletes, adds, moves, merges, search and CSV export. JavaScript and automatic load of images should be browser enabled
- See http://drupal.org/project/taxonomy_manager
Taxonomy Menu
- Transform any of your taxonomy vocabularies into menus easily. It integrates with Views and should be used with the DHTML Menu module (http://drupal.org/project/dhtml_menu)
- See http://drupal.org/project/taxonomy_menu
Theme Generator
- The Theme Generator module aims to generate themes dynamically using plain HTML templates as the source of the themes, and to provide mechanisms to manage those themes and their updates programmatically. It is specifically designed for organizations who already have many existing websites, and need to simply port their existing templates to Drupal themes
- See http://drupal.org/project/theme_generator
Webform
- This module adds a webform nodetype. Typical uses are to create questionnaires, contact or request/register forms, surveys, polls or a front end to issues tracking systems.
- Submissions are saved in a database table and can optionally be mailed to a nominated e-mail address upon submission. Past submissions are viewable for users with the correct permissions. It includes some simple statistical tools to help in form design and evaluation and also allows the whole table to be downloaded as a csv file for detailed statistical analysis.
- See http://drupal.org/project/webform
Wikitools
- The wikitools module provides some settings to get a more wiki-like behavior. It aims to be lightweight; all features are optional, and it provides no database tables of its own
- See http://drupal.org/project/wikitools
Yahoo YUI
- This module is for taking the advantage of available Yahoo YUI (Yahoo! User Interface) library components. Currently implemented components need to be separated installed and are:
- YUI Button, Calendar, Data Table, Menu, Rich Text Editor, Tree View, Tab View and Logger
- See http://drupal.org/project/yui
Interesting Candidates
Advanced Forum
- Advanced Forum is a theme/glue module that enhances Drupal's core forum module. The included styles provide the look typically found in stand alone forum software and the code provides some of the functionality, mostly related to the end user experience. By adding other Drupal contributed modules, many of which are automatically used by Advanced Forum, you can achieve much of what stand alone software provides
- See http://drupal.org/project/advanced_forum
aegir
- Ægir (aegir) is a new set of contributed modules for Drupal that aims to solve the problem of managing a large number of Drupal sites. It does this by providing you with a simple Drupal based hosting front end for your entire network of sites
- See http://groups.drupal.org/hostmaster2
Cobalt
- Cobalt is a way to control Drupal 6 made in the image of Quicksilver for Mac. So far it’s confirmed to work in Safari/Webkit and Firefox 3. In Firefox, and other potentially compatible browsers, Google Gears have to be installed for quicksilver to work. This is due to Cobalt’s need to store data locally for fast access
- See http://drupal.org/project/cobalt
Context
- Context module's development aims to provides developers with a easy way to map site elements like 'sections' and 'features' to Drupal's underlying architecture. It provides a very simple API for storing information about a page as it is being generated. This allows modules and themes to be aware of things that they otherwise would not be able to easily detect
- See http://drupal.org/project/context
Control Panel
- This module adds a new graphical control panel page. It allows the user to specify the menu path to use as the source for the Control Panel. admin' is the default but it can be set to any menu item. It also allows the user to specify if they want the Control Panel module to recursively build sub panels for the main Control Panel. These sub panels can be collapsible. The module also has the ability to generate the Control Panel via a block(s)
- See http://drupal.org/project/controlpanel
Custom Breadcrumbs
- Allows administrators to set up parameterized breadcrumb trails for any node type. This allows CCK-style node types to have "Home > User Blog > 2005 > January" style breadcrumbs on the node view page itself, syncronizing cleanly with custom views or pathauto aliases
- See http://drupal.org/project/custom_breadcrumbs
Drag’n’Drop Uploads
- Drag and drop files where they are needed. It is integrated with a bunch of other Drupal modules so it’s pretty smooth. You can even set it up to flow right into designated cck fields. See also the LevelTen Essentials Distribution.
- See http://drupal.org/project/dragndrop_uploads
Dript
- Dript is a Drupal scripting language based on LISP. Dript fuctionality is added to Drupal through the Dript module.
- See http://drupal.org/project/dript
drush
- drush is a command line shell and Unix scripting interface for Drupal, a veritable Swiss Army knife designed to make life easier for those of us who spend most of our working hours hacking away at the command prompt
- Now maintained by Moshe Weitzman
- See http://drupal.org/project/drush
Embed Widgets
- Seems to have support for widgets, Google gadget and Google OpenSocial
- http://drupal.org/project/embed_widgets
Entity
- This project holds two entity related APIs:
- Entity CRUD API - Simplifies creating new entity types and provides full CRUD functionality for new entities. It offers a ready to use EntityDB class providing a save() and delete() method as well as a suiting EntityController for mass loading/deleting. The EntityDB class can be extended and customized to fit special needs. Apart from that modules may extend it with additional methods using the faces API
- Entity Metadata - Provides a unified way to deal with entities and their properties, as well as an API to easily get and set the properties.
- See http://drupal.org/project/entity
eXtensible Catalog (XC)
- The eXtensible Catalog (XC) project is working to design and develop a set of open-source applications that will provide libraries with an alternative way to reveal their collections to library users
- See the project website at http://www.extensiblecatalog.org for a more complete overview of the eXtensible Catalog project and its software
- See http://drupal.org/project/xc
Flexifilter
- Flexifilter is a module that allows non-admins to create their own, configurable custom filters. It is not limited to simple text replacement or regex replacement; it includes logic such as if() and while() statements, and is easily extendable by other modules. It is the best thing to hit Drupal since the potato
- http://drupal.org/project/flexifilter
Gears
- Google Gears is an open source project that enables more powerful web applications, by adding new features to web browsers. This gears.modulo integrates with drupal part of the functionalities of google gears. The LocalServer module allows a web application to cache and server its HTTP resources locally, without a network connection
- See http://drupal.org/project/gears
Glossary
- 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. 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
- See http://drupal.org/project/glossary
Glossary2
- Glossary2 (G2) is an alternative glossary module written for Drupal 4.7 and 6, designed for high-volume glossary / dictionary sites
- See http://drupal.org/project/g2
Import/Export API
- The import / export API allows for the definition of data entities within Drupal. The definition system lets data entities be related to each other, and it includes a number of different field types. It also supports a system of import (parsing) and export (rendering) engines, for formats such as XML and CSV; has not been actively maintained recently
- See http://drupal.org/project/importexportapi
Inline AJAX Search
- The list of results starts to populate below your search box; instead of site visitors having to wait for a new page to load with results they can just move the mouse down to the result they’re looking for; simple and easy
- You can display the results in a views style format with a node title and small content teaser to be sure the page you’re going to is what you need
- See http://drupal.org/project/inline_ajax_search
jQuery Plugins
- The goal of this project is to reduce the overhead of developers and site maintainers in keeping their jQuery plugins up-to-date and compatible with a given version of Drupal core
- See http://drupal.org/project/jquery_plugin
jQuery UI
- A wrapper module around the jQuery UI effects library that lets module developers add swooshy, swishy effects to their code
- See http://drupal.org/project/jquery_ui
- For corner effects, also see: http://www.malsup.com/jquery/corner/
jQuery Update
Machine Learning API
- Has a number of machine learning algorithms. Used by the memetracker module to power its results
- See http://drupal.org/project/machinelearningapi
Multi Node Add
- This for adding numerous nodes as once. It also can come in handy for those hand coded site migrations when node import is just not an option; cut, paste, cut, paste, cut, paste then save as needed!
- See http://drupal.org/project/multi_node_add
Nagios
- The Nagios module that integrates your Drupal site (or hundreds of sites!) into with the Nagios monitoring application. The module reports to Nagios that the site is up and running normally, including:
- PHP is parsing scripts and modules correctly (in case PHP gets disabled for some reason)
- The database is accessible from Drupal
- Whether there are configuration issues with the site, such as:
- pending Drupal version update
- pending Drupal module updates
- unwritable 'files' directory
- Pending updates to the database schema
- Anything else reported in the Administer -> Reports -> Status report (requirements)
- See http://drupal.org/project/nagios
Nodequeue
- The Nodequeue module allows an administrator to arbitrarily put nodes in a group for some purpose; examples of this might be to highlight one particular node, as in a typical news site's Lead Article. Nodequeue provides a simple UI to manually order any queue. Also, Nodequeue provides a robust API that allows other modules to define smartqueues, which are associated with external data
- See http://drupal.org/project/nodequeue
Open Layers
Patterns
- Complex websites and web applications can be created by combining configurations of Modules, Content Types (CCK,) Views, Panels, Menus, Blocks, Categories, Roles / Permissions, etc.. This site setup and configuration process is a very time consuming and repetitive bottleneck. Patterns module is built to bypass this bottleneck by managing and automating site configuration. Site configuration is stored in XML or YAML files
- Also, hear this intro: http://www.lullabot.com/drupal-voices/drupal-voices-10-chris-bryant-patterns-module
- See http://drupal.org/project/patterns
Quiz Module
- The module is designed to convert your site into a web test administration site with restriction systems, timed tests, multiple choice, true false, and short answer questions; plus a results and statistics system.
- See http://drupal.org/project/quiz
Schema
- Introduced in Drupal 6, the Schema API allows modules to declare their database tables in a structured array (similar to the Form API) and provides API functions for creating, dropping, and changing tables, columns, keys, and indexes
- See http://drupal.org/project/schema
Sections
- This module allows you to create sections within your site. Each section has an installed template, theme or style attached to it
- See http://drupal.org/project/sections
Spaces
- Spaces allows features (a blog, calendar, casetracker, shoutbox, gallery, etc.) to be enabled and customized in different configurations in different spaces. Space types include:
- spaces_site creates a single space that encompasses your entire Drupal site. You can turn enable/disable features for the entire site.
- spaces_og treats each organic group as a distinct space. Features can be made disabled/public/private on a per-group basis.
- spaces_user treats each user's profile as a distinct space. Features can be enabled/disabled on a per-user basis.
- Developed by Development Seed (?)
- See http://drupal.org/project/spaces
StatCounter
- This module provides an integration between Drupal and StatCounter web statistics. The module allows user to insert their StatCounter tracking code and select the scope of pages they wish to display it on
- See http://drupal.org/project/statcounter
Taxonomy CSV Import
- This module allows you to import taxonomy from a CSV file. However it does not tell you what it's gonna do before it's doing it, so make sure you have a backup so you can roll back if necessary
- See http://drupal.org/project/taxonomy_csv
Taxonomy Import/Export
- This module makes it possible to import and export vocabularies and taxonomy terms via XML, CSV, RDF and other formats. Versions from 5.x on also support synonym terms
- See http://drupal.org/project/taxonomy_xml
Timeline
- Timeline is a DHTML-based AJAXy widget for visualizing temporal information. It works in a similar way as Google Maps but for time-based events
- See http://drupal.org/project/timeline
Ubercart
- Ubercart is an e-commerce suite developed for Drupal. It has been designed with the end user in mind, focusing on usability in three key areas: store configuration, product and catalog creation, and order administration. On the front end, all major systems are configurable and integrate with the standard Drupal systems (node, taxonomy, user, etc.). On the back end, the settings pages and order administration pages have been designed with ease of use in mind, and we are constantly working to lower the barrier to entry for new Ubercart users
- Very highly regarded
- Many additional plugins
- See http://drupal.org/project/ubercart
Workflow
- The workflow module allows the creation and assignment of arbitrary workflows to Drupal node types. Workflows are made up of workflow states. For example, a workflow with the states Draft, Review, and Published could be assigned to the Story node type
- Apparently works well with Views
- See http://drupal.org/project/workflow
WP2Drupal
Yahoo Terms
- This module provides an interface to other modules to use Yahoo Term Extractor service. To use this service, you have to get a Yahoo Application ID (http://developer.yahoo.com/faq/#apps). It can be used as a standalone module to extract terms from (English) texts and assign the terms to the node from a chosen taxonomy vocabulary. This allows Yahoo Terms to "free tag" your content. Use in other languages might make sense but is not tested
- See http://drupal.org/project/yahoo_terms
Zend Framework
- The Zend Framework is a powerful open source web application framework for developing PHP 5 web applications. The Zend Framework module is a Drupal API module that facilitates the installation and management of the Zend Framework, making sure it is properly accessible to other Drupal modules
- See http://drupal.org/project/zend