Свой счетчик просмотров Drupal 7

Average: 4 (5 votes)

На одном из проектов с использованием profile2 понадобилось сделать свой счетчик просмотров с возможностью его редактирование в "ручном" режиме. 

Что было придумано:

  1. Добавили в профиль поле counter
  2. через hook_exit увеличивали это поле на единичку при каждом просмотре провиля пользователя.
  3. Далее это поле выводим во 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();
    }


}

Поделитесь статьей