Есть ли модуль, который может создавать разные регистрационные формы для разных ролей во время регистрации? (например, каждая роль редактора, главного пользователя, дополнительного пользователя имеет разную форму)
как мне сделать другую регистрационную форму в drupal?
Ответы (3)
Там есть :)
http://drupal.org/project/autoassignrole
для назначения по пути вам также понадобится Content Profile:
http://drupal.org/project/content_profile
посмотрите этот урок о том, как это сделать:
http://www.web-a-team.com/blog-post/user-registration-more-one-role
Вот что вы должны сделать
- начните с установки profile2-7.x-1.2.tar.gz.
- entity-7.x-1.0-rc3.tar.gz после установки profile2 -->
- включить --> нажмите "Настроить" - (Здесь вы видите свои типы профилей - добавьте столько, сколько хотите).
когда вы добавляете новый или изменяете существующий «Основной», убедитесь, что вы отметили «Предоставить отдельную страницу для редактирования профилей». 4. Теперь, чтобы установить и включить разные страницы регистрации, логина и пароля, profile2_regpath-7.x-1.9.tar.gz. Теперь снова посетите страницу типов профилей, здесь вы должны увидеть «УНИКАЛЬНЫЙ ПУТЬ РЕГИСТРАЦИИ»... остальное просто..
Вот некоторая идея, как решить ваш вопрос в drupal 7 (я думаю, что это должно работать и в drupal 6). Однако это небезопасно, поскольку любой может просто изменить свою роль:
function my_module_form_user_register_form_alter(&$form, &$form_state, $form_id) {
$company_role = $form_state['build_info']['args'][0];
$form['account']['company_role'] = array(
'#type' => 'select',
'#title' => t('Company role'),
'#options' => drupal_map_assoc(array('editor','main user','Sub User')),
'#description' => t('Please select your company role'),
"#empty_option" =>t('- Select -'),
'#weight' => -11, // Add the select box above username that have weight -10
);
switch (strtolower($company_role)) {
case 'editor':
// add extra fields for editor
$form['account']['company_role']['#default_value'] = $company_role;
break;
case 'main user':
// add extra fields for main
$form['account']['company_role']['#default_value'] = $company_role;
case 'sub user';
// add extra fields for 'Sub User'
$form['account']['company_role']['#default_value'] = $company_role;
break;
default:
$form['account']['company_role']['#empty_option'] = t('- Select -');
$company_role = null;// error handling or default case
}
}
Если, например, в вашей компании есть LDAP, вы можете вместо этого получить эту информацию от LDAP(https://www.drupal.org/node/1053748). Тогда вы сможете быть более уверены в том, что роль выбрана правильно.