Всем привет
Столкнулся со следующей проблемой.
У меня есть категория на сайте. Назовем ее news
И в ней есть 500 нодов имеющих url от /news/10.html до /news/500.html
Как я могу задать им свой уникальный темплайт страницы (page.tpl.php)
У меня стоит модуль path и pathauto сответсвенно.
Так же у меня прописана в темплайт.php
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 файлов не охота. Лень.
Как мне быть?
Может можно как-то прописать по типу. Page-node-parametr.tpl.php
И это прописать в templaite.tpl.php ??? Просто я не очень как програмист…Либо функция описанная тут http://www.drupal.ru/node/3558 phptemplate_variables неверна???
ПОМОГИТЕ ПОЖАЛУйСТА.
Заранее спасибо
Комментарии
Попробуйте создать page-node.tpl.php и node-news.tpl.php для обработки новостей, не уверен что поможет, но постигать истину можно и опытно - экспериментальным путем.
Неподойдет. У меня есть много разных категорий. Но темплайт для news он совершенно другой и одной node-news.tpl.php не обойти. Если только page не превратить в node
Хотя попробывать стоит..... Сейчас попробую
хех спасибо. Не хитрыми монипуляциями можно получить то что нужно!!! респект
Хех не поиогло куча нужных параметров работающих для page не работает для node
Печально..
Помогите плиз. Точно решение есть!!
А причем тут node-news.tpl.php ? У вас news это тип материала? Я так понял, что news это просто путь прописанный в pathauto. Если так то используйте аргументы адресной строки. Или сделайте тип материала news.
Тип материала news есть
Работает page-news.tpl.php для страницы news
Но вот для страниц news/10.html не работает темплайт page-news.tpl.php а работает просто page.tpl.php
Вот и загвостка у меня как заставить работать темплайт для внутриних так сказать страниц рубрики news
если 10.html страница типа news то должен работать.
в том то и страно. Что должна а не работает....
Наверняка нужно для это го что тот в файле темплайт пхп прописывать.
А вот что?
На правах апа
Проблему так досих пор не решил....
Прописываем в 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
Ай, спасибо!
Запутался окончательно и бесповоротно! Зато нашел эту тему, где может мне помогут...
Мне нужно было сделать дизайн отдельных групп
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
где модератор-то?