[РЕШЕНО] Блоки-счетчики

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

Аватар пользователя Godgrant Godgrant 7 октября 2014 в 14:37

Нужно создать несколько блоков-счетчиков:

  1. Первый выводит количество пользователей, разместивших хотя бы одну ноду определенного типа (типов)
  2. Второй выводит количество нод определенного типа (типов), размещенных на сайте
  3. Третий выводит количество терминов в определенном словаре
  4. Четвертый отображает количество просмотров нод определенного типа

Как это лучше осуществить? Какие модули или сниппеты задействовать?

Комментарии

Аватар пользователя Godgrant Godgrant 7 октября 2014 в 15:53

"Lotar" wrote:
Модуль views
Логично! Но как, например, вывести не список материалов определенного типа, а их количество?

Аватар пользователя Godgrant Godgrant 7 октября 2014 в 15:50

ХулиGUN wrote:
db_select()

Видимо я ошибаюсь в синтаксисе, потому что подобный код роняет сайт:

<?php
$counter = db_query("SELECT COUNT(*) DISTINCT FROM {node} n WHERE type = 'news' ")->fetchField();
print $counter;
?>
Аватар пользователя Godgrant Godgrant 8 октября 2014 в 10:33

ХулиGUN wrote:
Если оно стринг, то должно сработать, то, что я писал выше
Да, эту штуку я вчера сделал. Но всё равно спасибо. Война с агрегацией и views не позволила мне получить в блоке результат в виде одной единственной цифры. Поэтому пока я склоняюсь к сниппетам. При этом так или иначе я решил все задачи, кроме счетчика просмотров. Не могу объединить запросы из двух разных таблиц. Вот что я написал:

<?php
$count_view 
db_query("SELECT SUM (c.totalcount) FROM {node_counter} c INNER JOIN {node} n
WHERE n.type = 'news' ON n.nid = c.nid"
)->fetchField();
?>

И сайт опять падает. Где ошибка на этот раз?

Аватар пользователя drupby drupby 8 октября 2014 в 11:27

"ХулиGUN" wrote:
SELECT SUM (c.totalcount) FROM {node_counter} c INNER JOIN {node} n ON n.nid = c.nid WHERE n.type = 'news'

$query = db_select('node_counter', 'c');
$query->addExpression('SUM(c.totalcount)');
$query->join('node', 'n', 'n.nid=c.nid AND n.type = :type', array(':type' => 'news'));
$sum = $query->execute()->fetchField();