Здравствуйте.
Возможно ли в Drupal для каждого шаблона вывода модуля создать собственный html шаблон?
Т.е. например создаю тему. В области контента вывожу код статичной страницы.
А как для модуля например таксономии, вывести список тизеров с нужным мне html и css классами?
Комментарии
тож интересно
Как правило, они имеют уникальное сочетание id и сlass. Переоформляйте через css. Посмотрите, как это сделано в стандартных темах оформления, например, Garland.
перекрыть функции вывода ...
Возможно ли в Drupal для каждого шаблона вывода модуля создать собственный html шаблон?
В теме можно перекрыть те "шаблоны вывода", которые сделаны в модуле с помощью функций theme_XXX. Например, в модуле comment есть функция theme_comment_controls. Чтобы ее перекрыть в теме в template.php пишем:
function mytheme_comment_controls($form) {
return _phptemplate_callback('comment_controls', array('form' => $form));
}
И пишем в теме файл comment_controls.tpl.php. Вроде так.
А как для модуля например таксономии, вывести список тизеров с нужным мне html и css классами?
Конкретно в этом примере не получится. Т. к. theme-функции не используются, а в теме только их можно перекрыть.
Посоветовали функцию theme_taxonomy_term_page.
Пока не разобрался как ей воспользоваться.
Подскажите, пожалуйста.
Подождите следующей версии (уже скоро). Там это все намного проще.
в следующей версии просто можно это делать отдельным файлом, а в 5ке это описывается функцией файла template.php
Посоветовали функцию theme_taxonomy_term_page.
Пока не разобрался как ей воспользоваться.
Подскажите, пожалуйста.
Не получится. Нету функции theme_taxonomy_term_page и поэтому ее нельзя перекрыть в теме. Есть функция taxonomy_term_page, ее не перекрыть.
edhel, а стандартный вывод как формируеться?
его можно изменить?
Формируется функцией taxonomy_term_page, которая вызывает функцию taxonomy_render_nodes:
<?php
function taxonomy_render_nodes($result) {
$output = '';
if (db_num_rows($result) > 0) {
while ($node = db_fetch_object($result)) {
$output .= node_view(node_load($node->nid), 1);
}
$output .= theme('pager', NULL, variable_get('default_nodes_main', 10), 0);
}
else {
$output .= ''. t('There are currently no posts in this category.') .'';
}
return $output;
}
?>
Эта функция просто выводит список ТИЗЕРОВ нод. Саму эту функцию не заменить, но можно изменить вывод самих тизеров в теме: node.tpl.php используя перменную $teaser. Если не хочется менять отображение всех тизеров, а только тизеров для страниц taxonomy/term/TID, то в node.tpl.php можно написать условие:
<?php
if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(3)) && $teaser) {
print "[ $node->title ]"; // новый шаблон
} else {?>
здесь старый шаблон из node.tpl.php
<?php }?>
Спасибо получилось. возникло пару вопросов:
1) А можно все тизеры завернуть в тег ul
2) Массив доступных ссылок $links, а можно ли получить только ссылку read more?