Здравствуйте, любители InstantCMS 2.x =)
Недавно на форуме была поднята тема в рамках которой я вспомнил об одной своей идее с цветными дефолтными аватарками. Хотя называть эту идею "своей" в корне не правильно, т.к. её я подсмотрел у mail.ru и google.
Основная идея заключается в уходе от серости стандартных аватарок тех пользователей которые не установили свою картинку для однозначной идентификации себя в сообществе ваших сайтов.
И вот, вчера вечером, я не смог удержаться от любопытства и набросал пару строк кода чтобы посмотреть как это может выглядеть в нашей любимой CMS.
Итак, кто не боится хаков (внесение изменений в ядро системы) может также поиграться с изменением аватарок. Для этого в файле ..\system\libs\template.helper.php немного модифицируем функцию html_avatar_image($avatars, $size_preset='small', $alt='') — 261-ая строка:
function html_avatar_image($avatars, $size_preset='small', $alt=''){ // генерируем фоновый цвет из никнейма $bg_color = $alt // выбираем контрастный цвет для текста $yiq = (($r*299)+($g*587)+($b*114)) / 1000; $txt_color = ($yiq >= 128) ? 'black' : 'white'; // более простой метод определения контрастного цвета (менее точный) // $txt_color = (hexdec($bg_color) > 0xffffff/2) ? 'black' : 'white'; $wh = 64; if ($size_preset == 'normal') { $wh = 200; } if ($size_preset == 'micro') { $wh = 32; } $style = "background-color: rgba({$r}, {$g}, {$b}, .7); " // "background-color: #{$bg_color}; " ."color: {$txt_color}; " ."width: {$wh}px; " ."height: {$wh}px; " ."line-height: {$wh}px;" $type = $alt ? 'letter' : 'user-'.$txt_color; //$type = $alt ? 'user-'.$txt_color : 'letter'; return '<div class="avatar-colorbox '.$type.'" title="'.htmlspecialchars($alt).'" style="'.$style.'" data-letter="'.mb_substr($alt, 0, 1).'"></div>'; } $size = $size_preset == 'micro' ? 'width="32" height="32"' : ''; $src = html_avatar_image_src($avatars, $size_preset); }
Теперь добавим немного стилей для наших аватаров (я добавил их в конец файла ..\templates\default\css\theme-gui.css):
.avatar-colorbox { margin: 0; padding: 0; background: no-repeat center; background-size: 1em; } .avatar-colorbox.letter { position: relative; font-family: "Helvetica Neue",Helvetica,Arial,sans-serif!important; font-style: normal; font-weight: 300; text-align: center; text-transform: uppercase; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .avatar-colorbox.letter:before { content: attr(data-letter); display: inline-block; position: absolute; left: 0; right: 0; margin-left: auto; margin-right: auto; } .avatar-colorbox.user-white { background-image: url('data:image/svg+xml;utf8,<svg fill="#ffffff" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/><path d="M0 0h24v24H0z" fill="none"/></svg>'); } .avatar-colorbox.user-black { background-image: url('data:image/svg+xml;utf8,<svg fill="#222222" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/><path d="M0 0h24v24H0z" fill="none"/></svg>'); }
Или можно глянуть на демо-сайте
Стоит отметить что проблема дефолтных аватарок существует достаточно давно и многие предлагают свои варианты ее решения:
https://randomuser.me/ — сервис предлагает свой API для генерации случайных данных пользователя, в том числе и аватаров;
http://8biticon.com/ — а здесь можно генерить случайные аватарки пользователей и использовать их в замен дефолтных. (https://habrahabr.ru/post/163181/ — пост с описанием сервиса);
github.com/tequilarapido/letter-avatar — авторы предоставляют небольшую php-библиотеку для создания цветных буквенных-аватарок и сохранения их в картинки формата jpg и png;
MonsterID — библиотека для генерации уникальных монстроподобных изображений (её плагин для WP);
Wavatars — еще одна php-библиотека;
http://scott.sherrillmix.com/blog/blogger/wp_identicon/ — WP-плагин для создания геометрических аватарок;
http://uifaces.com/ — множество аватарок для мокапов сайтов
Реклама #
WebMan 8 лет назад #
В никах часто бывает не одно слово, а несколько. Мне кажется, можно попробовать подставлять в аватар не по одной букве, а первые буквы из первых двух-трёх слов. Может быть через точку, чтобы не выглядело одним словом. Также можно добавлять точку после второй буквы в варианте с одной-двумя буквами в аватарке, если слов в нике больше двух. Тогда аватарки станут ещё более уникальными и наглядными.
Например, у "Олег Васильевич я" на аве будет "О.В" или "О.В." или "О.В.я", а у "Олег с клещами" - "О.с.к" или "О.с." или "О.с". (Простите, ребята, ничего личного. Вы просто оказались подходящими для примера).
Правда, при трёх буквах иногда могут получаться неприличные слова. Но это уже будут издержки производства. Зато в таком случае человек быстрее поменяет свою аву на что-то более подходящее ему.
Val 8 лет назад #
WebMan 8 лет назад #
Val 8 лет назад #
Val 8 лет назад #
WebMan 8 лет назад #
Андрей 8 лет назад #
Dost 8 лет назад #
Val 8 лет назад #
Iceman 8 лет назад #
Iceman 8 лет назад #
заменил
Val 8 лет назад #
Iceman 8 лет назад #
Val 8 лет назад #
Вы можете мне скинуть какой тег на выходе у вас получается при отсутствии $alt?
Должно быть что-то похожее на это:
Iceman 8 лет назад #
lezginka.ru 8 лет назад #
жаль что без вмешательства в ядро не получается...
Val 8 лет назад #
Данный вариант делался любопытства ради.
WebMan 8 лет назад #
Datiks 8 лет назад #
F_a_R_i_D 8 лет назад #
Val 8 лет назад #
Олег Васильевич я 8 лет назад #
Андрей 8 лет назад #
Jestik 8 лет назад #
Val 8 лет назад #
Fuze 8 лет назад #
1. сделать опцию в компоненте авторизация регистрация "формировать аватары автоматически"
2. если опция включена, то формировать готовый аватар (картинку) по указанному алгоритму, думаю вполне реально
3. все удобно, гибко и универсально.
имхо)
WebMan 8 лет назад #
Pocus 7 лет назад #
Когда оно в офф. версии появилось? Наверное с 2.6?
Я пару месяцев пользовался этим хаком и радовался.
А после выхода 2.7 полез восстанавливать и... заметил переменную $is_html_empty_avatar
Вот только не нашел где её в админке включить.
Val 7 лет назад #
Pocus 7 лет назад #
Кстати, спасибо, и эта и другие ваши работы очень радуют.
WebMan 7 лет назад #
Lobusik 4 года назад #
Yuran 4 года назад #
Посмотрел в коде есть такое:
Yuran 4 года назад #