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

+47
1.72K
Надеюсь это что-то полезное 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 9 лет назад #
а а виде плагина организовать не думали) было бы проще устанавливать и удалять)

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

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

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

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

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

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

Еще от автора

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