Отдельный файл page.tpl.php для каждого типа материала с помощью сниппета

Главные вкладки

Аватар пользователя Bronx Bronx 18 мая 2010 в 0:30

Помогите решить проблему со сниппетом, пожалуйста.

Есть сайт, в котором много типов материала.
Для каждого типа материала должен быть свой уникальный макет, внешний вид.

По сути дела для каждого типа материалов нужен отдельный файл page.tpl.php.

Нашел способ как это сделать - http://www.startdrupal.com/node/59

Вставить в template.php код:

<?php
function phptemplate_preprocess_page(&$variables) {
if  (
$node menu_get_object()) {
    
$variables['node'] = $node;
    
$suggestions = array();
    
$template_filename 'page';
    
$template_filename $template_filename '-' $variables['node']->type;
    
$suggestions[] = $template_filename;
    
$variables['template_files'] = $suggestions;
   }
}
?>

Вставляю перезагружаю сайт и выводится сообщение:
Fatal error: Cannot redeclare phptemplate_preprocess_page() (previously declared in ***.ru/sites/all/themes/premier/template.php:46) in ***.ru/sites/all/themes/premier/template.php on line 114

Кто-нибудь с подобным сталкивался?

Комментарии

Аватар пользователя Bronx Bronx 18 мая 2010 в 1:34

Да, конечно. Сначала разместил шаблоны типа page-nodetype.tpl.php, прописал код в template.php, сохранил, обновил браузер и ошибка

Аватар пользователя Bronx Bronx 18 мая 2010 в 1:56

Нашел в коде template.php кусок:

/**
 * Override or insert PHPTemplate variables into the templates.
 */

function phptemplate_preprocess_page(&$vars) {
  $vars['tabs2'] = menu_secondary_local_tasks();

  // Hook into color.module
  if (module_exists('color')) {
    _color_page_alter($vars);
  }
}

его удалить?

Аватар пользователя Bronx Bronx 18 мая 2010 в 2:05

Ребята, спасибо за помощь, все получилось.
Удалил

/**
 * Override or insert PHPTemplate variables into the templates.
 */

function phptemplate_preprocess_page(&$vars) {
  $vars['tabs2'] = menu_secondary_local_tasks();
 
  // Hook into color.module
  if (module_exists('color')) {
    _color_page_alter($vars);
  }
}

и сниппет заработал!