Дело в том, что я делаю что-то типа интранет-системы. Каждый термин в ней - это отдел. а описание отдела - это таблица (хтмл) с фамилией руководителя и т.д. Это я к тому, что если использовать views для такой задачи, то теги таблицы меняются на параграфы и в итоге таблица "плывет".
А мне нужно в каждом термине вывести заголовки материалов. просто заголовки без аннотаций. Я зашел в mysite/includes/theme.inc
примерно на строчке 1964 есть такой код:
if ($variables['teaser'] && $node->teaser) {
$variables['content'] = $node->teaser;
}
else if (isset($node->body)) {
$variables['content'] = $node->body;
я закомментировал проверку и вывод анонса:
/* if ($variables['teaser'] && $node->teaser) {
$variables['content'] = $node->teaser;
}*/
/* else*/if (isset($node->body)) {
$variables['content'] = $node->body;
и теперь у меня выходят заголовки, термины и "читать далее", а анонсы - нет! И все это неправильно. А если я вставляю эту функцию в свой template.php, она не работает
Комментарии
хак ядра это не стандартный способ! стандартный способ это темизация и модули
ну хорошо, нестандартные. но вообще-то мои действия больше под тематизацию подходят. так как отключение вывода анонсов в файле, отвечающем за построение темы - ИМХО не хак.
любая правка системных файлов друпала это хак
да ну нафик) а громоздить модули там, где можно обойтись двумя строчками? это же CMF! Кстати некоторые php сниппеты тоже замещают код Друпала...
но впрочем мне все-равно - хак это или нет, а проблему я решил, вот и все
http://drupal.org/node/144376
вот именно, это CMF с продуманным api, а не набор файлов для редактирования
каким образом интересно?
до первого обновления друпала
хммм.... спасибо. а можно как-то сделать то же самое, но не в ядре?
[ru-api=template_preprocess_node]template_preprocess_node[/ru-api]
я эиту функцию и поправил в theme.inс, а что, ее можно еще где-то вписать?
В node.tpl.php:
<?php if ($picture) print $picture; ?>
<?php if ($page == 0) { ?>
"><?php print $title?>
<?php }; ?>
<?php if ($submitted) { ?><?php print $submitted ?><?php } ?>
<?php if ($terms) { ?>
<?php } ?>
<?php if ($links) { ?>
<?php }; ?>
Что-то добавить надо?
Так, поюзав поиск, сделал так:
В своей теме создал файл template.php
В нее скопировал из ядра функции, которые мне нужны, внес изменения, которые мне нужны.
Не работает - в чем ошибка?
Код:
<?php
// Only display the description if we have a single term, to avoid clutter and confusion.
$output .= taxonomy_render_nodes($result);
function phptemplate_theme_taxonomy_term_page($tids, $result, $img) {
drupal_add_css(drupal_get_path('module', 'taxonomy') .'/taxonomy.css');
$output = '';
if (count($tids) == 1) {
$term = taxonomy_get_term($tids[0]);
$description = $term->description;
// Check that a description is set.
if (!empty($description)) {
$output .= '<div class="taxonomy-term-description">';
// Тут мы выводим изображение термина.
if ($img = taxonomy_image_display($term->tid)) $output .= ' <div class="image">'. $img ."</div>\n";
$output .= filter_xss_admin($description);
$output .= '</div>';
}
}
return
$output;}
?>
прокопал дальше:
в page.tpl добавил
<?php print theme (phptemplate_theme_taxonomy_term_page($tids, $result, $img))?>
ошибка missing arguments
помогите кто-нибудь, пожалуйста!!! правильно я все понял?
в темплейт копируешь функции
в пейдж их вызываешь theme?
ну помогите же(((((((( проект горит((( пожалусто!
если переопределяете функции темизации, то theme заменяется на phptemplate, а не добавляется префиксом
спасибо, очень помогли!
а можно помочь с последним вопросом?
а как ее вызвать потом? или она сама заработает?
сама
спс, пробую отписываюсь...
получилось с функцией
<?phpphptemplate_taxonomy_term_page($tids, $result)?>
но c
<?php print theme(phptemplate_preprocess_node(&$variables))?>
ничего не выходит! сама функция:
<?php
$variables['date'] = format_date($node->created);
// Flatten the node object's member fields.
function phptemplate_preprocess_node(&$variables) {
$node = $variables['node'];
if (module_exists('taxonomy')) {
$variables['taxonomy'] = taxonomy_link('taxonomy terms', $node);
}
else {
$variables['taxonomy'] = array();
}
if (
$variables['teaser'] && $node->teaser) {$variables['content'] = $node->NULL;
}
elseif (isset($node->body)) {
$variables['content'] = $node->body;
}
else {
$variables['content'] = '';
}
$variables['links'] = !empty($node->links) ? theme('links', $node->links, array('class' => 'links inline')) : '';
$variables['name'] = theme('username', $node);
$variables['node_url'] = url('node/'. $node->nid);
$variables['terms'] = theme('links', $variables['taxonomy'], array('class' => 'links inline'));
$variables['title'] = check_plain($node->title);
$variables = array_merge((array)$node, $variables);
?>