Вы здесь

Блок. Статистика

Версия системы: 
Друпал 5
Оглавление документа

Этот код выводит краткую статистику об общем количестве документов, сколько из них опубликовано, сколько оставлено комментариев и тому подобное.

<?php
$count_accounts_tot
= db_fetch_array(db_query('SELECT COUNT(uid) FROM {users}'));
$count_accounts_blo = db_fetch_array(db_query('SELECT COUNT(uid) FROM {users} WHERE status=0'));
$count_nodes_tot = db_fetch_array(db_query('SELECT COUNT(nid) FROM {node}'));
$count_nodes_pub = db_fetch_array(db_query('SELECT COUNT(nid) FROM {node} WHERE status=1'));
$count_comments_tot = db_fetch_array(db_query('SELECT COUNT(cid) FROM {comments}'));
$count_comments_pub = db_fetch_array(db_query('SELECT COUNT(cid) FROM {comments} WHERE status=0'));
$count_referrer_ext_day = db_fetch_array(db_query("SELECT COUNT(DISTINCT(url)) AS referrers FROM {accesslog} WHERE url <> '' AND url NOT LIKE '%%%s%%' AND timestamp >= %d", $_SERVER['HTTP_HOST'], (time()-86400)));
$count_referrer_int_day = db_fetch_array(db_query("SELECT COUNT(DISTINCT(url)) AS referrers FROM {accesslog} WHERE url <> '' AND url LIKE '%%%s%%' AND timestamp >= %d", $_SERVER['HTTP_HOST'], (time()-86400)));
$count_RSS_subscr = db_fetch_array(db_query("SELECT COUNT(DISTINCT(hostname)) AS hostname FROM {accesslog} WHERE path LIKE '%/feed' OR path LIKE 'rss.xml'"));
$count_pageviews_day = db_fetch_array(db_query('SELECT COUNT(path) AS hits FROM {accesslog} WHERE timestamp >= %d', (time()-86400)));
$count_pageviews_hour = db_fetch_array(db_query('SELECT COUNT(path) AS hits FROM {accesslog} WHERE timestamp >= %d', (time()-3600)));

$header = array('Показатель', 'Значение');
$rows = array
(
array(
t('Аккаунтов'), $count_accounts_tot['COUNT(uid)']-1),
array(
t('…заблокированных'), $count_accounts_blo['COUNT(uid)']-1),
array(
t('Документов'), $count_nodes_tot['COUNT(nid)']),
array(
t('…опубликованных'), $count_nodes_pub['COUNT(nid)']),
array(
t('Комментариев'), $count_comments_tot['COUNT(cid)']),
array(
t('…опубликованных'), $count_comments_pub['COUNT(cid)']),
array(
t('Переходов внешних'), $count_referrer_ext_day['referrers']),
array(
t('…внутренних'), $count_referrer_int_day['referrers']),
array(
t('Запросов RSS'), $count_RSS_subscr['hostname']),
array(
t('Просмотров за 24 часа'), $count_pageviews_day['hits']),
array(
t('…за 1 час'), $count_pageviews_hour['hits']),
);
return
theme('table', $header, $rows);
?>

Добавление сниппета

  • Добавьте блок на странице «Управление → Строение сайта → Блоки → Добавить блок»
  • В поле «Описание» введите «Статистика»
  • В поле «Содержание» скопируйте этот код
  • В секции «Формат ввода» выберите пункт «Код PHP»
  • Сохраните данные нажав кнопку «Сохранить» внизу страницы
  • На открывшейся странице разместите блок в нужном регионе

Отметьте:

  • В строках «Переходов внешних» и «…внутренних» учитываются переходы за 24 часа
  • Для того, чтобы работали строки «Переходов…», «Запросов RSS», «Просмотров…» должен быть включен модуль Statistics

Комментарии

Изображение пользователя Анонимно

Для какого друпала? На шестом вызывает ошибку:

    * user warning: Table 'dbname.accesslog' doesn't exist query: eval /* admin : eval */ SELECT COUNT(DISTINCT(url)) AS referrers FROM accesslog WHERE url <> '' AND url NOT LIKE '%example.com%' AND timestamp >= 1240148978 in /home/ellectro/public_html/includes/common.inc(1645) : eval()'d code on line 8.
    * user warning: Table 'mydbname.accesslog' doesn't exist query: eval /* admin : eval */ SELECT COUNT(DISTINCT(url)) AS referrers FROM accesslog WHERE url <> '' AND url LIKE '%example.com%' AND timestamp >= 1240148978 in /home/***/public_html/includes/common.inc(1645) : eval()'d code on line 9.
    * user warning: Table 'mydbname.accesslog' doesn't exist query: eval /* admin : eval */ SELECT COUNT(DISTINCT(hostname)) AS hostname FROM accesslog WHERE path LIKE '%/feed' OR path LIKE 'rss.xml' in /home/***/public_html/includes/common.inc(1645) : eval()'d code on line 10.
    * user warning: Table 'mydbname' doesn't exist query: eval /* admin : eval */ SELECT COUNT(path) AS hits FROM accesslog WHERE timestamp >= 1240148978 in /home/***/public_html/includes/common.inc(1645) : eval()'d code on line 11.
    * user warning: Table 'mydbname' doesn't exist query: eval /* admin : eval */ SELECT COUNT(path) AS hits FROM accesslog WHERE timestamp >= 1240231778 in /home/***/public_html/includes/common.inc(1645) : eval()'d code on line 12.

Изображение пользователя Анонимно

Та же канитель.

Изображение пользователя Андрей

На localhoste тоже повились ошибки, а вот на работающем сайте все ок.

Изображение пользователя nuroff

куча всего этого заменяется одним модулем visitors

Изображение пользователя Анонимно

Модуль "Statistics" включите: у кого ошибки