На одном из проектов с использованием profile2 понадобилось сделать свой счетчик просмотров с возможностью его редактирование в "ручном" режиме.
Что было придумано:
- Добавили в профиль поле counter
- через hook_exit увеличивали это поле на единичку при каждом просмотре провиля пользователя.
- Далее это поле выводим во views или где нам удобно.
Почему использовал этот метод? Нигде не нашел как можно прикрутить к profile2 статистику посещений. Пробывал и через Relation и добавлять в эти же Relation все материалы пользователя, ничего путного не получилось.
непосредственно сам код
/** * Implements hook_exit(). */ function sm_company_exit($destination = NULL) { // We are counting content views. if (arg(0) == 'user' && is_numeric(arg(1)) && arg(2) == NULL) { // A node has been viewed, so update the node's counters. $account = user_load(arg(1)); // save counter for company $user_wrapper = entity_metadata_wrapper('user', $account); $profile2 = profile2_load_by_user($account, 'company'); // watchdog('HOOK:EXIT', var_export($user_wrapper->field_counter, TRUE)); $user_wrapper->field_counter = $user_wrapper->field_counter->value() + 1; $user_wrapper->save(); // save counter for company $profile2_wr = entity_metadata_wrapper('profile2', $profile2); $profile2_wr->field_counter = $profile2_wr->field_counter->value() + 1; $profile2_wr->save(); } }