Site Documentation Module

This all started with a post on the DO forums asking "I was wondering if there are any modules that output the entire Drupal setup and document the modules and configurations." That got me started thinking... Very dangerous for a blonde!

The Site Documentation Module

Why Do I Need It?

Unfortunately Drupal does not include the powers of immortality or invincibility. You may someday get hit by a truck, or even just decide that you no longer want to maintain the site. So someone else may have to take over.

Where do they start? I know you documented the site really well, but the next person doesn't want to read those 14 binders of documentation you left behind. They can always go through all the administration screens and look for the information, but that can take a lot of time and even those pages don't tell you everything. Some things you're only going to get by looking directly into the database.

This is what the Site Documentation module is designed to do. In addition, it will detect some problems that may exist in your installation, and optionally correct some of them.

What Does It Do?

To simplify it a bit, the Site Documentation module picks up information from various places within the Drupal environment. Some of the information comes from internal arrays, some is derived from system calls, and some comes directly from the database tables. As one might imagine, this gathering does not come without a price; you can expect a spike in database and CPU activity while this module runs. Therefore, one should be careful how often and when it is run.

The Site Documentation module presents the following summarized information:

  • Basic Drupal summary - lists some basic information about your Drupal installation.
  • Database summary - list all tables and pertinent information.
  • Sequences Summary - displays the last id of various table entries.
  • Node Summary - lists how many of all content types are in the database, along with status information.
  • Node Access Summary - checks the node_access table to see if all nodes are represented, and includes the ability to see which nodes are in which realms. (Unlike Devel Nodes Access, this does not require any other modules like Views.)
  • Content types - detailed list of content type settings.
  • Vocabularies - shows all the defined vocabularies (taxonomies) and all the terms within them, along with usage counts and other settings.
  • Modules - lists all modules that are known to the Drupal system, even if not enabled. This list is much like that of the Modules Admin page (I borrowed some of that code), and includes dependencies.
  • Themes - lists all the available themes, whether enabled or not.
  • Theme_Engine - shows which theme engines are available.
  • System Variables - lists all variables defined by all modules, along with their content.
  • Blocks - shows a complete list of the blocks that are defined, whether enabled or not. It will also check to see if the theme that owns them exists any longer; if not, a warning message may be issued.
  • Boxes - this shows additional information for manually created blocks.
  • Roles and Permissions - lists all user roles along with their access permissions, blocks that are restricted to the role, and may include all users assigned to the role.
  • Contacts - displays all email contacts for the site.
  • Profile Fields - shows custom user profile fields used on this site.
  • URL Aliases - shows URL Aliases that are defined along with broken and duplicate links. The alias numbers and node IDs are hyper linked to ease corrections.
  • A few other little "goodies" - these are documented below.

I had discovered some time ago, that the "blocks" table can have rows defined for themes that were tested and discarded. This module allows you to delete them if you would like. If any are found, a warning message will be issued, and if you don't choose to delete them, there will be a SQL statement at the end that you can copy and paste into phpMyAdmin.

In my testing, I discovered that I had rows in my "term-nodes" table that belonged to nodes that no longer existed. So I added a check and a delete option that you may choose to run. If you check and don't delete, there will be a SQL statement at the end that you can copy and paste into phpMyAdmin.

Another problem that cropped up in my creating this module was a long-running / never-ending Cron job. This module will now highlight that and gives you an option to fix it.

How Can I Get It?

This module has been accepted as a contributed module. It is available here. Please post all support requests, bug reports, and feature suggestions on the project issue page.



How do you start writing documentation for drupal site? Is there a module to help out with documentation for a drupal 7 site?

Drupal 7?

I just discovered this module over the weekend, during a trying set of upgrades (a minor 6.x upgrade plus about eight individual modules). It's a huge time saver, I love it. Do you have any plans for a 7.x release?

Drupal site documentation for Drupal 6?


your modul is great, so can you say if it will be aviable for Drupal 6?



Yes, it will be. You should post a feature request in the project's issue queue though.