<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Anselm Bradford &#187; Drupal</title>
	<atom:link href="http://blog.anselmbradford.com/category/drupal/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.anselmbradford.com</link>
	<description>wrangling the Internet's wildest</description>
	<lastBuildDate>Mon, 27 Jun 2011 19:17:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>October 2009 List of Useful Drupal Modules</title>
		<link>http://blog.anselmbradford.com/2009/10/22/october-2009-list-of-useful-drupal-modules/</link>
		<comments>http://blog.anselmbradford.com/2009/10/22/october-2009-list-of-useful-drupal-modules/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 13:00:21 +0000</pubDate>
		<dc:creator>Ans</dc:creator>
				<category><![CDATA[Drupal]]></category>

		<guid isPermaLink="false">http://blog.anselmbradford.com/?p=972</guid>
		<description><![CDATA[This is a wonderful list of useful Drupal modules compiled by Lee-Yan Marquez (argentofchange.com) from the discussion in last week&#8217;s Auckland Drupal Meetup group: Content Management date The date module is a flexible date/time field type for the CCK content module. Content Aggregation &#38; Distribution feedapi FeedAPI aggregates feeds on a Drupal website by generating [...]]]></description>
			<content:encoded><![CDATA[<p>This is a wonderful list of useful Drupal modules compiled by Lee-Yan Marquez (<a href="http://www.argentofchange.com" onclick="pageTracker._trackPageview('/outgoing/www.argentofchange.com?referer=');">argentofchange.com</a>) from the discussion in last week&#8217;s <a href="http://www.meetup.com/drupalnz/" onclick="pageTracker._trackPageview('/outgoing/www.meetup.com/drupalnz/?referer=');">Auckland Drupal Meetup</a> group:</p>
<p><strong>Content Management</strong></p>
<blockquote><p><a href="http://drupal.org/project/date" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/date?referer=');">date</a><br />
The date module is a flexible date/time field type for the <a href="http://drupal.org/project/cck" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/cck?referer=');">CCK</a> content module.</p></blockquote>
<p><strong>Content Aggregation &amp; Distribution</strong></p>
<blockquote><p><a href="http://drupal.org/project/feedapi" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/feedapi?referer=');">feedapi</a><br />
FeedAPI aggregates feeds on a Drupal website by generating light weight items or nodes from feeds. It provides a straightforward configuration for most use cases and is extensible through an API. FeedAPI integrates with <a href="http://drupal.org/project/og" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/og?referer=');">OG</a> (but does not require it).</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/tattler" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/tattler?referer=');">tattler</a><br />
Tattler (app) is a Drupal Distribution, an open source topic monitoring tool for today&#8217;s Web. Tattler finds and aggregates content from the Web on topics you ask it to monitor. Using semantic Web technologies, Tattler mines news, websites, blogs, multimedia sites, and other social media like Twitter, to find mentions of the issues most relevant to your organization.</p></blockquote>
<p><strong>Content Relationships</strong></p>
<blockquote><p><a href="http://drupal.org/project/context" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/context?referer=');">context</a><br />
Context allows you to manage contexts for different portions of your site. You can think of each context as representing a &#8220;section&#8221; of your site. For each context, you can choose the conditions that trigger the context to be active and choose different aspects of Drupal that should react to this active context.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/flag" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/flag?referer=');">flag</a><br />
Flag is a flexible flagging system that is completely customizable by the administrator. Using this module, the site administrator can provide any number of flags for nodes, comments, or users. Some possibilities include bookmarks, marking important, friends, or flag as offensive. With extensive views integration, you can create custom lists of popular content or keep tabs on important content.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/location" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/location?referer=');">location</a><br />
The location module allows real-world geographic locations to be associated with Drupal nodes, including people, places, and other content. The location module allows admins to collect addresses, geocode them (translate addresses to latitude/longitude), and associate locations with Drupal nodes and users. Location data is automatically used to generate GeoRSS within your existing RSS feeds. Location also provides an API so that other modules may take advantage of its address storage and geocoding features.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/nodereference_autocreate" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/nodereference_autocreate?referer=');">node reference auto-create</a> (drupal 6 dev version only)<br />
Provides an additional <a href="http://drupal.org/project/cck" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/cck?referer=');">CCK</a> widget type for the base field node reference. The auto-create widget type provides a text-field for input of the node title like standard node reference fields, but instead of linking to existing nodes it creates a node with the specified title on save. When the title is changed during subsequent node saves the referenced node title is changed as well.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/nodereference_field" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/nodereference_field?referer=');">node reference field</a> (drupal 6 dev version only)<br />
Allows fields on the node referenced by a <a href="http://drupal.org/project/nodereference_autocreate" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/nodereference_autocreate?referer=');">node reference auto-create</a> field to be viewed and edited. In other words a node reference is created to a particular node which has additional <a href="http://drupal.org/project/cck" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/cck?referer=');">CCK</a> fields. The additional fields can also be edited along side the node title provided by node reference.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/spaces" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/spaces?referer=');">spaces</a><br />
Spaces allows features (a blog, calendar, casetracker, shoutbox, gallery, etc.) to be enabled and customized in different configurations in different spaces.</p></blockquote>
<p><strong>E-Commerce</strong></p>
<blockquote><p><a href="http://drupal.org/project/ubercart" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/ubercart?referer=');">ubercart</a><br />
An e-commerce suite developed for Drupal.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/uc_paymentexpress" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/uc_paymentexpress?referer=');">Ubercart Payment Express (DPS PXAccess and PXPost)</a> (in development)<br />
Payment processor implementation for DPS (Direct Payment Solutions) Payment Express payment gateway.</p></blockquote>
<p><strong>Filters</strong></p>
<blockquote><p><a href="http://drupal.org/project/better_formats" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/better_formats?referer=');">better formats</a><br />
Better formats is a module to add more flexibility to Drupal&#8217;s core input format system.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/htmlpurifier" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/htmlpurifier?referer=');">html purifier</a><br />
<a href="http://htmlpurifier.org/" onclick="pageTracker._trackPageview('/outgoing/htmlpurifier.org/?referer=');">HTML Purifier</a> is a standards-compliant HTML filter library. HTML Purifier will not only remove all malicious code (better known as XSS) with a thoroughly audited, secure yet permissive whitelist, it will also make sure your documents are standards compliant, something only achievable with a comprehensive knowledge of W3C&#8217;s specifications.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/flexifilter" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/flexifilter?referer=');">flexifilter</a><br />
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.</p></blockquote>
<p><strong>Image Processing</strong></p>
<blockquote><p><a href="http://drupal.org/project/imagecache" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/imagecache?referer=');">imagecache</a><br />
ImageCache allows you to setup presets for image processing.</p></blockquote>
<p><strong>Package and Deploy</strong></p>
<blockquote><p><a href="http://drupal.org/project/deploy" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/deploy?referer=');">deployment</a> (drupal 6 dev version only)<br />
The deployment framework is a series of modules which are designed to allow developers to easily stage Drupal data from one site to another. This includes content (nodes, taxonomy, users, etc) as well as configuration (views, content types, system settings, etc.).</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/drush" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/drush?referer=');">drush</a><br />
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 some of our working hours hacking away at the command prompt. </p></blockquote>
<blockquote><p><a href="http://drupal.org/project/features" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/features?referer=');">features</a><br />
Features provides a UI and API for taking different site building components from modules with exportables and bundling them together in a single feature module.</p></blockquote>
<blockquote><p>legacy (drupal 5 core module)<br />
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.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/node_import" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/node_import?referer=');">node import</a> (some limitations)<br />
Allows you to import a set of nodes from a Comma Seperated Values (CSV) or Tab Seperated Values (TSV) text file.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/tw" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/tw?referer=');">table wizard</a><br />
The Table Wizard facilitates dealing with database tables: </p>
<ul>
<li>It allows surfacing any table in the Drupal default database through <a href="http://drupal.org/project/views" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/views?referer=');">Views 2</a>. </li>
<li>Relationships between the tables it manages can be defined, so views combining data in the tables can be constructed. </li>
<li>It performs analysis of the tables it manages, reporting on empty fields, data ranges, ranges of string lengths, etc. </li>
<li>It provides an API for other modules to views-enable their tables. </li>
<li>It provides an API for importing data into tables in the Drupal default database (automatically doing the views integration above). </li>
<li>It is bundled with an implementation of this API, for importing comma- and tab-delimited files.</li>
</ul>
</blockquote>
<p><strong>Paths &amp; Navigation</strong></p>
<blockquote><p><a href="http://drupal.org/project/admin_menu" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/admin_menu?referer=');">admin menu</a><br />
Administration menu module provides a theme-independent administration interface (a navigation menu for the admin side of a site). It&#8217;s a helper for novice Drupal users coming from another CMS, a real time-saver for Drupal site administrators, and definitely a must for Drupal developers and site builders (also includes integration with <a href="http://drupal.org/project/devel" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/devel?referer=');">Devel</a> ).</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/menu_block" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/menu_block?referer=');">menu block</a><br />
Provides configurable blocks of menu trees starting with any level of any menu.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/menutrails" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/menutrails?referer=');">menu trails</a><br />
This module adds some common-sense usability to Drupal&#8217;s menu system </p>
<ul>
<li>Menu Trails implements primary/secondary links which keep the current menu trail &#8220;active&#8221; or highlighted. A handy snippet ready to go into your template.php is included. </p>
<li>The module provides a means of broadly categorizing nodes (by type or taxonomy) as falling &#8220;under&#8221; a known menu item. These nodes are not added to the menu tree (keeping the menu admin system sane) but they will trigger the functionality above &#8212; preserving navigation state for the user &#8212; when viewed.</li>
</ul>
</blockquote>
<blockquote><p><a href="http://drupal.org/project/pathauto" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/pathauto?referer=');">pathauto</a><br />
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 &#8220;pattern&#8221; system which the administrator can control. </p></blockquote>
<p><strong>Performance</strong></p>
<blockquote><p><a href="http://drupal.org/project/varnish" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/varnish?referer=');">varnish</a> (Drupal 7 only)<br />
This module provides integration between your Drupal site and the <a href="http://varnish.projects.linpro.no/" onclick="pageTracker._trackPageview('/outgoing/varnish.projects.linpro.no/?referer=');">Varnish HTTP Accelerator</a>, an advanced and very fast reverse-proxy system. Basically, Varnish handles serving static files and anonymous pageviews for your site much faster than any webserver. </p></blockquote>
<p><strong>Security</strong></p>
<blockquote><p><a href="http://drupal.org/project/mollom" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/mollom?referer=');">mollom</a><br />
Mollom provides a one stop solution for all spam problems and can protect the following Drupal forms. It offers and intelligently combines: </p>
<ul>
<li>CAPTCHAs &#8212; both image and audio CAPTCHAs. </li>
<li>text analysis. </li>
<li>user reputations. </li>
</ul>
<p>and can:</p>
<ul>
<li>block comment form spam. </li>
<li>block contact form spam. </li>
<li>protect the user registration form against fake user accounts. </li>
<li>protect the password request form. </li>
<li>block spam on any node form, such as forum topics, articles, stories, pages, and more. </li>
</ul>
</blockquote>
<p><strong>Site Stats</strong></p>
<blockquote><p><a href="http://drupal.org/project/google_analytics" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/google_analytics?referer=');">google analytics</a><br />
Adds the Google Analytics web statistics tracking system to your website.<br />
The module allows you to add the following statistics features to your site: </p>
<ul>
<li>Selectively track certain users, roles and pages.</li>
<li>Monitor what type of links are tracked (downloads, outgoing and mailto).</li>
<li>Monitor what files are downloaded from your pages.</li>
<li>Cache the Google Analytics code on your local server for improved page loading times.</li>
<li>Track user segmentation from Drupal profile data.</li>
<li>Site Search support.</li>
<li>AdSense support.</li>
</ul>
</blockquote>
<p><strong>UI</strong></p>
<blockquote><p><a href="http://drupal.org/project/flot" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/flot?referer=');">flot</a><br />
This module provides an API for using the flot graphing library. It is designed to make it simple for developers to add flot graphs to their modules or applications.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/jquery_media" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/jquery_media?referer=');">jquery media</a><br />
The jQuery Media plugin will automatically turn links to media into their embedded media equivalents. The module works best in conjuction with the <a href="http://drupal.org/project/filefield" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/filefield?referer=');">File Field</a> module, but may be used in other cases as well.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/jquery_ui" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/jquery_ui?referer=');">jquery ui</a><br />
A wrapper module around the <a href="http://jqueryui.com/" onclick="pageTracker._trackPageview('/outgoing/jqueryui.com/?referer=');">jQuery UI</a> effects library that lets module developers add swooshy, swishy effects to their code.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/slider" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/slider?referer=');">slider</a><br />
Slider module creates an effect called the &#8220;Coda slider&#8221;, which was made famous by the site: <a href="http://www.panic.com/coda/" onclick="pageTracker._trackPageview('/outgoing/www.panic.com/coda/?referer=');">http://www.panic.com/coda/</a>.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/thickbox" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/thickbox?referer=');">thickbox</a><br />
ThickBox is a webpage UI dialog widget written in JavaScript on top of the <a href="http://jquery.com" onclick="pageTracker._trackPageview('/outgoing/jquery.com?referer=');">jQuery</a> library. Its function is to show a single image, multiple images, inline content, iframed content, or content served through AJAX in a hybrid modal.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/vertical_tabs" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/vertical_tabs?referer=');">vertical tabs</a><br />
Provides vertical tabs like <a href="http://drupal.geek.nz/static/node-form/default/summaries2.html" onclick="pageTracker._trackPageview('/outgoing/drupal.geek.nz/static/node-form/default/summaries2.html?referer=');">http://drupal.geek.nz/static/node-form/default/summaries2.html</a> on the node add form.</p></blockquote>
<p><strong>User Management</strong></p>
<blockquote><p><a href="http://drupal.org/project/nodeprofile" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/nodeprofile?referer=');">node profile</a><br />
This module builds user profiles as nodes, which opens the opportunity to use the <a href="http://drupal.org/project/cck" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/cck?referer=');">Content Construction Kit (CCK)</a>, since it&#8217;s possible to make use of the field types, which are available for CCK. The integration of the views module allows one to easily build customizable user listings or even user searches.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/userpoints" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/userpoints?referer=');">user points</a><br />
This module provides an API for users to gain or lose points for performing certain actions on your site.<br />
In conjunction with other modules, such as the <a href="http://drupal.org/project/userpoints_nc" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/userpoints_nc?referer=');">userpoints nodes and comments</a> users can accumulate points for actions such as posting nodes, commenting or moderation duties.</p></blockquote>
<p><strong><a href="http://drupal.org/project/views" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/views?referer=');">Views</a></strong></p>
<blockquote><p><a href="http://drupal.org/project/views_bulk_operations" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/views_bulk_operations?referer=');">views bulk operations</a><br />
This module augments Views by allowing bulk operations to be executed on the nodes displayed by a view. It does so by showing a checkbox in front of each node, and adding a select box containing operations that can be applied on the selected nodes.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/calendar" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/calendar?referer=');">calendar</a><br />
This module will display any Views date field in calendar formats, including CCK date fields, node created or updated dates, etc. Switch between year, month, and day views. Back and next navigation is provided for all views.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/draggableviews" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/draggableviews?referer=');">draggable views</a><br />
DraggableViews makes rows of a view &#8220;draggable&#8221; which means that they can be rearranged by Drag&#8217;n'Drop. This module makes it possible to organize complex structures with just a few clicks.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/views_showcase" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/views_showcase?referer=');">views showcase</a><br />
This module integrates with Views module, so you can use any content type and fields to be displayed as Showcase. In this first release Views Showcase provides 3 slots where you can put an image, a title and a teaser. The fields are provided by Views module, so you can virtually put any field in these 3 slots. In future versions more slots will be provided.</p></blockquote>
<blockquote><p><a href="http://drupal.org/project/views_slideshow_imageflow" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/views_slideshow_imageflow?referer=');">views imageflow</a><br />
This solution is known as the Cover Flow technique, which has been developed by the artist Andrew Coulter Enright. Now &#8211; since being acquired by Apple &#8211; it is used in iTunes and the file browser of Apples OSX.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.anselmbradford.com/2009/10/22/october-2009-list-of-useful-drupal-modules/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>2 invaluable Drupal development tips: list all available variables and backtrace a page</title>
		<link>http://blog.anselmbradford.com/2009/03/14/2-invaluable-drupal-development-tips-list-all-available-variables-and-backtrace-a-page/</link>
		<comments>http://blog.anselmbradford.com/2009/03/14/2-invaluable-drupal-development-tips-list-all-available-variables-and-backtrace-a-page/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 03:59:49 +0000</pubDate>
		<dc:creator>Ans</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://blog.anselmbradford.com/?p=702</guid>
		<description><![CDATA[The Drupal Devel module includes some invaluable functions that make working with Drupal much much easier. A short list of these functions can be found at this post. One of these is the dpm() command (which I would guess stands for &#8220;Drupal Print Message,&#8221; or at least that&#8217;s how I remember it). Given an array [...]]]></description>
			<content:encoded><![CDATA[<p>The Drupal <a href="http://drupal.org/project/devel" onclick="pageTracker._trackPageview('/outgoing/drupal.org/project/devel?referer=');">Devel</a> module includes some invaluable functions that make working with Drupal much much easier. A short list of these functions can be found <a href="http://www.thingy-ma-jig.co.uk/blog/02-10-2007/hugely-useful-hugely-undocumented" onclick="pageTracker._trackPageview('/outgoing/www.thingy-ma-jig.co.uk/blog/02-10-2007/hugely-useful-hugely-undocumented?referer=');">at this post</a>. One of these is the <code>dpm()</code> command (which I would guess stands for &#8220;Drupal Print Message,&#8221; or at least that&#8217;s how I remember it). Given an array or object, this function will output a div structure at the top of your page that you can use to visually walk through the contents of either of these sets of data. Combine this with existing PHP debugging and instrospection commands and you have a very useful and powerful development tool at your disposal. For example, place this at the top of your Drupal theme&#8217;s <code>page.tpl.php</code> template:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&lt;</span>?php
	 dpm<span style="color: #66cc66;">&#40;</span> get_defined_vars<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
?<span style="color: #66cc66;">&gt;</span></pre></div></div>

<p>Now when you navigate to your page you will have a clickable bar at the top that will list all variables available to the page when it loads, which you can access via the code in your theme page template if you want. </p>
<p><img src="http://blog.anselmbradford.com/wp-content/uploads/2009/03/dpm_get_defined_vars.png" alt="dpm_get_defined_vars" title="dpm_get_defined_vars" width="353" height="348" class="aligncenter size-full wp-image-703" /></p>
<p>Or maybe you would like to know what path your page took through Drupal&#8217;s architecture to its final incarnation, use <code>dpm()</code> with PHP&#8217;s <code>debug_backtrace()</code> function. This will output an array of each function your page contents went through before they were output to the browser, plus it shows the location of these functions. Try this in place of the code snippet above:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&lt;</span>?php
	 dpm<span style="color: #66cc66;">&#40;</span> debug_backtrace<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
?<span style="color: #66cc66;">&gt;</span></pre></div></div>

<p><img src="http://blog.anselmbradford.com/wp-content/uploads/2009/03/dpm_debug_backtrace.png" alt="dpm_debug_backtrace" title="dpm_debug_backtrace" width="531" height="374" class="aligncenter size-full wp-image-704" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.anselmbradford.com/2009/03/14/2-invaluable-drupal-development-tips-list-all-available-variables-and-backtrace-a-page/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

