Шаблон для конкретного типа материалов, т.е. создать файл собственного шаблона
Например для навигационной линейки breadcrumb.tpl.php
А после изменения шаблона, нужно сообщить Друпалу, чтобы он вызвал файл шаблона, когда нужно отобразить материал.
Для примера с линейкой это будет theme_breadcrumb():
У меня есть несколько шаблонов с разными шапками
например
Шапка1
Шапка2
Шапка3
Для всех story мне ужно использовать Шапку2
т.е. если у story nid=2
я могу сделать файл page-node-2.tpl.php, но node story может быть сотни не дело каждый раз лазить на фтп.
Поэтому мне нужен именно шаблон страницы для типа материала.
Теперь понятно.
Нашел проблему, которая похожа на вашу - Can't get page-story.tpl.php to work
Конечное решение в этой статье упирается в функцию phptemplate_callback():
По-моему логичнее создать страницу со сниппетом, выводящим то, что выводит views. Потому что последний отвечает за отображение содержимого и если что-то надо будет поменять, то придется редактировать и шаблон к вьюсу.
Комментарии
2. Лучше написать новый шаблон для типа материалов
не понял..
Шаблон для конкретного типа материалов, т.е. создать файл собственного шаблона
Например для навигационной линейки breadcrumb.tpl.php
А после изменения шаблона, нужно сообщить Друпалу, чтобы он вызвал файл шаблона, когда нужно отобразить материал.
Для примера с линейкой это будет theme_breadcrumb():
if (!empty($breadcrumb)){
$variables = array(
'breadcrumb' => implode(' * ', $breadcrumb)
);
return _phptemplate_callback('breadcrumb',$variables);
}
}
Мне нужен именно шаблон страницы
У меня есть несколько шаблонов с разными шапками
например
Шапка1
Шапка2
Шапка3
Для всех story мне ужно использовать Шапку2
т.е. если у story nid=2
я могу сделать файл page-node-2.tpl.php, но node story может быть сотни не дело каждый раз лазить на фтп.
Поэтому мне нужен именно шаблон страницы для типа материала.
Теперь понятно.
Нашел проблему, которая похожа на вашу - Can't get page-story.tpl.php to work
Конечное решение в этой статье упирается в функцию phptemplate_callback():
<span style="color: #000000"><span style="color: #0000BB"><?php<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">_phptemplate_variables</span><span style="color: #007700">(</span><span style="color: #0000BB">$hook</span><span style="color: #007700">, </span><span style="color: #0000BB">$vars</span><span style="color: #007700">) {<br /> </span><span style="color: #FF8000">// Node is passed to the node when is rendered as a full page.<br /> </span><span style="color: #007700">if (</span><span style="color: #0000BB">$hook </span><span style="color: #007700">== </span><span style="color: #DD0000">'page' </span><span style="color: #007700">&& isset(</span><span style="color: #0000BB">$vars</span><span style="color: #007700">[</span><span style="color: #DD0000">'node'</span><span style="color: #007700">])) {<br /> </span><span style="color: #0000BB">$vars</span><span style="color: #007700">[</span><span style="color: #DD0000">'template_file'</span><span style="color: #007700">] = </span><span style="color: #DD0000">'page-'</span><span style="color: #007700">. </span><span style="color: #0000BB">$vars</span><span style="color: #007700">[</span><span style="color: #DD0000">'node'</span><span style="color: #007700">]-></span><span style="color: #0000BB">type</span><span style="color: #007700">;<br /> }<br /> <br /> return </span><span style="color: #0000BB">$vars</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?></span></span>
Почитайте обсуждение на английском, очень интересно! Ситуация таже самая!)
Спасибо, работает, а можно что-то сделать со views?
А как тоже самое для шестого друпала лучше сделать не подскажете?
По-моему логичнее создать страницу со сниппетом, выводящим то, что выводит views. Потому что последний отвечает за отображение содержимого и если что-то надо будет поменять, то придется редактировать и шаблон к вьюсу.
для справки нашел рабочий вариант для 6й версии:
function phptemplate_preprocess_page(&$variables) {
if ($node = menu_get_object()) {
$variables['node'] = $node;
$suggestions = array();
$template_filename = 'page';
$template_filename = $template_filename . '-' . $variables['node']->type;
$suggestions = $variables['template_files'];
$suggestions[] = $template_filename;
$variables['template_files'] = $suggestions;
}
}