User login

Login/Register
To prevent automated spam submissions leave this field empty.

Drupal World

Stay up-to-date with news on Drupal from around the net.

Switching Drupal tpl.php files at will: Old Switchy McTipplefep's Trick

3
Saturday, October 3, 2009

One of the first lessons they teach you at the School of Drupal Arts, Arcane Sciences and Sorcery is that a tpl.php can have dynamically generated wildcards or “suggestions”. You can see this every day drupal themes: you can simply use the “node.tpl.php” file if you want only one style for a node. Where as if you want different styles for three node types: blog, story & page, you create the following files:

  • node-page.tpl.php
  • node-story.tpl.php
  • node-blog.tpl.php

Obviously, this pattern exists far beyond nodes. For page.tpl.php, user/register can have its own tpl.php file:

  • page-user-register.tpl.php

Where as user/1/edit will be (yes — these suggestions will remove numbers… i think… i was hung over that day in class):

  • page-user-edit.tpl.php

This may be fine and dandy if your agenda is either to build a simple drupal theme with a few exceptions, or to build manly Texas sized drupal themes with enough tpl.php files, and duplicate html code to choke a donkey.

Old Switchy McTipplefep’s trick is for anyone who:

  • wants 3 styles that are shared by 20 blocks
  • wants 4 possible layouts for dozens of pages in a site
  • has 12 node types, but wants them to share 3 styles

The magic happens in your theme’s $theme_name . ‘preprocess‘ . $theme function. Below are examples for how a theme named “example” would do it.


function example_preprocess_node(&$vars) { $node = $vars[‘node’]; // only switch for story type switch($node->type) { case ‘story’: $vars[‘template_files’][] = ‘node-batman’; break; }
}

function example_preprocess_block(&$vars) { // sure why not — we’ll pass our node.tpl.php file to our block // That’s how tpl pimpin works sometimes $vars[‘template_files’][] = ‘node-batman’;
}

read more

Comments (0)

No comments have been posted yet, why not be the first??
Login or register to post comments