Here are some modules, themes, and other tools to be used with Drupal, the software that runs this site.
These are generally not polished (and in particular, not documented) to official Drupal contrib standards. Some of them are tailored to the specific needs of this site, and might not be directly usable on sites with different policies and conventions. The copies here may be updated occasionally, but they are not necessarily up-to-date with — or used on — this site.
Everything here is provided as-is,
and absolutely no (unpaid) support whatsoever will be provided.
(You can send bug reports to kpschoedel
gmail.com, but we do not guarantee we will do anything with them.)
Theme Preprocessor
This allows one to write themes in a 'template' style, but runs at theme-install time for maximum efficiency (that is, it produces a pure PHP theme, and is not itself present as part of a Drupal installation). It provides inclusions, conditionals, macros, etc.; its main design goal was to allow one to easily share code/design between themes.
It requires a command-line-accessible PHP; it is written in PHP because that language will be familiar to people working on Drupal.
- documentation (PDF)
- preprocessor
- sample themes (4.5)
Modules
- altertype (4.6)
Allows editors to change a node's type.
- captcharith
(4.6)
A captcha plug-in that provides a simple arithmetic question as the challenge. Derived from an early version of the captcha module.
Note: at time of writing, this requires a patch to captcha.module; see drupal.org/node/20653.
- copyright
(4.5,
4.6)
Adds a copyright notice (automatically using the current year) at the bottom of each page.
- extralinks
(4.5,
4.6)
Optionally adds (a) an "edit" link to teaser displays (like Drupal 4.4), and (b) "next", "previous", and "latest" links to node pages, based on the front page display order.
- forumup (4.6)
Allows editors to promote an unpublished forum item to a story.
- ii404
(4.5,
4.6)
Perform a search when a page is not found. Derived from i404.module by Steven Wittens.
- insertions
(4.5,
4.6)
Provides XML-style tags to insert information (e.g. title, teaser, body, link list, etc.) about nodes and comments. Similar in spirit to the Attached node contrib module.
- linebreak
(4.5,
4.6)
An extension to the line break filter. Converts line breaks into HTML, but only if the user has not supplied explicit <p>, <div>, or <br> tags.
- nlist
(4.5,
4.6)
An adjunct to insertions.module, this lists the nodes in a taxonomy in <n> form, so that the editor can copy them to easily build custom article lists.
- noteaser
(4.5,
4.6)
Allows the admin to suppress teasers for particular node types. See http://drupal.org/node/12667.
- replace
(4.5,
4.6)
An input filter that provides two functions: (a) turn '@' characters into images, to discourage email address harvesting; (b) turn the site's name into a link.
- results
(4.5,
4.6)
In 4.5, this module merely suppresses the author field in search results, for 'editorially' unsigned collaborative sites.
From 4.6, this module allows the administrator to configure, for each node type, what information will be displayed in search results.
- safemail
(4.6)
An input filter to protect email addresses from automated harvesting.
This filter converts email addresses (either in mailto: links or in text) into links to an internal URL ?q=safemail/etc. Access to the decoded email address may be restricted by role and/or guarded with a captcha.
Note: at time of writing, this requires a patch to captcha.module; see drupal.org/node/20653.
- searchers
(4.5,
4.6)
This module provides an alternate report of external referrers, parsing search engine referrers and excluding unwanted referrers.
- shuffler
(4.5,
4.6)
Present a "random" selection of articles in a sidebar block. Nodes are selected and weighted by taxonomy. Reasonably efficient, since the list of links is generated by a cron hook rather than on every page load. (On the other hand, it does not take node permissions into account.)
- spamtell
(4.6)
This is a plug-in for the spam module, which notifies users when their content appears to be spam. (The hope is that they will then be less likely to wonder why their content does not appear, and resubmit it repeatedly.)
- teaserless
(4.5,
4.6)
Handle old database nodes with no/empty teaser field.
- tracking
(4.5,
4.6)
Similar to the core tracker.module, but primarily focussed on providing registered users with personalized lists of unread content.
- zminoredit
(4.5,
4.6)
Allows editors to mark node edits as 'minor', so that the content does not appear to be 'new' in the tracker. (Renamed from 'minoredit' so that it appears just above the 'Submit' button.)
PHP pages
- fc
(4.5,
4.6)
Flushes the Drupal cache when loaded. Useful while working on code that uses the cache.
- node
(4.5,
4.6)
Redirect old node URLs. Better than the standard Apache redirect because it handles links to comments.
Patches
- captcha-api.patch
(4.6)
Provides an API for captcha.module, so that third-party modules can provide and use captcha tests.
Note: the 4.6 patch applies to the CVS version of captcha.module current at the time of the 4.6.0 release, since as of this writing captcha.module has not been released for 4.6.
- comment-admin-show-node.patch
(4.5,
4.6)
Makes admin/comment/edit/... pages provide the title and link of the associated node, so that the administrator can easily verify that the comment has been posted in the correct place.
- comment-delete-one.patch
(4.5,
4.6)
Permit the administrator to delete a single comment, without also deleting all of its descendents.
I still can't believe Drupal actually thinks it's a good idea to force an editor, who wants to remove one little piece of content, to also remove other content, sight unseen. This is Drupal's biggest flaw — it's should be a content-management system, not a content-arbitrarily-discarding system.
- comment-theme.patch
(4.6)
Adds theme('comment_start') and theme('comment_end') around the comment display section of a node page, so that, for example, the entire comment section can be enclosed in its own styled div.
- drupal-options.patch
(4.5,
4.6)
Makes the two functions of drupal.module — remote authentication and the remote directory — separately configurable.
- excerpt-admin.patch
(4.5,
4.6)
Modifies excerpt.module to allows an administrator to create an excerpt, even if excerpts are not normally configured for that node type.
Note: the 4.6 patch applies to the CVS version of excerpt.module current at the time of the 4.6.0 release, since as of this writing excerpt.module has not been released for 4.6.
- node-history.patch
(4.5,
4.6)
Stops node.module from discarding history entries older than a month. I think keeping track of what a user has read is a useful service, and don't want it arbitrarily sabotaged.
- password-trim.patch
(4.5,
4.6,
fixed in 4.6.1)
Trim white space from entered passwords. New users who cut-and-paste from their introductory email message often end up with the preceding blank and/or trailing newline.
- poll-theme.patch
(4.5,
4.6)
Makes poll results themeable.
Obsolete Items
- updatecommentcount (4.5)
Repairs the node_comment_statistics table after an upgrade to 4.5.0. Probably won't be necessary for 4.5.1 or later; see http://drupal.org/node/11366
- comment-save-count.patch
(4.5,
fixed in 4.6)
Update the comment count when a comment is saved, so that changes to its publication status will be reflected in the count.
- excerpt-read-more.patch
(4.5,
fixed in 4.6)
Modifies excerpt.module to correct the 'read more' flag.
- node-post.patch
(4.5,
fixed in 4.6)
Stops a user being redirected to a page they don't have permission to view, after submitting a node.
