Всем привет!
Упёрся на этот раз в вывод содержимого ноды...
Модуль-нода, подготавливает данные в hook_load().
Если в теме создать файл node-type.tpl.php, то всё нормально отображается, но вот
как мне сделать, чтобы при установке модуля, можно было просматривать созданные
материалы при любой установленной теме...
Используя зачатки логики, сообразил, что в месте с модулем должен быть файл типа
node-type.tpl.php, но как мне теперь объяснить Друпал свои намерения?
Порылся в книжке, но так и не нашёл...
Комментарии
hook_theme
а по моему для таких случаев надо подсунуть в реестр путь для записи 'node':
<?php
function имяМодуля_theme_registry_alter(&$theme_registry) {
$theme_registry['node']['theme paths'][] = drupal_get_path('module', 'имяМодуля');
}
?>
Спасибо за отзывы!
2Softovick
Почти разобрался с темизацией, но осталась пара вопросов:
<?php
function mynode_theme(){
return array(
'mynode_node' => array(
'arguments' => array('node' => NULL),
'template' => 'node-mynode',
),
);
}
function
mynode_view($node, $teaser = FALSE, $page = FALSE){
node_prepare($node, $teaser = FALSE);
$node->content['here_content_name'] = array(
'#value' => theme('mynode_node', $node),
'#weight' => 2
);
return $node;
}
function
theme_mynode_node($node){
$output = '<div class="tester_class">'.$node->source['name'].'</div>';
return $output;
}
?>
Эти функции работают, но хотелось бы вынести функцию темизации в отдельный файл.
Я создаю файл "node-mynode.tpl.php", удаляю функцию темизации, её содержимое переношу
в файл, но возникает ошибка, на мой взгляд вполне логичная:
warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'theme_mynode_node' not found or invalid function name in C:\wamp\www\test\includes\theme.inc on line 656.
Хотя нашёл два источника где именно таким способом выносился код темизации...
2natbampo
У меня
hook_theme_registry_alter() не срабатывает...
Если честно, не совсем понял то, что делает функция.
Она указывает Друпал, где искать файл для темизации данного типа материала?
Эта функция применима только для нод?
'file' => 'modules/user/user.pages.inc',
'theme path' => 'modules/user',
И можно ли будет в теме переопределить вывод данного типа материала
или эта функция жёстко определяет модульный шаблон?
Ну вот смотри. Проверяю у себя:
Имеется модуль joke, в этой же папке шаблон(node-joke.tpl.php) для этого типа узла.
Пишу:
<?php
function joke_theme_registry_alter(&$theme_registry) {
$theme_registry['node']['theme paths'][] = drupal_get_path('module', 'joke');
}
?>
указал что когда движок будет этот узел показывать(theme('node')), чтобы поискал шаблон и в этой папке.
Его сразу найдет и будет работать.
Тема может этот шаблон переопределить(в template.php):
<?php
function phptemplate_preprocess_node(&$variables){
if ($variables['node']->type == 'joke') {
$variables['template_file'] = 'node-joke2';
}
}
?>
при этом node-joke2.tpl.php лежит в папке темы - он и подгрузится
Реестр понятно у тебя девелом перестраивается каждый раз?