Drupal: Customize Entire Page Template Based On Content Type
I have a couple of projects that call for node content to be published outside of the normal center-of-the-page boundary. But the default template override system accounts for individual nodes, or even overriding the node display area for a given content type, but not the whole page. A Google search turned up some possibilities, but based on this page, I was able to find the right answer for Drupal 5.x, in templates.php:
1 <?php 2 function phptemplate_variables($hook, $vars = array()) 3 { 4 5 switch ($hook) 6 { 7 case 'page': 8 9 if ('node' == arg(0)) 10 { 11 $vars['template_files'] = 'page' . $vars['node']->type; 12 } 13 14 break; 15 } 16 17 return $vars; 18 } 19 20 ?>
This means if you have a content type called event and you want it to have a custom page layout, just copy page.tpl.php to page_event.tpl.php. Dunno why this isn't part of the default theme system, but maybe it's an un-Drupal thing to want to do.
EDIT:Floyd in the comments points to a nice improvement he made on this technique.




