Another обрезка аватаров их редактирование и смена администратором

+47
2.19K
Надеюсь это что-то полезное hohoИтак, возможности: заливка аватаров в отдельный альбом, выбор области для аватара профиля после заливки её в альбом, а затем выбор квадратной аватарки для других мест из основного (при чём это можно производить снова и снова, не загружая аватар ещё раз), редактирование аватаров, а также выбор из коллекции админом.
1. Скачиваем архивчег.

2. Заливаем содержимое папки "upload" из архива на сервер.

3. Выполним запросы к мускулу:
  1. ALTER TABLE `cms_user_albums` ADD `it_avs` TINYINT NOT NULL DEFAULT '0' AFTER `user_id`;
  2. ALTER TABLE `cms_user_photos` ADD `it_ava` TINYINT NOT NULL DEFAULT '0' AFTER `album_id`
4. Для задания размеров аватаров в галерее, а также размеров изображений для пользовательских галерей (странно почему этого не было сразу предусмотрено), производим в файле /admin/components/users/backend.php следующее:
После:
  1. 65 $cfg['medw'] = cmsCore::request('medw', 'int', 200);
  2. 66 $cfg['medh'] = cmsCore::request('medh', 'int', 200);
Вставляем:
  1. $cfg['sw_photo_w'] = cmsCore::request('sw_photo_w', 'int', 600);
  2. $cfg['sw_photo_h'] = cmsCore::request('sw_photo_h', 'int', 800);
После:
  1. 295 <tr>
  2. <td>
  3. <strong>Наносить водяной знак:</strong>
  4.  
  5. <span class="hinttext">Если включено, то на все загружаемые фотографии будет наносится изображение из файла &quot;<a href="/images/watermark.png" target="_blank">/images/watermark.png</a>&quot;</span>
  6. </td>
  7. <td valign="top">
  8. <label><input name="watermark" type="radio" value="1" <?php if ($model->config['watermark']) { echo 'checked="checked"'; } ?>/> Вкл</label>
  9. <label><input name="watermark" type="radio" value="0" <?php if (!$model->config['watermark']) { echo 'checked="checked"'; } ?>/> Выкл</label>
  10. </td>
  11. 304 </tr>
Вставляем:
  1. <tr>
  2. <td><strong>Ширина: </strong></td>
  3. <td><input name="sw_photo_w" type="text" id="sw_photo_w" size="5" value="<?php echo $model->config['sw_photo_w'];?>"/> пикс.</td>
  4. </tr>
  5. <tr>
  6. <td><strong>Высота: </strong></td>
  7. <td><input name="sw_photo_h" type="text" id="sw_photo_h" size="5" value="<?php echo $model->config['sw_photo_h'];?>"/> пикс.</td>
  8. </tr>
В файле /components/users/photos.php заменить:
  1. 98 @img_resize($uploadphoto, $uploadthumb['medium'], 600, 600, false, false);
На:
  1. @img_resize($uploadphoto, $uploadthumb['medium'], $model->config['sw_photo_w'], $model->config['sw_photo_h'], false, false);
Выше находится строка, отвечающая за превьюшки, можете поменять там значения 96 на требуемые вам.


5. В файле /components/users/frontend.php заменить:
  1. //============================================================================//
  2. //============================= Загрузка аватара ============================//
  3. //============================================================================//
  4. От сих
  5.  
  6. До сих:
  7. //============================================================================//
  8. //======================== Работа с фотографиями ============================//
  9. //============================================================================//
Тем, что в инструкции в архиве, здесь почему-то обрезается код.

6. Файл /components/users/model.php :
Меняем строку:
  1. 720 $album = $this->inDB->get_fields('cms_user_albums', "id='{$id}'", 'id, user_id, title, allow_who, description');
На:
  1. $album = $this->inDB->get_fields('cms_user_albums', "id='{$id}'", '*');
Меняем строку:
  1. 766 $private_sql = "SELECT id, pubdate, imageurl as file, hits, title
На:
  1. $private_sql = "SELECT id, pubdate, imageurl as file, hits, title, it_ava
После:
  1. 827 $sql = "SELECT a.id as id,
  2. a.title as title,
  3. a.pubdate as pubdate,
  4. a.allow_who as allow_who,
  5. 'private' as type,
  6. p.imageurl as imageurl,
Вставляем:
  1. a.it_avs as it_avs,
7. В com_users_profile.tpl вашего шаблона меняем:
  1. 108 <tr>
  2. <td><img src="/templates/{template}/images/icons/profile/avatar.png" /></td>
  3. <td><a href="/users/{$usr.id}/avatar.html" title="{$LANG.SET_AVATAR}">{$LANG.SET_AVATAR}</a></td>
  4. </tr>
На:
  1. {/if}
  2. {if $is_admin || $myprofile}
  3. <tr>
  4. <td><img src="/templates/{template}/images/icons/profile/avatar.png" /></td>
  5. <td><a href="/users/{$usr.id}/avatar.html" title="{$LANG.SET_AVATAR}">{$LANG.SET_AVATAR}</a></td>
  6. </tr>
  7. {/if}
  8. {if $myprofile}
8. В com_users_photos.tpl вашего шаблона меняем строки:
  1. 5 и 18 {if ($my_profile || $is_admin) && $album_type == 'private'}
На:
  1. {if ($my_profile || $is_admin) && $album_type == 'private' && !$album.it_avs}
9. В com_users_photo_submit.tpl вашего шаблона:
Меняем строку:
  1. 32 <option value="{$album.id}" {if $album_id == $album.id} selected="selected"{/if}>{$album.title}</option>
На:
  1. {if !$album.it_avs}<option value="{$album.id}" {if $album_id == $album.id} selected="selected"{/if}>{$album.title}</option>{/if}
10. Заходим в настройки пользовательских профилей и задаём значения размеров фотографий (если вы хотите, чтобы всё происходило как и до этого, то задаёте значения: 600).

Вот и всё на этом.

UPDATE:
В файле /components/users/frontend.php после:
  1. 757 $w = $inCore->request('w', 'int', $model->config['medw']);
  2. $h = $inCore->request('h', 'int', $model->config['medw']);
Строка должна иметь вид:
  1. $scale = ($model->config['medh'] / $model->config['medw'] < $h / $w) ? $model->config['medh'] / $h : $model->config['medw'] / $w;
Это для ограничения аватара профиля по высоте.
0
Def Def 12 лет назад #
а а виде плагина организовать не думали) было бы проще устанавливать и удалять)

и обрезка осуществляется а-ля вконтакте или как то по другому?
+1
lokanaft lokanaft 12 лет назад #
В виде плагина для тупиковой версии?
И вообще это не wp, где свободного места нету без вызова плагинов, здесь плагины обрабатывают массивы с контентом и ещё в совсем специфичных местах, всё.
+2
VonKruger VonKruger 12 лет назад #
Где демо? Хоть посмотреть для начала, прежде чем все эти танцы с бубном выделывать :)
0
lokanaft lokanaft 12 лет назад #
http://new.mopedist.ru , входите под любым логином, у всех пароль 123456
0
lokanaft lokanaft 12 лет назад #
И вообще вас никто не заставляет выделываться, не нужно - проходите мимо, какие могут быть вопросы?
0
alexbabo alexbabo 12 лет назад #
Да интересно,а можно ли такое сделать для фотографий к статьям?
0
alexbabo alexbabo 12 лет назад #
Мой вопрос прошел на замеченным smile Почему я его задал-в настройках статей, для главной фотографии статьи можно задать только ширину,поэтому когда пльзователи добавляют статьи и загружают фотографию они получаются все разные,что нарушает визуальный дизайн зайта.Хотелось чтоб все фотки статей было одного размера.Ето полезно как для дизайна так и для вывода во всяких новостных слайдерах.Обрезание самый хороший вариант.Можно ли такое организовать?
0
lokanaft lokanaft 12 лет назад #
Лет пять назад я делал такое, но оно оказалось невостребованным. Всё таки лучше для слайдера обрабатывать фотки вручную и загружать.
0
alexbabo alexbabo 12 лет назад #
Ваш вариант можно как применить? Подскажите как я попробую сделать:)
0
VonKruger VonKruger 12 лет назад #
Да нет, нужно, просто хотелось посмотреть как это выглядит. Спасибо что показали
Олег Васильевич я Олег Васильевич я 12 лет назад #
Комментарий удален
+1
Крот Крот 12 лет назад #
думаю полезная вещь, попробую сегодня
0
Def Def 12 лет назад #
был в блогах вариант с обрезкой на аяксе, правда жаль админ не мог там редактировать аватарки юзеров.

здесь в этом плане и преимущества
0
st.Puh st.Puh 12 лет назад #
При второй обрезке дало розтянуть форму обрезки на всю авку теперь на форуме авка за большая.
+1
st.Puh st.Puh 12 лет назад #
Вот сделал снимок того что вышло
""
0
lokanaft lokanaft 12 лет назад #
У меня размер маленького аватара был 100, а не 64, поэтому так. Сейчас поменял на 64 и всё нормально.
0
VonKruger VonKruger 12 лет назад #
5. Заменить: Код PHP:
Тем, что в инструкции в архиве, здесь почему-то обрезается код.
объясните в каком файле выполеять этот пункт, дело в том, что в файле /components/users/photos.php я что-то не обнаружил таких строк. Версия движка 1.10
0
VonKruger VonKruger 12 лет назад #
как там хоть строки начинаться должны?
+2
VonKruger VonKruger 12 лет назад #
Все, нашел. Это в файле /components/users/fronted.php нужно менять. Автор исправь пожалуйста.
0
Def Def 12 лет назад #
вот бы к клубам приделать, чтобы у изображения клубов маленькая обрезалась всегда одинакового формата, а вот больую уже автор обрезал сам.

Тогда в списке клубов все превьюшки клубов будут одного размера.
0
alexbabo alexbabo 12 лет назад #
Мне интересно,если мне не нужно обрезка, а нужна только радактирование и смена аватара админом,каие шаги нужно сдлеать по инструкции а какие нет?Спасибо
0
alexbabo alexbabo 11 лет назад #
А можно как то сделать различную обрезку по размеру для разных групп пользователей?Например группа "Организации",у которой свой шаблон,и аватарка наверху как шапка-лого и чтоб для них аватарка вырезалась 800х200пх(как шапка-лого их страницы),а для группы "Люди"-как обычно.Спасибо.
+1
Рома из Headpix Рома из Headpix 11 лет назад #
в файле com_users_avatar_upload в 53 строке нужно удалить лишний </div> ато шаблон будет косячить.
спасибо за проделанную работу
0
Рома из Headpix Рома из Headpix 11 лет назад #
6. Файл /components/users/model.php :
строка 827.
если вставить a.it_avs as it_avs, то потом не отображаються личние фотоальбомы

"Нет доступных фотографий, возможно, у вас нет прав для просмотра этого альбома."

но фото есть.
ну или это ошибка в 720 строке или 766

в общем после редактирования этого файла, доступ к личным фото пропадает. (даже в админа сайта. заметила на сайте, перетестила на чистой системе локально)
0
Aleks Shultz Aleks Shultz 11 лет назад #
Доброе время суток, хак отличный, + однозначный. Интересует вопрос, как сделать ratio 1:1 для выбора основного аватара, а не только маленького? Со вторым все отлично, квадратик окна только с одинаковым соотношением сторон, а вот с основным как решить?
0
lokanaft lokanaft 11 лет назад #
Админка &#8594; Компоненты &#8594; Профили пользователей &#8594; Аватары, поменяйте там значения и будет вам счастье.

Еще от автора

Ajax подгрузка контента для двойки
Ну что, товарищи, сегодня вы своими руками сможете сделать ajax подгрузку записей контента.
AJAX подгрузка комментов для двойки
Как следует из названия, дополнение ограничивает полный вывод всех комментов записи и позволяет пользователю при необходимости посмотреть следующие.
ContentWatch - проверка уникальности добавляемого контента для icms2
Компонент позволяет проверять уникальность текста с помощью сервиса Content-Watch.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.