Отображение аватара пользователя на панели пользователя
Есть ли альтернатива, чтобы в окне входа, которое превращается в панель пользователя по умолчанию (Моя учетная запись, Администрирование и т.д.), отображалось изображение профиля пользователя над именем пользователя?
2 answers
На самом деле существует два отдельных блока: Вход пользователя , который отображается только анонимным пользователям, и Навигация , которая отображается только после входа пользователя в систему. Вы заинтересованы в изменении последнего.
К сожалению, поблизости нет hook_block_alter()
, который вы могли бы использовать для изменения блока из пользовательского модуля. Однако вы можете сделать это из своей темы непосредственно перед отображением блока.
Просто вставьте следующую функцию в свою ТЕМУ template.php
и это должно сработать. Пожалуйста, обратите внимание, что это добавляет изображение пользователя в верхнюю часть содержимого блока, просто ниже имени пользователя.
function YOURTHEME_preprocess_block(&$vars) {
$block =& $vars['block'];
if ($block->module == 'user' && $block->delta == 1) {
// Navigation block.
$block->content = theme('user_picture', $vars['user']) . $block->content;
}
}
Если вы хотите, чтобы это было выше имени пользователя, просто замените $block->content
на $block->subject
.
Или, что еще лучше, просто создайте еще один блок, поместите его над Навигацией , сделайте его видимым только для роли authenticated user
, установите заголовок тела на <none>
и Тело блока на:
<?php
global $user;
print theme('user_picture', $user);
?>
Убедитесь, что включен PHP сначала отфильтруйте модуль и используйте PHP-код фильтр для ввода Тела блока.
Вы могли бы использовать представления, которые предоставили бы вам более гибкий вариант, поскольку вы можете добавлять любые поля от пользователя с помощью пользовательского интерфейса представлений. Вам нужно будет:
- Создайте представление, отображающее пользователей
- Добавьте контекстный фильтр для Uid.
- Установите настройки контекстного фильтра "Когда значение фильтра ОТСУТСТВУЕТ в URL", чтобы "Указать аргумент по умолчанию - Идентификатор пользователя от вошедшего в систему пользователя".
- Добавьте необходимые поля, в вашем случае Изображение пользователя и Имя.
- Добавьте отображение блока и отобразите блок там, где вы хотите/