Различные page.tpl.php в зависимости от условий
Иногда необходимо, чтобы некоторые страницы имели свой уникальный основной шаблон (layout, он же page.tpl.php).
Самый простой способ добиться этого, это создать в папке темы файл с именем на основе url. Например при генерации страницы mysite.ru/search Drupal будет искать в папке темы файл с именем page--search.tpl.php и если он существует, то будет использовать его, вместо стандартного. По такому принципу можно создавать свои layout-ы для определённых нод (например page--node--223.tpl.php для темизации страницы mysite.ru/node/223) или терминов таксономии (page--taxonomy--term--85.tpl.php для темизации страницы mysite.ru/taxonomy/term/85). Подробнее в официальном руководстве.
Но что делать если основной шаблон нужно использовать больше одного раза, и в зависимости от каких-нибудь условий, например для нод с nid равным 1 или 99.
На помощь приходит функция предварительной обработки страницы. В template.php добавляем:
function THEMENAME_preprocess_page(&$vars) {
// page-someword.tpl.php для нод с nid равным 1 или 99
if (isset($vars['node']) && ($vars['node']->nid == 1 || $vars['node']->nid == 99)) {
$vars['theme_hook_suggestions'][] = 'page__someword';
}
}
Дальше в папке темы создаём файл page--someword.tpl.php, очищаем кэш, и смотрим результат.
Написанное актуально для
Drupal 7
Комментарии:
Нету комментариев для вывода...