Различные 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
Теги:
template.php, темизация
Добавлено: 22 Июля 2018 10:12:36 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...