For those interested, I've been playing around with multiple templates, and I have a site up and running that uses this simple hack. http://news.plu.edu
I made some changes to the xtemplate theme file to allow for multiple templates. Check out code below.
Put this at the top of the file.
// Get current template
$current_template = variable_get('mxtemplate_template', 'default');
// Get current directory
$current_dir = $_GET["q"];
// Set template directory (look for path match)
$template_directory = mxtemplate_match_paths ($current_dir, $current_template);
Add something like this function to the .theme file
function mxtemplate_match_paths ($curpath, $curtemp){
/*
** Take current path, match against stored paths
** If a match exists, update theme template
** If no match, assign $curtemp as default theme
** Return theme template
*/
// Pages that should use different templates
$page_home = "49"; // Home is nid #49
$page_campus_news = "5"; // Campus News is nid #5
$page_notices = "54"; // Notices is nid #54
$page_events = "130"; // Events is nid #130
$page_plunews = "31"; // PLU News is nid #31
$page_news = "50"; // News is nid #50
$page_archive = "51"; // Archive is nid #51
$page_classifieds = "13"; // Classifieds is nid #13
$page_newsstaff = "320"; // News Staff is nid #320
$page_photoservices = "321"; // Photo Services is nid #321
$page_facultyindex = "318"; // Faculty Experts index is nid #318
$page_facultylist = "319"; // Faculty Experts list is nid #319
$page_speakersindex = "314"; // Speakers Bureau index is nid #314
$page_speakerslist = "317"; // Speakers Bureau index is nid #317
// Adjust the argument incase the page is being viewed through the admin
$check = arg(0, $curpath);
// Set argument
$argument = arg(2, $curpath);
// Assign alternate templates
if($check == "admin"){
$path_template = "admin";
}
elseif($argument == $page_home){
$path_template = "home";
}
elseif($argument == $page_campus_news){
$path_template = "campus-news";
}
elseif($argument == $page_notices){
$path_template = "notices";
}
elseif($argument == $page_events){
$path_template = "events";
}
elseif($argument == $page_plunews){
$path_template = "plu-news";
}
elseif($argument == $page_news){
$path_template = "news";
}
elseif($argument == $page_archive){
$path_template = "archive";
}
elseif($argument == $page_classifieds){
$path_template = "classifieds";
}
elseif($argument == $page_newsstaff){
$path_template = "news-staff";
}
elseif($argument == $page_photoservices){
$path_template = "photo-services";
}
elseif($argument == $page_facultyindex){
$path_template = "faculty-experts";
}
elseif($argument == $page_facultylist){
$path_template = "faculty-experts";
}
elseif($argument == $page_speakersindex){
$path_template = "speakers-bureau";
}
elseif($argument == $page_speakerslist){
$path_template = "speakers-bureau";
}
else{
$path_template = $curtemp;
}
return $path_template;
}
Within the xtemplate_page function add this below "global $mxtemplate;" but before " $mxtemplate->template->assign(array("
// Get current template
$current_template = variable_get('mxtemplate_template', 'default');
// Get current directory
$current_dir = $_GET["q"];
// Set template directory (look for path match)
$template_directory = mxtemplate_match_paths ($current_dir, $current_template);
If you want to play around with this be sure to backup your xtemplate.theme file. This code is just an example. To make it work on your site you'll have to change it a bit.