Код вывода аватара через imagecache?

Главные вкладки

Комментарии

Аватар пользователя enjoy enjoy 23 апреля 2008 в 16:42

Это настройки, мне нужен код вывода картинки?
Стандартно в профиле у меня все работает, хочу выводить в комментариях.
Может я чего не догоняю, объясните популярно.

Аватар пользователя enjoy enjoy 23 апреля 2008 в 16:59

Пытаюсь вставить так, но не получается. Что то не так я делаю, выводить в комментариях хочу.

<?php print theme('user_picture', $user, 'avatar_icon'); ?>
Аватар пользователя neochief neochief 23 апреля 2008 в 18:26

На первых порах вам сгодится и такое:

<?php
//uid получаете или из ноды($node->uid) или еще откуда-то
//(автор коммента: $comment->uid  , текущий юзер: $GLOBALS['user']->uid),
//в зависимости где и для чего аватар выводится
$user = user_load($uid);

//preset_name - имя надстройки в ImageCache
print(theme('imagecache', 'preset_name', $user->picture));
?>

Аватар пользователя enjoy enjoy 24 апреля 2008 в 9:23

У меня возникли сомнения в том что я делаю, а надо ли?
Весть ImageCache Profiles возвращает вроде втроенную $picture, по идее должно работать же?
Или я не прав?

Аватар пользователя VladSavitsky VladSavitsky 25 апреля 2008 в 0:50

ImageCache Profiles требует вставить свою функцию в template.php. Вы не забыли это сделать?

/**
*
* Insert into your theme's template.php file:
*
* Theme override for user.module
* Utilized imagecache module to scale down large uploaded profile pictures
* param $size
*   Image size to scale to. Options: thumb (default) and large
*/

function phptemplate_user_picture($account, $size = 'thumb') {
  if (variable_get('user_pictures', 0)) {
    // Display the user's photo if available
//    if (preg_match('/q\=user\/\w+/', $_SERVER['REDIRECT_QUERY_STRING'])) {
    if (preg_match('/users\/\w+/', $_SERVER['REDIRECT_QUERY_STRING']) && $account->picture && file_exists($account->picture)) {
        $size = 'large';
    }
     if ($account->picture && file_exists($account->picture)) {
      $picture = l(theme('imagecache', $size, $account->picture), 'user/' . $account->uid, NULL, NULL, NULL, FALSE, TRUE);
    } elseif (variable_get('user_picture_default', '')) {
      $picture = l(theme('imagecache', $size, variable_get('user_picture_default', '')), 'user/' . $account->uid, NULL, NULL, NULL, FALSE, TRUE);
    }
    return '<div class="picture">'.$picture.'</div>';
  }
}

Я не уверен, что это та функция, которую рекомендуют авторы модуля (я мог её подправлять), но всё же.
Может пригодится.

В в node.tpl.php такой код:

        <div class="avatar">
          <?php if ($picture)   print phptemplate_user_picture($node, (($teaser) ? 'thumb': 'large')); ?>
        </div>

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