Выводить только заголовки. Скрыть анонсы. Темизация.

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

Аватар пользователя otmoroz otmoroz 22 июня 2010 в 16:58

Дело в том, что я делаю что-то типа интранет-системы. Каждый термин в ней - это отдел. а описание отдела - это таблица (хтмл) с фамилией руководителя и т.д. Это я к тому, что если использовать 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, она не работает

Комментарии

Аватар пользователя xxandeadxx xxandeadxx 22 июня 2010 в 17:09

"otmoroz" wrote:
И все это стандартными средствами :)

хак ядра это не стандартный способ! стандартный способ это темизация и модули

Аватар пользователя otmoroz otmoroz 22 июня 2010 в 17:13

ну хорошо, нестандартные. но вообще-то мои действия больше под тематизацию подходят. так как отключение вывода анонсов в файле, отвечающем за построение темы - ИМХО не хак.

Аватар пользователя otmoroz otmoroz 22 июня 2010 в 17:17

да ну нафик) а громоздить модули там, где можно обойтись двумя строчками? это же CMF! Кстати некоторые php сниппеты тоже замещают код Друпала...

но впрочем мне все-равно - хак это или нет, а проблему я решил, вот и все Smile

Аватар пользователя xxandeadxx xxandeadxx 22 июня 2010 в 17:41

"otmoroz" wrote:
да ну нафик

http://drupal.org/node/144376

"otmoroz" wrote:
это же CMF!

вот именно, это CMF с продуманным api, а не набор файлов для редактирования

"otmoroz" wrote:
некоторые php сниппеты тоже замещают код Друпала...

каким образом интересно?

"otmoroz" wrote:
а проблему я решил, вот и все :)

до первого обновления друпала

Аватар пользователя otmoroz otmoroz 23 июня 2010 в 9:49

В node.tpl.php:

<?php if (!$status) { print " node-unpublished"; } ?>">
<?php if ($picture) print $picture; ?>
<?php if ($page == 0) { ?>

"><?php print $title?>

<?php }; ?>
<?php if ($submitted) { ?><?php } ?>
<?php if ($terms) { ?>

<?php print $terms ?>

<?php } ?>

<?php print $content ?>

<?php if ($links) { ?>

<?php }; ?>

Что-то добавить надо?

Аватар пользователя otmoroz otmoroz 23 июня 2010 в 11:32

Так, поюзав поиск, сделал так:

В своей теме создал файл template.php

В нее скопировал из ядра функции, которые мне нужны, внес изменения, которые мне нужны.

Не работает - в чем ошибка?

Код:

<?php
function phptemplate_theme_taxonomy_term_page($tids$result$img) {
  
drupal_add_css(drupal_get_path('module''taxonomy') .'/taxonomy.css');
  
$output '';

  

// Only display the description if we have a single term, to avoid clutter and confusion.
  
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>';
    }
  }

  

$output .= taxonomy_render_nodes($result);

  return 

$output;
}
?>
Аватар пользователя otmoroz otmoroz 23 июня 2010 в 16:30

прокопал дальше:

в page.tpl добавил <?php print theme (phptemplate_theme_taxonomy_term_page($tids$result$img))?>

ошибка missing arguments

помогите кто-нибудь, пожалуйста!!! правильно я все понял?

в темплейт копируешь функции

в пейдж их вызываешь theme?

Аватар пользователя xxandeadxx xxandeadxx 23 июня 2010 в 19:42

"otmoroz" wrote:
function phptemplate_theme_taxonomy_term_page($tids, $result, $img) {

если переопределяете функции темизации, то theme заменяется на phptemplate, а не добавляется префиксом

Аватар пользователя otmoroz otmoroz 24 июня 2010 в 14:02

получилось с функцией
<?phpphptemplate_taxonomy_term_page($tids, $result)?>

но c <?php print theme(phptemplate_preprocess_node(&$variables))?>

ничего не выходит! сама функция:

<?php
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['date']      = format_date($node->created);
  
$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);

  

// Flatten the node object's member fields.
  
$variables array_merge((array)$node$variables);
?>