(phptemplate) настройка page для определенного диапазона нодов, принадлежащих одной категорий.

Аватар пользователя klevunin klevunin 6 мая 2008 в 10:58

Всем привет

Столкнулся со следующей проблемой.

У меня есть категория на сайте. Назовем ее news
И в ней есть 500 нодов имеющих url от /news/10.html до /news/500.html
Как я могу задать им свой уникальный темплайт страницы (page.tpl.php)

У меня стоит модуль path и pathauto сответсвенно.
Так же у меня прописана в темплайт.php

1.      function _phptemplate_variables($hook, $vars = array()) {
2.        if ($hook=='node' or $hook=='page') {
3.            if (!module_exists('path')) {
4.              break;
5.            }
6.            $url_alias = drupal_get_path_alias('node/' . $vars['node']->nid);
7.            if ($url_alias == ('node/' . $vars['node']->nid)) {
8.              break;
9.            }
10.           $suggestions = array();
11.           $path_parts = explode('/', $url_alias);
12.           $template_filename = $hook;
13.           foreach ($path_parts as $path_part) {
14.             $template_filename = $template_filename . '_' . $path_part;
15.             $suggestions[] = $template_filename;
16.           }
17.           $vars['template_files'] = $suggestions;
18.       }
19.       return $vars;
20.     }

Если я создаю файлик page-news.tpl.php То правило действует только на /news/ а на /news/10.html не действует. А берется просто page.tpl.php
Что очень печально.. Прописывать page-news-10.tpl.php тоже не работает.

Если создать page-node-10.tpl.php будет все работаь. Но создавать почти 500 файлов не охота. Лень. Smile

Как мне быть?

Может можно как-то прописать по типу. Page-node-parametr.tpl.php
И это прописать в templaite.tpl.php ??? Просто я не очень как програмист…Либо функция описанная тут http://www.drupal.ru/node/3558 phptemplate_variables неверна???

ПОМОГИТЕ ПОЖАЛУйСТА.

Заранее спасибо

Комментарии

Аватар пользователя glu2006 glu2006 6 мая 2008 в 11:30

Попробуйте создать page-node.tpl.php и node-news.tpl.php для обработки новостей, не уверен что поможет, но постигать истину можно и опытно - экспериментальным путем.

Аватар пользователя klevunin klevunin 6 мая 2008 в 11:36

Неподойдет. У меня есть много разных категорий. Но темплайт для news он совершенно другой и одной node-news.tpl.php не обойти. Если только page не превратить в node
Хотя попробывать стоит..... Сейчас попробую

Аватар пользователя klevunin klevunin 6 мая 2008 в 11:39

хех спасибо. Не хитрыми монипуляциями можно получить то что нужно!!! респект

Аватар пользователя klevunin klevunin 6 мая 2008 в 11:42

Хех не поиогло куча нужных параметров работающих для page не работает для node
Печально..

Помогите плиз. Точно решение есть!!

Аватар пользователя player player 6 мая 2008 в 12:39

А причем тут node-news.tpl.php ? У вас news это тип материала? Я так понял, что news это просто путь прописанный в pathauto. Если так то используйте аргументы адресной строки. Или сделайте тип материала news.

Аватар пользователя klevunin klevunin 6 мая 2008 в 13:27

Тип материала news есть
Работает page-news.tpl.php для страницы news
Но вот для страниц news/10.html не работает темплайт page-news.tpl.php а работает просто page.tpl.php

Вот и загвостка у меня как заставить работать темплайт для внутриних так сказать страниц рубрики news

Аватар пользователя klevunin klevunin 6 мая 2008 в 14:03

в том то и страно. Что должна а не работает....

Наверняка нужно для это го что тот в файле темплайт пхп прописывать.
А вот что?

Аватар пользователя stddos stddos 2 июля 2009 в 22:29

Прописываем в template.php

<?php function ИМЯ_ТЕМЫ_preprocess_page(&$variables) {
  if (
$variables['node']->type == "ТИП_МАТЕРИАЛА") {
    
$variables['template_files'][] = 'page-node-ТИП_МАТЕРИАЛА';
  }
  elseif (
$variables['node']->type == "ТИП_МАТЕРИАЛА_2") {
    
$variables['template_files'][] = 'page-node-ТИП_МАТЕРИАЛА_2';
  }  
}
?>

ИМЯ_ТЕМЫ и ТИП_МАТЕРИАЛА заменяем на ваши. Чистим кэш. После этого становятся доступны шаблоны page-node-ТИП_МАТЕРИАЛА.tpl.php
А и это всё работает на 6 друпале, не знаю насчет 5

Аватар пользователя kirbaranov kirbaranov 3 августа 2009 в 21:49

"stddos" wrote:
После этого становятся доступны шаблоны page-node-ТИП_МАТЕРИАЛА.tpl.php

Ай, спасибо!

Аватар пользователя lopata24 lopata24 20 октября 2009 в 13:32

Запутался окончательно и бесповоротно! Зато нашел эту тему, где может мне помогут...
Мне нужно было сделать дизайн отдельных групп
http://мойсайт/group/video и http://мойсайт/group/foto (+ впоследствии может быть пары групп), на при этом, чтобы дизайн обычных групп, например
http://мойсайт/group/sport или http://мойсайт/group/music был как и у всех остальных.
Я решил это созданием страниц page-group-foto.tpl.php, page-group-video.tpl.php, page-group.tpl.php
и прописыванием в tempates.php вот этого кода, который я нашел на одном из полезных сайтов для друпала

<?phpfunction 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-node-edit.tpl.php и page-node-add.tpl.php они стали подчиняться почему-то страницам page-blog.tpl.php и page.tpl соответственно (((

как заставить по-другому или
1) отображать страницы групп, из соотв файлов
или
2) сделать так, чтобы в нынешней ситуации корректно работали страницы page-node-edit.tpl.php и page-node-add.tpl.php