суббота, 11 декабря 2010 г.

Специальный page.tpl.php в зависимости от url адреса материала

Для того чтобы изменить макет определенного материала (например example.com/music), надо использовать первоначальный адрес – node/xx, где xx – идентификатор материала. Но что делать, если мы используем модуль Path и в придачу желаем чтобы не только сам материал example.com/music, но и материалы типа example.com/music/1, example.com/music/2 и т.д. имели уникальный одинаковый макет page.tpl.php. Для этого надо использовать специальный сниппет. В файл template.php поместите следующий код:

function phptemplate_preprocess_page(&$vars) {
  if (module_exists('path')) {
    $alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q']));
    if ($alias != $_GET['q']) {
      $suggestions = array();
      $template_filename = 'page';
      foreach (explode('/', $alias) as $path_part) {
        $template_filename = $template_filename . '-' . $path_part;
        $suggestions[] = $template_filename;
      }
    }
    $vars['template_files'] = $suggestions;
  }
}

Теперь с помощью файла page-music.tpl.php вы можете изменить макет материала по адресу example.com/music и всех остальных материалов в данной категории.

Оригинал статьи: http://www.startdrupal.com/node/60