Свой шаблон для конкретного нода

Главные вкладки

Аватар пользователя Jenia Jenia 6 февраля 2008 в 22:57

Сколько не искал и не пробовал, никак не смог понять как для нода с id=20 сделать свой шаблон вывода. Мне нужен шаблон именно для нода, а не для всей страницы. Добавил шаблон с именем page-node-20.tpl.php , но он перерисовывает всю страницу, а мне нужно, чтобы он отвечал только за основной текст. Меню, различные дополнительные блоки должны оставаться как и на всех страницах. Как такое реализовать? Кто-то может подсказать?

Комментарии

Аватар пользователя Jenia Jenia 7 февраля 2008 в 1:37

Действительно, то, что нужно.
У меня в файле template.php есть функция _phptemplate_variables(). Вот её код:

function _phptemplate_variables($hook, $vars) {
  if ($hook == 'page') {

    if ($secondary = menu_secondary_local_tasks()) {
      $output = '<span class="clear"></span>';
      $output .= "<ul class=\"tabs secondary\">\n". $secondary ."</ul>\n";
      $vars['tabs2'] = $output;
    }

    // Hook into color.module
    if (module_exists('color')) {
      _color_page_alter($vars);
    }
    return $vars;
  }
  return array();
}

С учётом предложенного Вами варианта изменил её код на такой:

function _phptemplate_variables($hook, $vars) {
  if ($hook == 'page') {

    if ($secondary = menu_secondary_local_tasks()) {
      $output = '<span class="clear"></span>';
      $output .= "<ul class=\"tabs secondary\">\n". $secondary ."</ul>\n";
      $vars['tabs2'] = $output;
    }

    // Hook into color.module
    if (module_exists('color')) {
      _color_page_alter($vars);
    }
    return $vars;
  }
  elseif ($hook == 'node') {
      $vars['template_files'] = array('node-'. $vars['nid']);
      return $vars;
  }
  return array();
}

Я всё правильно сделал? Или что-то надо поправить?

Аватар пользователя Jenia Jenia 7 февраля 2008 в 6:35

У меня всё работает. Просто в предложенном Вами варианте написано так:

function _phptemplate_variables($hook, $vars = array()) {

, а у меня так:

function _phptemplate_variables($hook, $vars) {

Вот я и сомневаюсь, не приведёт ли такое отличие к ошибкам?