Добавление аватара для $ user в Drupal 7 - PullRequest
0 голосов
/ 08 марта 2011

Я создал простой модуль для отображения флэш-игры в пользовательском блоке, переписав game_block_view () и game_block_info () в sites / default / modules / game.module , и он работает нормально.

Однако мне нужно передать аватар пользователя, а также пол и город (я добавил 2 обязательных поля в форму регистрации) через параметр FlashVars во флэш-игру в моем блоке.

Поэтому я пытаюсь перегрузить hook_user_load , потому что я предполагаю, что это метод, в котором вы добавляете свойства к объекту $ user после того, как он был инициирован из базы данных (это, вероятно, происходит при входе пользователяили изменяет данные его / ее профиля?):

<code>function game_user_load($users) {
  global $user;
  $uid = $user->uid;

  $result = db_query('select filename from {file_managed} where uid=:uid', array(':uid' => array($uid)));
  $avatar = $result->fetchField();
  $users[$uid]->avatar = $avatar;

  drupal_set_message("<pre>$uid: $avatar
\ n "); print_r ($ users);}

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

Что я делаю не так?

Спасибо! Алекс

1 Ответ

2 голосов
/ 08 марта 2011
  • Глобальный объект пользователя не проходит через hook_user_load (), см. http://api.drupal.org/api/drupal/includes--session.inc/function/_drupal_session_read/7. Не спрашивайте меня, почему, это именно так:)

  • Когда с использованием user_load (), все добавленные поля будут автоматически загружены, для этого вам не нужен специальный код.Вам просто нужно знать, как получить к ним доступ, что немного сложно.

Примерно так должно работать:

global $user;

// $account is now a fully loaded user object.
$account = user_load($user->uid);

// Your field name is probably 'field_avatar'.  
if ($avatar = field_get_items('user', $account, 'field_avatar')) {  
  dpm($avatar); // only works with devel.module, strongly suggested!  
}
...