What Tim is describing at the end of his message might be alittle confusing but is VERY essential. The page template suggestions and indeed all template suggestions use "original paths" (e.g. node/15) and not path aliases (news/my-name-is). This makes using them with out specific template suggestions (on node type, etc) in the preprocess function almost useless in most of my cases.
Tim is also right in alluding to the node.tpl.php template files which, by default DO load conditionally on node type. If you are just looking to modify the node display contents look here. If you need to modify contents outside this page then youll have to live with a little code duplication in page template or conditionally include the header and footer sections as includes(). Good luck, -mf On Wed, Jan 6, 2010 at 7:02 AM, T L <[email protected]> wrote: > Hi Wang, > > What kind of content are you trying to customize? If it's a node, you can > do something like node-my_node_type.tpl.php. This would change the theme > around the various node types, but use a common page.tpl.php file to supply > the header, menu, footer, etc. > > You can override all of the *.tpl.php files like block, page, comment, etc > in slightly different ways. Which is generally, I think, how you would do > something like this dependent on the kind of content you want to theme. As > a specific example, you can just create page-news.tpl.php for a unique > ?q=news theme. (There's a gotcha though, so just make sure it's the > original path, you will need to adjust if you use path aliasing like > path_auto.) > > Cheers, > Tim > > On Wed, Jan 6, 2010 at 6:50 AM, Wang Zi Feng <[email protected]> wrote: >> >> Hi, >> >> There is a rookie question. >> >> I use template_preprocess_page function in a module to specify a template >> file (news.tpl.php) based on the hook_menu path (?q=news), utilizing the >> news.tpl.php every time click on ?q=news, it works fine. >> >> But I have to copy the footer&header from page.tpl.php to the new template >> file (news.tpl.php) to print them, I wonder if there is an approach to >> inherit automatically the footer and header section? >> >> here is the code >> >> function news_menu(){ >> $items['news'] = array( >> 'title' => 'News', >> 'page callback' => 'news_page_default', >> 'access callback'=>TRUE, >> 'type' => MENU_CALLBACK, >> ); >> >> return $items; >> } >> >> function template_preprocess_page(&$variables){ >> >> if(drupal_strtolower(arg(0))=='news'){ >> $variables['template_file']='news' ; >> } >> >> } >> >> Thanks >> >> Wang >> > > > > -- > Tim Loudon > (781) 686-6096 >
