Вы здесь

Как вывести количество комментариев?

0

Вопрос такой. Хочу вывести под каждой новостью количество комментариев оставленных на данной новости. Вывожу материалы через views,но вывод идет не через поля, а через Содержимое. Поэтому хочу вывести их программно. Каким образом можно это реализовать?

Версия Drupal: 
7.x
Категория: 
Theming
Связанные проекты: 
ViewsDisplay Suite
Вопрос задан 17.10.2015 - 14:58
Аватар пользователя one
one
7

Ответы

1

Получилось!
У меня блокировал node - display suite,поэтому функцию в модуле написал по другому.
Пришлось Создавать кастомное поле и писать функции.
Может кому пригодится)

<?php function ds_custom_ds_fields_info($entity_type) {

  $fields = array();

  if ($entity_type == 'node') {
    $fields['comment_counts'] = array(
        'title' => t('Comments Count'),
        'field_type' => DS_FIELD_TYPE_FUNCTION,
        'function' => 'ds_custom_comment_counts',
    );
    return array($entity_type => $fields);
  }
  return;
}

function ds_custom_comment_counts($field) {
  if (isset($field['entity']->comment_count)) {
    return $field['entity']->comment_count;
  }

}
?>

~~~

И все заработало)

Ответ дан 17.10.2015 - 18:31
Аватар пользователя one
one
7

Надо заметить что это правильный вариант вывода в случае если вы используете DisplaySuite для вывода материалов. Там print $comment_count в теймплейте не поможет, ибо темплейты игнорируются.

Комментарий оставлен 17.10.2015 - 19:40

Просто - это не интересно :D

Комментарий оставлен 17.10.2015 - 19:40
2
echo $comment_count;
Ответ дан 17.10.2015 - 15:21
Аватар пользователя xandeadx
xandeadx
1542
1

Вывожу материалы через views,но вывод идет не через поля, а через Содержимое.

Но более гуманным будет все же использовать поля, и добавить поле "кол-во комментариев"
иначе, вам нужно будет добавить вывод в соответствующем шаблоне (tpl)

print $node->comment_count;
Ответ дан 17.10.2015 - 15:25
1

но вывод идет не через поля, а через Содержимое.

Значит нужно править шаблон node.tpl.php в теме (если нету, то добавить)
Количество комментариев в шаблоне в переменной $comment_count

print $comment_count;
Ответ дан 17.10.2015 - 15:25
Аватар пользователя drupby
drupby
456

Пишу в node.tpl.php не отображается ничего

Комментарий оставлен 17.10.2015 - 15:53

Это то понятно, дело в чем. Я вывел в первый раз, все отобразилось корректно. При последующих загрузках страницы все пропала. Чистил кэш, перезаписывал по разному - не катит.

Комментарий оставлен 17.10.2015 - 16:07

node.tpl.php шаблонов в принципе может быть в теме несколько: для разных типов материалов, для анонса/тизера, для полного материала

Комментарий оставлен 17.10.2015 - 16:09

Добавил в node.tpl.php в моей теме.
Я и говорю что сначала появилась, потом пропала при последующих загрузках. Кэш очища - не помогло. Как только уже не пробовал перезаписать)

Комментарий оставлен 17.10.2015 - 16:42

Так возможно шаблонов нод несколько и получается, что сначала смотрели в полном отображении ноды, а к примеру в анонсах не будет, если предусмотрен отдельный шаблон.
Либо же в шаблоне есть условие наподобие if ($teaser)

Комментарий оставлен 17.10.2015 - 16:47
0

в node.tpl.php

echo $node->comment_count;

если не помогает, то так

function MODULE_preprocess_node(&$vars){
    $node = $vars['node'];

    $count = db_select('comment', 'c')
      ->condition('c.nid', $node->nid)
      ->condition('c.status', 1)
      ->countQuery()
      ->execute()
      ->fetchField();

    $vars['content']['count'] = array(
        '#weight' => 99,
        '#markup' => $count
    );
}
Ответ дан 17.10.2015 - 16:40

если не помогает, то так
$count = db_select('comment', 'c')

тоже в node.tpl.php?

Комментарий оставлен 17.10.2015 - 16:45

запрос можно в hook_preprocess_node вынести
и потом $vars['count'] = $count

ПС. отредактировал

Комментарий оставлен 17.10.2015 - 16:52

Немного тупой вопрос, но все же. А функцию где именно записывать?)

Комментарий оставлен 17.10.2015 - 16:57

MODULE в названии функции замените на название вашего модуля

Выносить preprocess в модуль не вижу смысла, тем более в данном случае.

Комментарий оставлен 17.10.2015 - 23:41

а куда, в template.php?
ну тогда и из node.tpl.php выносить смысла нет, кроме того, что так делать неправильно

Комментарий оставлен 18.10.2015 - 01:42