На этом сайте были вопросы, как сделать загрузку аватара при регистрации. На drupal.org есть различные рецепты, но как всегда пришлось собирать работающую версию из нескольких
Шаг 1.
function mym_form_alter($form_id, &$form) {
if ($form_id == 'user_register') {
$form['picture'] = array('#type' => 'fieldset', '#title' => t('Picture'), '#weight' => 1);
$form['picture']['picture_upload'] = array(
'#type' => 'file',
'#title' => t('Upload picture'),
'#size' => 48,
'#description' => t('Your virtual face or picture. Maximum dimensions are %dimensions and the maximum size is %size kB.', array('%dimensions' => variable_get('user_picture_dimensions', '85x85'), '%size' => variable_get('user_picture_file_size', '30'))) .' '. variable_get('user_picture_guidelines', ''),
);
$form['#attributes']['enctype'] = 'multipart/form-data';
}
#required в данном случае ставить не нужно, даже если мы хотим сделать закачку обязательной, но не будет значка, что поле обязательное.
Шаг 2.
function mm_user($op, &$edit, &$account, $category = NULL) {
if ($op == 'validate' and $account['form_id'] == 'user_register') {
if ($file = file_check_upload('picture_upload')) {
// getting next id - you cannot use db_next_id!!
$res = db_query('SELECT MAX(uid) uid FROM {users}');
$user = db_fetch_object($res);
// this is now our future user
$user->uid++;
user_validate_picture($file, $edit, $user);
} else {
form_set_error('picture_upload', 'Вы должны закачать аватар');
}
}
}
Код взят из той ветки с drupal.org. Теоретически он может перепутает аватары если одновременно будет сразу две регистрации, но будем надеяться такого не произойдет.
Если загрузка аватара проинудительная не нужна, то нужно убрать else.
Все довольно просто и работает.