В принципе банальная задача - загрузить аватарку в профиле пользователя. Добавляем поле <input type="file" name="data[% user_id%][avatar]" value="" class="w98" /> в шаблоне /tpls/users/register/default.tpl
Только есть одна маленькая неприятность: если пользователь решил отредактировать любое другое поле, а вышеупомянутое оставил пустым, то после обновления данных старая аватарка стирается.
Возможно есть стандартное решение. В 2.7.4 у пользователя появилось поле userpic - "Загрузить новую аватарку". Правда в моем варианте оно почему-то не работает, поэтому пришлось дописать свой обработчик события.
В модуле users создаем файл custom_events.php
<?php
new umiEventListener("users_settings_do", "users", "loadAvatar");
?>
Там же в customMacros.php добавляем метод loadAvatar
public function loadAvatar(iUmiEventPoint $oEventPoint) {
$user_id = $oEventPoint->getParam("user_id");
if($oEventPoint->getMode() != "after") {
$user = umiObjectsCollection::getInstance()->getObject($user_id);
$avatar_id = $user->getValue("userpic");
if ($avatar_id) $user->setValue("avatar", $avatar_id);
$user->commit();
}
else return;
}
В шаблоне ставим поле /tpls/users/register/default.tpl <input type="file" name="data[% user_id%][userpic]" value="" class="w98" />