На одном из проектов с использованием 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();
}
}
