Помогите решить проблему со сниппетом, пожалуйста.
Есть сайт, в котором много типов материала.
Для каждого типа материала должен быть свой уникальный макет, внешний вид.
По сути дела для каждого типа материалов нужен отдельный файл 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
Кто-нибудь с подобным сталкивался?
Комментарии
А шаблоны на виды материала разместили в папке темы?
Да, конечно. Сначала разместил шаблоны типа page-nodetype.tpl.php, прописал код в template.php, сохранил, обновил браузер и ошибка
у вас два раза определена функция phptemplate_preprocess_page
А что это значит? как решить эту проблему?
Убрать дубликат функции
Нашел в коде 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);
}
}
его удалить?
Ребята, спасибо за помощь, все получилось.
Удалил
* 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);
}
}
и сниппет заработал!
не обязательно, просто скомбинируйте, чтобы функция один раз объявлялась