If you ever wondered how to change the page.tpl.php for a custom content type you’ve found out that by default Drupal 6 doesn’t know how to do it.

It’s “fixed” easily by adding the following code:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    /**
     * Override or insert PHPTemplate variables into the templates.
     */
    function phptemplate_preprocess_page(&$vars) {
      // Add per content type pages
      if (isset($vars['node'])) {
        // Add template naming suggestion. It should alway use hyphens.
        // If node type is "custom_news", it will pickup "page-custom-news.tpl.php".
        $vars['template_files'][] = 'page-'. str_replace('_', '-', $vars['node']->type);
      }
    }