Генерируем аватар с первой буквой пользователя
Данную задачу я встречаю впервые, поэтому возможно упускаю какую-то инструкцию.
Используется библиотека Letter Avatar
Эту библиотеку можно скачать с гитхаба и подключить, либо через composer
Я использовал composer
Необходимо создать плагин setUserAvatar на событие OnUserSave
В качестве источника букв можно указать любое поле
Используется библиотека Letter Avatar
Эту библиотеку можно скачать с гитхаба и подключить, либо через composer
Я использовал composer
Необходимо создать плагин setUserAvatar на событие OnUserSave
<?php
require_once(MODX_BASE_PATH.'assets/lib/vendor/autoload.php');
use YoHang88\LetterAvatar\LetterAvatar;
// если необходимо назначать аватар только при создании пользователя, добавьте условие
// && $mode == 'new'
if ($modx->event->name === 'OnUserSave') {
$profile = $user->getOne('Profile');
$username = $profile->get('username'); // источник букв
if(!$avatar = $profile->get('photo')) {
$avatar = new LetterAvatar($username, 'square', 100);
$avatar_name = $username.'_'.time().'.jpg';
$avatar->saveAs(MODX_BASE_PATH.'assets/images/users/'.$avatar_name , LetterAvatar::MIME_TYPE_JPEG);
$profile->set('photo','assets/images/users/'.$avatar_name);
$profile->save();
}
}
В качестве источника букв можно указать любое поле
Комментарии: 6
Для этого не нужна отдельная библиотека для генерации jpg можно использовать svg:
<svg xmlns="http://www.w3.org/2000/svg"
width="50"
height="50"
viewBox="0 0 50 50">
<rect fill="#dedede"
width="50"
height="50"/>
<text fill="rgba(0,0,0,0.6)"
font-family="sans-serif"
font-size="20"
dy="8"
font-weight="bold"
x="50%"
y="50%"
text-anchor="middle">{{ getFirstLetter(fio) }}
</text>
</svg>
Только нужно написать еще принцип генерации цвета. =)
Вариант отличный, но мне немного не подошел, нужны были разные цвета, пользователь может потом в ЛК сменить аватарку. Да и в дереве комментариев удобнее просто вывести фото из профиля
А я всю дорогу на css делал. Первые буквы легко феномом или сниппетом получить, а дальше вопрос оформления.
мне показалось что удобнее 1 раз сформировать аватарку и все
Да вполне себе так тоже можно
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.