2013-07-26 129 views
-1

我在Drupal 7網站上禁用了用戶註冊。只有管​​理員可以創建帳戶。根據角色向Drupal 7用戶配置文件添加自定義字段

我想爲用戶添加自定義字段,具體取決於用戶已由管理員分配的角色。現在我想向註冊系統添加一些字段,這些字段取決於管理員選擇的角色。

例如:如果管理員已創建角色A的用戶帳戶和角色B的另一個帳戶。 當用戶登錄時,應要求用戶A輸入電話號碼,而應請求第二個用戶輸入家庭地址。

我試過profile2模塊,但我無法實現我想要的。

+0

嗨馬赫迪alikhasi,請嘗試寫出精確的問題! @ TheodorosPloumis的答案也解決了你想要的問題。接受他的回答是正確的,因爲這有助於用戶解決類似問題,以更快解決問題 –

回答

0

conditional_fields模塊,這聽起來像它會讓你大部分的方式。

如果失敗,我會說你最好的選擇是在自定義模塊中使用hook_form_alter()。 喜歡的東西:

function yourmodule_form_alter(&$form, &$form_state, $form_id) { 
    if ($form_id == 'user_register') { 
    // Define the phone field. 
    $form['phone'] = array(
     '#type' => 'textfield', 
     '#title' => t('Phone'), 
     '#size' => 30, 
     '#maxlength' => 30, 
     'settings' => array(
     '#states' => array(
      // Hide this field when role A isn't checked. 
      'invisible' => array(
      ':input[role="A"]' => array('checked' => FALSE), 
     ), 
     ), 
    ), 
    ); 
    // Define home address field 
    // [copy the snippet above & tweak to suit...] 
    } 
} 

這是不太可能的工作開箱(我不Drupal的環境中手),但也有一些適應它應該讓你大部分的方式存在。

「':input [role =」A「]'=> array('checked'=> TRUE),」line將需要最多的工作,即「角色」將需要匹配「角色」複選框,並且「A」需要在檢查時與A的實際值相對應。

如果您的模塊中沒有其他form_alter用法,您可以考慮用「yourmodule_user_register_form_alter」替換函數名稱。

2

使用User_Role_Field模塊可以完全按照您的需要進行操作。如果您需要更好地配置每個角色,請使用Field_Permissions模塊。

請注意,用戶註冊後,字段顯示在用戶配置文件下而不是註冊表單中。你的問題有點混亂...

+0

謝謝! Field_Permissions很好地完成了這項工作 –

相關問題