Счетчик комментариев в заголовке

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

Аватар пользователя khalid khalid 20 января 2009 в 8:24

Бился над проблемой вывода количества комментариев в главном заголовке комментариев (фигня какая-то Smile ) т.е. когда мы переходим в саму ноду мы имеем:

Заголовок
дата / юзер

содержание

ссылки

Комментарии
комментарии

надо было сделать так:
Комментарии (10)
комментарии

Метод тыка родил такой код в template.php (для сборки швабрашвабры)

/** Comments counter*/
function aberdeen_shva_comment_num_all($nid) {
  static $cache;

  if (!isset($cache[$nid])) {
    $cache[$nid] = db_result(db_query('SELECT comment_count FROM {node_comment_statistics} WHERE nid = %d', $nid));
  }
  return $cache[$nid];
}

function currentnode_nid(){
    if (arg(0)=='node' && is_numeric(arg(1)))
        return arg(1);
    else
        return 0;
}

function currentnode(){
    return node_load(currentnode_nid());
}

/**
 * Allow themable wrapping of all comments.
 */

function phptemplate_comment_wrapper($content, $type = null) {
  static $node_type;
  if (isset($type)) $node_type = $type;

  if (!$content || $node_type == 'forum') {
    return '<div id="comments">'. $content . '</div>';
  }
  else {
    $output = aberdeen_shva_comment_num_all(currentnode_nid());
    return '<div id="comments"><h2 class="comments">'. t('Comments') .'&nbsp<span class="comment_counter">(' . $output .')</span></h2>'. $content .'</div>';
  }
}

всё работает

в общем теперь вопрос к гуру PHP и друпала: правильно ли я сделал? может есть способы красивее и быстрее (оптимизированнее)?

Комментарии

Аватар пользователя penexe penexe 20 января 2009 в 9:14
<?php
function phptemplate_comment_wrapper($content$type null) {
  static 
$node_type;
  if (isset(
$type)) $node_type $type;
 
  if (!
$content || $node_type == 'forum') {
    return 
'<div id="comments">'$content '</div>';
  }
  else {
    
$node node_load(arg(1));
    return 
'<div id="comments"><h2 class="comments">'t('Comments') .'&nbsp<span class="comment_counter">(' $node->comment_count .')</span></h2>'$content .'</div>';
  }
}
?>