Темизация всей страницы в соответствии с типом ноды
Прислано: Рено Гринлиф
чт, 21/10/2010 - 16:15
Для темизированного вывода материала определённого типа следует создать файл node-типматериала.tpl.php. Но в этом файле задаётся вывод только части страницы (содержимое переменной $content).
А как можно сделать нечто подобное со всей страницей? Что-то в духе page-типматериала.tpl.php.
Делаю интернет-магазин и по эскизам дизайнеров страница с описанием продукта принципиально отличается от остальных страниц сайта.
Моё решение не очень красивое (файл page.tpl.php):
<?php if($node->type=='product'){ ?> //Вывод карточки товара. <? } else { ?> //Вывод обычной страницы. <?php ;}; ?>
Есть ли стандартные и более продуманные средства решения задачи?
- Рено Гринлиф's blog
- Для комментирования войдите или зарегистрируйтесь
http://www.google.com/search?client=opera&rls=ru&q=page.tpl.php+%D0%B2+%...
- Для комментирования войдите или зарегистрируйтесь
или тут http://www.drupal.ru/node/36403
- Для комментирования войдите или зарегистрируйтесь
Отлично, спасибо, помогло.
Слегка сократил код, и, думаю, неплохо было бы добавить комментарии. Поправьте, пожалуйста, если что не так.
/*Следует добавить в файл template.php в папке с темой.*/ function phptemplate_preprocess_page(&$variables) {/*Эта функция позволяет добавлять новые или изменять существующие переменные, используемые в шаблоне. $variables - массив этих переменных.*/ if ($node = menu_get_object()) {/*Если выйдет получить текущую ноду...*/ $variables['node'] = $node;/*Обновляем переменную $node. Зачем, не знаю. Наверное, предыдущая команда её как-то изменила. У меня нормально работает и без этой строчки.*/ $variables['template_files'][] = 'page-' . $node->type;/*Указываем название нужного шаблона исходя из типа нашей ноды.*/ }; };
- Для комментирования войдите или зарегистрируйтесь
<?php
$variables['template_files'][] = 'page-' . $node->type;
?>- Для комментирования войдите или зарегистрируйтесь



Комментарии