Статистика по просмотру статей + какие роли просматривали статьи

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

Аватар пользователя Zereff Zereff 14 марта 2013 в 17:23

Приветствую всех друпалеров. Появился вопрос писать модуль или же найти готовое решение по статистике статей в блоге и т.д.
Простыми словами - узнать кто просматривал статью, роли пользователей, которые просматривали статью.
Например: Authenticated users 5 reads
Anonymous users 20 reads
Еще лучше чтобы имена пользователей выводились, если анонимный пользователь смотрел, то его ip.
Вообщем не очень сложная задача. У кого какие варианты?

Комментарии

Аватар пользователя Chyvakoff Chyvakoff 15 марта 2013 в 9:03

Если модуля нет - то на hook_nodeapi на событие view смотреть глобальную переменную $user и записывать в свою таблицу nid и uid. Ну и далее уже можно выбирать и по ролям,и по никам и хоть по филду в профайле.

Аватар пользователя Zereff Zereff 15 марта 2013 в 16:10

Chyvakoff wrote:
Если модуля нет - то на hook_nodeapi на событие view смотреть глобальную переменную $user и записывать в свою таблицу nid и uid. Ну и далее уже можно выбирать и по ролям,и по никам и хоть по филду в профайле.

Допустим я создал таблицу в базе, где будет атрибут, к примеру aucount - количество просмотров конкретной ноды анонимным пользователям и атрибут rucount - количество просмотров для авторизованных пользователей.
Вопрос. Какое должно быть условие в коде для поставленной задачи? Чтобы при заходе анонимного пользователя передавалось
значение +1 в атрибут aucount и авторизованному юзеру соответственно(наведите на путь, дальше сам).

Аватар пользователя Chyvakoff Chyvakoff 15 марта 2013 в 21:17

"Zereff" wrote:
Допустим я создал таблицу в базе, где будет атрибут, к примеру aucount - количество просмотров конкретной ноды анонимным пользователям и атрибут rucount - количество просмотров для авторизованных пользователей.

Для этого лучше создай группу полей, состоящую из двух числовых полей. У тебя всё само создастся.
Пусть это будет field_aucount и field_rucount
и тогда будет примерно так:

function module_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL){
//если нужно мониторить все типы нод - поля должны быть у всех,иначе проверяй по $node->type;
//проверь из чего состоит объект ноды,я мог опечататься.
 if($op == 'view'){
  global $user;
  if($user->uid > 0) {
    $node->field_rucount[0]['#value'] = $node->field_rucount[0]['#value'] + 1;
  }
  else {
    $node->field_aucount[0]['#value'] = $node->field_aucount[0]['#value'] + 1;
  }
 }
}
Аватар пользователя Zereff Zereff 16 марта 2013 в 12:55

Chyvakoff wrote:

Для этого лучше создай группу полей, состоящую из двух числовых полей. У тебя всё само создастся.
Пусть это будет field_aucount и field_rucount
и тогда будет примерно так:

function module_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL){
//если нужно мониторить все типы нод - поля должны быть у всех,иначе проверяй по $node->type;
//проверь из чего состоит объект ноды,я мог опечататься.
 if($op == 'view'){
  global $user;
  if($user->uid > 0) {
    $node->field_rucount[0]['#value'] = $node->field_rucount[0]['#value'] + 1;
  }
  else {
    $node->field_aucount[0]['#value'] = $node->field_aucount[0]['#value'] + 1;
  }
 }
}


Спасибо большое! Этого должно хватить чтобы начать писать модуль. Ну а с реализацией полей в таблице - это не сложно сделать в модуле.

Аватар пользователя Chyvakoff Chyvakoff 17 марта 2013 в 11:58

Пожалуйста.

"Zereff" wrote:
Ну а с реализацией полей в таблице - это не сложно сделать в модуле

Повторюсь - не изобретай велосипед, создай обычные поля средствами друпала. Как плюс - ты потом по ним сортировать сможешь, во вьюсах выборки делать. А с кастомной таблицей такое не пройдет.