Темизация всей страницы в соответствии с типом ноды

Прислано: Рено Гринлиф

чт, 21/10/2010 - 16:15

Для темизированного вывода материала определённого типа следует создать файл node-типматериала.tpl.php. Но в этом файле задаётся вывод только части страницы (содержимое переменной $content).
А как можно сделать нечто подобное со всей страницей? Что-то в духе page-типматериала.tpl.php.
Делаю интернет-магазин и по эскизам дизайнеров страница с описанием продукта принципиально отличается от остальных страниц сайта.
Моё решение не очень красивое (файл page.tpl.php):

<?php 
if($node->type=='product'){ ?>
//Вывод карточки товара.
<? } else { ?>
//Вывод обычной страницы.
<?php ;}; ?>

Есть ли стандартные и более продуманные средства решения задачи?

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано xxandeadxx в чт, 21/10/2010 - 16:35.

http://www.google.com/search?client=opera&rls=ru&q=page.tpl.php+%D0%B2+%...


Опубликовано oboroten в чт, 21/10/2010 - 18:33.

или тут http://www.drupal.ru/node/36403


Опубликовано Рено Гринлиф в пн, 25/10/2010 - 07:51.

Отлично, спасибо, помогло.
Слегка сократил код, и, думаю, неплохо было бы добавить комментарии. Поправьте, пожалуйста, если что не так.

/*Следует добавить в файл template.php в папке с темой.*/
function phptemplate_preprocess_page(&$variables) {/*Эта функция позволяет добавлять новые или изменять существующие переменные, используемые в шаблоне. $variables - массив этих переменных.*/
if  ($node = menu_get_object()) {/*Если выйдет получить текущую ноду...*/
    $variables['node'] = $node;/*Обновляем переменную $node. Зачем, не знаю. Наверное, предыдущая команда её как-то изменила. У меня нормально работает и без этой строчки.*/
    $variables['template_files'][] = 'page-' . $node->type;/*Указываем название нужного шаблона исходя из типа нашей ноды.*/
   };
};


Опубликовано xxandeadxx в сб, 23/10/2010 - 14:42.

<?php
$variables
['template_files'][] = 'page-' $node->type;
?>


Новое на сайте