Отдельный шаблон страницы для разных типов нод в Drupal 7

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

Аватар пользователя olgastaf olgastaf 28 сентября 2012 в 20:46

Здравствуйте!
Задача такая - создать отдельный шаблон для разных типов страниц.
Делаю как здесь http://www.drupal.ru/node/58386. Но, поскольку знание php нулевое, получается... плохо
Сначала создала файл page--type--mytype.tpl.php вставила в файл template.php

function mytheme_preprocess_page(&$variables, $hook) {
//some other stuff
if (isset($variables['node'])) {
$variables['theme_hook_suggestions'][] = 'page__type__'. $variables['node']->type;
$variables['theme_hook_suggestions'][] = "page__node__" . $variables['node']->nid;
}
}

Получила такое сообщение
Fatal error: Cannot redeclare business_preprocess_page() (previously declared in /pub/home/academhost10/lifeswheel/sites/all/themes/business/template.php:51) in /pub/home/academhost10/lifeswheel/sites/all/themes/business/template.php on line 130

Смотрю на строку 51 и действительно нахожу там

function business_preprocess_page(&$vars) {
...
...
}

Вставляю код туда
function business_preprocess_page(&$vars) {
if (isset($variables['node'])) {
$variables['theme_hook_suggestions'][] = 'page__type__'. $variables['node']->type;
$variables['theme_hook_suggestions'][] = "page__node__" . $variables['node']->nid;
}
...
}

Ничего не происходит. Обращаю внимание, что у меня function business_preprocess_page(&$vars), а надо
function mytheme_preprocess_page(&$variables, $hook)

Скомбинировала таким образом
function business_preprocess_page(&$variables, $hook, $vars) {
if (isset($variables['node'])) {
$variables['theme_hook_suggestions'][] = 'page__type__'. $variables['node']->type;
$variables['theme_hook_suggestions'][] = "page__node__" . $variables['node']->nid;
}
...
}

Получила то, что хотела, но при этом появляется такое сообщение
Warning: Missing argument 3 for business_preprocess_page(), called in /pub/home/academhost10/lifeswheel/includes/theme.inc on line 1106 and defined in business_preprocess_page() (line 51 of /pub/home/academhost10/lifeswheel/sites/all/themes/business/template.php).

Скажите, пожалуйста, что и где еще нужно исправить?

PS Понимаю, что надо мной, наверное, сейчас все будут ржать. Смейтесь, пожалуйста, только подскажите - как сделать Lol

Комментарии

Аватар пользователя sg85 sg85 28 сентября 2012 в 21:09

Омфг...

...function business_preprocess_page(&$variables){...

Без обид, но женская логика и программирование это супер))

А откуда Вы эти переменные откопали? если не секрет

Аватар пользователя fr1end fr1end 28 сентября 2012 в 23:27

Достаточно всего лишь создать шаблон для определенной ноды
page--project.tpl.php это шаблон для ноды типа проект

Аватар пользователя olgastaf olgastaf 11 октября 2012 в 12:09

И опять проблема с созданием шаблона.
На другом сайте сделала все то же самое (с учетом полученного опыта) - вообще никакого эффекта.
Тема danland
В этой теме есть еще подтема - danblog. И внутренние страницы выводятся по этой подтеме. Может, там что-то надо изменить.
Помогите, кто в курсе, как это делается.
Готова оплатить консультацию.

Аватар пользователя sg85 sg85 12 октября 2012 в 11:51

В функции ваша_тема_preprocess_page в файле template.php обрабатываются\добавляются переменные, которые будут передаваться в шаблон страницы, т.е. вам нужно найти там переменную, которая отвечает за класс для body, и внести изменения в код, который её формирует.