Не работает шаблон node-type.tpl.php

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

Аватар пользователя ech ech 7 мая 2008 в 13:51

Написано, что для вывода конкретного типа материала необходимо в теме создать шаблон node-type.tpl.php
В шестой версии не работает.
Работает только node.tpl.php, то есть могу переопределить общий шаблон вывода
Кто нибудь знает как это делается в шестой версии?

Комментарии

Аватар пользователя ech ech 17 мая 2008 в 15:28

Я при помощи модуля cck создал новый тип clip, я создаю в каталоге темы node-clip.tpl.php, и друпал его не исполняет.
Тип отношения тем я не указывал
Может я неправильно настроил тему?

Аватар пользователя sas@drupal.org sas@drupal.org 17 мая 2008 в 15:46

>> Написано, что для вывода конкретного типа материала необходимо в теме создать шаблон node-type.tpl.php
Это отвечает процедура
/**
* Prepare the values passed to the theme_page function to be passed
* into a pluggable template engine. Uses the arg() function to
* generate a series of page template files suggestions based on the
* current path. If none are found, the default page.tpl.php is used.
*/
function phptemplate_page($content, $show_blocks = TRUE) {
Она определена в phptemplate.engine
И может быть переопрделена в template.php Вашей темы

Смотрите в нее

Аватар пользователя ech ech 17 мая 2008 в 16:07

Такой процедуры phptemplate_page в phptemplate.engine нет, есть только в themes.inc

function template_preprocess_node(&$variables) {
.............................................
// Clean up name so there are no underscores.
$variables['template_files'][] = 'node-'. $node->type;
}
а для блоков

function template_preprocess_block(&$variables) {
.............................................
$variables['template_files'][] = 'block-'. $variables['block']->region;
$variables['template_files'][] = 'block-'. $variables['block']->module;
$variables['template_files'][] = 'block-'. $variables['block']->module .'-'. $variables['block']->delta;
}

Я в друпале не работал, что мне перейти на пятую версию?

В общем и вывод для блоков не работает, странно но для page.tpl.php всё работает

Аватар пользователя sas@drupal.org sas@drupal.org 17 мая 2008 в 18:24

Ставьте туда
// Clean up name so there are no underscores.

// start
ob_start(); // Start output buffering
print_r($node);
$plain = ob_get_contents();
ob_end_clean(); // End buffering and discard

if ($handle = fopen($_SERVER['DOCUMENT_ROOT'] . base_path() . "node_".$node->type.".txt", 'w+')) {
fwrite($handle, $plain. "\n");
fclose($handle);
}

// end
$variables['template_files'][] = 'node-'. $node->type;
}

И посмотрите в корне сайта появятся файлы, после того как сходите на страницу материала - что там за тип Smile

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

Запутался окончательно и бесповоротно! Зато нашел эту тему, где может мне помогут...
Мне нужно было сделать дизайн отдельных групп
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

Аватар пользователя pilotmaks2 pilotmaks2 25 июня 2010 в 14:22

тоже самое. Smile

Проблема решилась, когда я из базовой темы Zen (я делаю тему на основе zen), скопировал файл node.tpl.php в папку своей темы. А файл node-type11.tpl.php (т.е. для страниц типа type11) тоже в папку своей темы.

Следовал указанию на странице http://drupal.org/node/17565 "NOTE: When using phptemplate node-[type].tpl.php suggestions, there must also be an original node.tpl.php template present in your theme directory or the template suggestion is ignored.
This is also the case for subthemes. Just copy the parent themes node.tpl.php into your subtheme folder and refresh the theme cache."

Всем учить английский! Smile (это я про себя)

Аватар пользователя Алексей Дёмин Алексей Дёмин 9 ноября 2010 в 16:31

"Химический Али" wrote:
Пашет. Гарленд, собака, кривоват :)

Можно поподробнее?
Тему писал не я, вроде бы на основе minnelly, темизация блоков срабатывает, а вот ноды ни как не темизируются...

Аватар пользователя kombin kombin 10 декабря 2011 в 12:01

А так будет работать (сильно не пинайте):


<?php if ($node->type=="имя_типа_ноды"): ?>
 код шаблона        
<?php else: ?>

в node.tpl.php?