Как сделать статистику как на етом сайте

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

Аватар пользователя ole-studio ole-studio 8 мая 2007 в 16:44

Как сделать статистику как на етом сайте [ Опубликовано документов: 5034 Комментариев: 27720 Категорий и меток к документам: 1158 Зарегистрировано пользователей: 3693 ] ?

Комментарии

Аватар пользователя SadhooKlay SadhooKlay (не проверено) 8 мая 2007 в 16:49

Посчитать PHP запросом из базы данных. К примеру количество зарегистрированных пользователей можно вывести так:

<p>На сайте зарегистрировано <?php print db_result(db_query("SELECT count(*) AS count FROM {users}"));  ?> человек.</p>
Аватар пользователя SadhooKlay SadhooKlay (не проверено) 8 мая 2007 в 17:52

1. Идём в админку (admin/build/block)
2. Создаём блок (admin/build/block/add)
3. Описание блока, краткое описание вашего блока, которое используется на странице обзора блоков: "Статистика по сайту"
4. В поле "Текст блока" вносим пару любых слов - потом мы их удалим.
5. Жмём ОК.
6. В появившемся списке блоков (admin/build/block ) видим наш блок, жмём "Настроить"
7. Заголовок блока, как он будет показан пользователю заполняем словом <none>
8. Ставим галку на выборе "Пользователи не могут управлять видимостью блока."
9. "Показать блок определенным ролям" — тут ничего не выбираем.
10. "Установки видимости для страницы" — допустим только на главной нужно, тогда пишем в поле ввода <front> и выбираем пункт "Показывать только на перечисленных страницах". Если блок нужно на всех страницах показывать, выбираем первый пункт, а в поле ввода ничего не вводим.
11. Жмём ОК.
12. В появившемся списке блоков (admin/build/block ) , включаем наш блок таким макаром, в колонке "Область" выбираем "Подвал", а вес "-10"
13. Жмём "Сохранить"
14. Открываем Firefox с установленным в него Firebug, жмём в Firebug "Inspect", наводим мышь на наш блок и видим следущее:

<div id="block-block-3" class="block block-block">
<div class="content">
<p>ТЕСТ</p>
</div>
</div>

У вас ID и Class могут быть не такими, но это не важно, главное, что они есть.
15. Создаём файл с именем подобным ID блока. Так как ID в нашем случае block-block-3, то такое имя файлу и присваиваем.Итак, файл у нас будет называться block-block-3.tpl.php
16. В файле пишем следующий код:

<div id="block-<?php print $block->module .'-'. $block->delta; ?>" class="block block-<?php print $block->module ?>">  
  <div class="blockinner">
XXXXXXXXXX
  </div>
</div>

17. XXXXXXXXXX заменяем на следующий код (можно комбинировать):

A) Колличество зарегистрированных пользователей

<p>На сайте зарегистрировано <?php print db_result(db_query("SELECT count(*) AS count FROM {users}"))-1;  ?> человек.</p>

Б) Количество материалов

<p>На сайте опубликованно <?php print db_result(db_query("SELECT count(*) AS count FROM {node}")) -1;  ?> документов.</p>

В) Количество комментариев

<p>На сайте опубликованно <?php print db_result(db_query("SELECT count(*) AS count FROM {comments}")) -1;  ?> комментариев.</p>

Г) Категории, их кол-во.

<p>На сайте опубликованно <?php print db_result(db_query("SELECT count(*) AS count FROM {vocabulary_node_types}"))-1;  ?> категорий и меток к документам.</p>




Всё это только что проделал на локалхосте — у меня работает.

Аватар пользователя SadhooKlay SadhooKlay (не проверено) 9 мая 2007 в 0:43

Модуль под это дело уже сделал.
С возможностью выбора какую конкретно информацию показывать/не показывать, где показывать и т.д.
Админку доделываю...

К утру выложу в своём блоге.

Аватар пользователя marazmus marazmus 8 мая 2007 в 18:32

но вариант с block-block-3.tpl.php тоже идея
Это фича от разработчиков Друпала Smile
Очень удобно, когда нет нужды давать "темизатору" доступ к блокам, но можно дать ему отдельный фтп-доступ на правку темы.

Аватар пользователя SadhooKlay SadhooKlay (не проверено) 8 мая 2007 в 18:45

Кстати благодаря, твоим постам я вот это всё и знаю.
Помнишь, я на днях благодарил тебя в одноим из твои постов?
Вот это и есть плоды.
Ещё раз спасибо.

Аватар пользователя SadhooKlay SadhooKlay (не проверено) 8 мая 2007 в 19:42

Немного поразмыслив, решил написать всё это красиво.
Думаю, если нечего экстраординарного не случится, к утру сделаю модуль.

UPD 1: Модуль готов. Навожу красоту.
UPD 2: Красота готова. Делаю локализацию и раздел справки в admin/help
UPD 3: Локализация и раздел справки готовы. Делаю админскую часть.
UPD 4: Админка готова. Щас, ещё что нибудь покалякую в справке, протестирую на локалхосте и чере полтора - два часа выложу в блоге. Модуль назвал SK Site Summary, версия 5.x-1.x-dev, а там будет видно...

Аватар пользователя marazmus marazmus 8 мая 2007 в 21:15

2SadhooKlay:
UPD: Модуль готов. Навожу красоту.
Мдя, круто.. Smile Я не программист, к сожалению, так что респект. Пока моих познаний хватает только на основы темизации.

2ole-studio:
+4 "лишних" запроса к БД Smile Или неважно?

2romand@drupal.org OR 2SadhooKlay:
А почему -1 от числа в запросе, не подскажете?

Аватар пользователя SadhooKlay SadhooKlay (не проверено) 8 мая 2007 в 21:22

Честно говоря, прям щас не готов ответить, но так правильно.
Найду ответ сообщу : )

Аватар пользователя romandor romandor 10 мая 2007 в 9:13

А почему -1 от числа в запросе
Потому, что в таблице `users` есть служебная запись с uid=0.

ЗЫ: в примере Акселя -1 не надо, у него
"SELECT count(*) AS num FROM {node} WHERE
status > 0".
^^^^^^^^^^

Аватар пользователя RISK RISK 9 мая 2007 в 1:36

15:42 >

Решил написать всё это красиво.
К утру сделаю модуль.
Модуль готов. Навожу красоту.
Красота готова.
Модуль под это дело уже сделал.
Админку доделываю...

К утру выложу в своём блоге.

< 20:43

...матёрый чел Smile

Аватар пользователя SadhooKlay SadhooKlay (не проверено) 9 мая 2007 в 1:42

Админка самая приятная, но в тоже время самая тяжёлая часть.

Приятная, потому что можно развернуться и реализовать фактически что угодно.
Тяжёлая по тому, что это 70% всего кода : )

Аватар пользователя clubwave.ru clubwave.ru 27 сентября 2007 в 0:44

а если мне нужен пересчёт количества материалов для одного типа, например blog?

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

Аватар пользователя clubwave.ru clubwave.ru 28 сентября 2007 в 0:06

и скажите правльно ли что у меня должны сосчитаться все материалы типа блог а не все материалы?

просто у меня на том сайте кроме блога ничего нет, но наверное будет..