Как добавить аватар пользователя в блок

Однажды мне довелось услышать довольно интересную фразу о том, что свое имя для человека - самый приятный звук на свете. Как показала практика, в большинстве случаев так оно и есть. Это касается не только имени, но и всего того, что отличает человека от других, хоть сколько-нибудь показывает его индивидуальность.  К этой категории можно отнести ник человека в интернете, его аватар. О последнем сегодня и пойдет речь. 

В Drupal версии 5.x (с остальными версиями не знаком) аватар пользователя запрятан на его личную страницу. И вроде бы все в порядке – на личной странице, так на личной странице, но мы ведь не из тех, кто закроет на это глаза, кто лишит своего пользователя возможности лицезреть юзерпик себя любимого практически на каждой странице нашего сайта  ? ;)

Для отображения аватара пользователя в Drupal можно создать блок, а можно и создать крохотный модуль. Оба варианта просты настолько, что я – человек незнакомый с php, смог до них додумать за 30 минут просто полистав код стандартных модулей. 

Вариант первый – блок

<?php
global $user;
$account  = user_load(array('uid' => $user->uid));
$account = user_load(array('uid' =&gt; $user-&gt;uid));</li><li>print '&lt;div align=&quot;center&quot; 
print '<div align="center" class="name"><h2 class="title">' . $account->name . '</h2><br>' . theme('user_picture', $account) . '</div>';
?>

 

Выводить по моему мнению такой блок следует перед блоком "Навигация". Также следует отключить у блока "Навигация" стандартный заголовок (ник), чтобы имя пользователя не выводилось дважды. 

Получится примерно так: 

 

 

Вариант второй – модуль

Тут я пошел немного дальше и добавил под юзерпиком две ссылки - «Изменить настройки» и «Изменить личные данные» (личные данные – дополнительные поля профилей), которые отображаются только до установки пользователем аватара, а потом исчезают.

 

<?php 
// $Id$ 
function avatar_help($section) 
{ 
  switch ($section) 
  { 
    case 'admin/modules#description': 
      return t('Displays avatar and username in block'); 
    break; 
  } // switch 
}  // func_avatar_help 
function avatar_block($op='list', $delta=0) 
{ 
global $user; 
switch ($op) 
{ 
case 'list': 
$block[0]["info"] = t('avatar'); 
return $block; 
break; 
case 'view': 
$account  = user_load(array('uid' => $user->uid)); 
$txt='<div align="center" class="name">' . theme('user_picture', $account) . '</div>'; 
// отображать ссылки мы будем только пользователям, которые заменили стандартный аватар на свой 
  if (!$account->picture) 
  { 
  $txt .= t('Change '); 
// сейчас добавляем первую ссылку - изменение базовых настроек аккаунта 
  $txt .= l(t('account, '),'user/' .$user->uid . '/edit'); 
// теперь добавляем вторую ссылку - изменение дополнительных полей профиля "Личные данные" 
  $txt .= l(t('personal info'),'user/' . $user->uid . '/edit/%D0%9B%D0%B8%D1%87%D0%BD%D0%B0%D1%8F+%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F');  // 
  } 
  $block['content'] = $txt; 
  $block['subject'] = $account->name; 
  return $block; 
  break; 
} // switch 
} //func_avatar_block

Получится примерно так: 

 

Также, как и в предыдущем случае,  следует убрать у блока "Навигация"  заголовок.

Комментарии

Здравствуйте! А как вставить рядом с аватаром вывод дополнительных полей пользователя?

еще можно использовать сервис Gtavatar вот подробная инструкция http://stef33.ru/2010-03-24-15-51-37/37-avatar

ВСЕМ ПРИВЕТ!!!!
Использую Drupal 6.20
Выдает такое сообщение на странице вместо аватара!!

"Parse error: syntax error, unexpected '=', expecting ')' in X:\home\zashitnik.com.ua\www\includes\common.inc(1696) : eval()'d code on line 4"

Добавить комментарий

Адрес показан не будет
CAPTCHA
Антибот
Как оформить комментарий?