Drupal: Creating custom node templates
Posted May 28, 2009on:
It has somewhat of a steep learning curve, but Drupal is amazing for allowing you to build flexible, complex websites with lots of functionality in very little time.
For a site I’m working on, we had several custom content types coming through the default node template (
node.tpl.php) in our customised theme.
This was fine and dandy for quick development, but then the time came to customise the node page for each content type.
First things first, you need a custom node template. Save the
node.tpl.php file as
node-[your node name].tpl.php and you’ve created a custom node template. (This means if your node type is ‘audio’, you’d save the file as
Now we need to customise the template to suit our needs.
If you dive into a standard node template you’ll see something (unhelpful) like this where the content goes:
Um, OK. So how do you get at the functions which compile the content before it gets to this stage? Well, you probably can, but the easier way is to avoid this step and just access the default
$node object which drupal gives you access to with each ‘page’.
To find out what’s hiding inside the $node object, simply do something like this:
(Yes, I like print_r())
The resulting cacophony in your page source will show you all the node attributes and properties you have access to. Chances are you’ll be able to access these directly to create the customised node template you need.