Доброй ночи товарищи разработчики.
Сталкнулся со следующей проблемой:
На модулях Диг все ок, сейчас не работаю с дигом но реализую что-то на подобии без этого модуля.
Проблема в следующем:
У меня в темплейте опция добовлять пользовательские аватакрки в сообщения, выглядит это так:
А мне требуеться чтобы моя аватара была вот такой, тоесть при просмотре сообщения аватара с нормального размера в моем случаи 100 на 100 пикселей сжималась и неторчала на пол экрана оброзно говоря.
Подскажите как реализовать??
Через CSS прописывал классом
.picture {
width:10px;
hight:10px;
}
зжатия нет..
Зарание спасибо и низкий поклон ребятам которые помогут! Я надеюсь на содействие.
Хочу добавить в node.tpl.php это
Комментарии
Или через темизацию "ручками" используя Imagecache или с помощью модуля ImageCache Profiles
Вот вам пример удачного решения, которое я использую (код не стал изменять, сами подстроете под свои нужды, думаю все и так понятно).
Первое - переопределение вывода самой картинки:
//(phptemplate_* не катит, потому что уже был определен в движке)
function mytheme_user_picture($account,$iconsize = FALSE) {
// загружаем данные юзера
$user = user_load(array('uid' => $account->uid));
if ($iconsize)
{
// если у юзера есть аватарка
if ($user->picture && file_exists($user->picture)) {
$picture = '<span class="border">'.theme('imagecache', 'avatar-'.$iconsize, $user->picture).'</span>';
}
else
{
// если - нет, и это женщина, показывать женский-аватар-по-умолчанию
if ($user->profile_personal=='женский')
$picture = '<span class="border">'.theme('imagecache', 'avatar-'.$iconsize, 'files/pictures/user_female.gif').'</span>';
// во всех остальных случаях - мужской
else
$picture = '<span class="border">'.theme('imagecache', 'avatar-'.$iconsize, 'files/pictures/user_male.gif').'</span>';
}
return $picture;
}
else return "";
}
Второе, переопределение вывода имени юзера.
Функция почти что стандартная за исключением параметра $iconsize (который также есть и в функции сверху). Так как у этого параметра есть значение по-умолчанию, функция не будет вылетать от стандартных вызовов, и приобретет большую гибкость при вызовах с этим параметром.
function phptemplate_username($object, $iconsize = 'mini') {
$presets = array();
if (module_exists('imagecache'))
$presets = _imagecache_get_presets();
if (!in_array('avatar-'.$iconsize,$presets))
$iconsize = FALSE;
if ($object->uid && $object->name) {
// Shorten the name when it is too long or it will break many tables.
if (drupal_strlen($object->name) > 20)
$name = drupal_substr($object->name, 0, 15) .'...';
else
$name = $object->name;
if (user_access('access user profiles')) {
$output = l($name, 'user/'. $object->uid, array('class'=>'aname'.$user_class,'title' => t('View user profile.')));
if ($iconsize) {
$picture = theme('user_picture',$object,$iconsize);
$output = '<div class="avatar'.$iconsize.'">'.l($picture, 'user/'. $object->uid, array('class'=>'apicture'.$user_class,'title' => t('View user profile.')), NULL, NULL, FALSE, TRUE).$output.'</div>';
}
}
else
$output = check_plain($name);
}
else if ($object->name) {
// Sometimes modules display content composed by people who are
// not registered members of the site (e.g. mailing list or news
// aggregator modules). This clause enables modules to display
// the true author of the content.
if ($object->homepage) {
$output = l($object->name, $object->homepage, array('class'=>'authorlink', 'rel' => t('nofollow')));
}
else
$output = '<span class="authorlink">'.check_plain($object->name).'</span>';
}
else
$output = '<span class="authorlink">'.variable_get('anonymous', t('Anonymous')).'</span>';
return $output;
}
Теперь, по всему сайту, имена юзеров будут с мелкой картинкой ($iconsize = 'mini'), примерно вот так:
Но! Это еще не все, впереди самое интересное. Теперь, в нужном месте шалона, когда нам надо выводить юзернейм с картинкой другого размера, мы пишем такое:
и оно выведет примерно такое:
А дальше все зависит от вашей фантазии - можно пихать юзернеймы под аватарки, или делать в комментах аватарки огромных размеров и т.д.
P.S. В данном примере, в админке, в настройках Imagecache должны быть созданы пресеты с названиями 'avatar-medium' и 'avatar-mini', которые обрезают рисунки в 32*32 и 16*16 соотвественно. Конечно же, вы можете менять размеры рисунков по своему усмотрению, но пресеты должны называться avatar-*, где * - это название, которое вы пихаете в theme('user_picture',$user,...сюда....)
А косательно кода
.picture {
width:10px;
hight:10px;
}
зжатия нет..
Во-первых не hight, a height, а во вторых - это вы задаете размер блоку вокруг картнки, а не самой картинке. Обращайтесь к картинке -
.picture img{} - и будет все у вас работать.
нужно так (чтоб пропорции остались)
.picture img{ height:10px;}
Ребята все спасибо за ответы и поддержку..
И еще Роман, поменяйте Вы свой ник, уж очень попахивает...