Réponses:
Vous pouvez essayer le module des autorisations de champ
Caractéristiques
- Activez les autorisations de champ sur n'importe quelle entité, pas seulement sur les nœuds.
- Autorisations de champ basées sur les rôles permettant différents modèles d'affichage en fonction de l'accès dont dispose l'utilisateur.
- Les autorisations au niveau de l'auteur permettent d'afficher et de modifier des champs en fonction de l'identité du propriétaire de l'entité.
- Les autorisations pour chaque champ ne sont pas activées par défaut. Au lieu de cela, les administrateurs peuvent activer ces autorisations explicitement pour les champs où cette fonctionnalité est nécessaire.
Si vous voulez le faire dans un module personnalisé
my_module_form_user_profile_form_alter(&$form, &$form_state) {
// Since it is on registration form, field might be reqruied.
$form['your_field']['#required'] = FALSE;
$form['your_field']['#access'] = FALSE;
}
my_module_form_user_register_form_alter
, non my_module_form_user_profile_form_alter
.
Rendre la propriété de visibilité des champs réservée aux utilisateurs anonymes. La valeur sera donc stockée au moment de l'inscription. Ensuite, personne ne peut accéder à ce champ. Une fois que vous avez installé le module d'autorisation de champ, vous trouverez que cette option ne s'applique qu'à un utilisateur anonyme uniquement.
Essayez d'utiliser hook_form_alter
, voir l'exemple ci-dessous:
function MODULENAME_form_alter(&$form_state, $form_id){
global $user;
//$form_id :: user detail edit form id
if($user->uid != 0 && $form_id == "required_form_id"){
//$field :: requied field name
$form[$field]['#access'] = FALSE;
}
}
placez ce code dans un module personnalisé, le champ pourra sur le nouveau contenu mais sera désactivé pour le modifier.
if ($form_id == 'YOUR_FORM_ID') {
//dsm($form);
// for user form use '#user' instead of '#node' and uid instead of nid
if (isset($form['#node']) && isset($form['#node']->nid)){
// Prevent editing a field once the node has been created
// hiding the field entirely on the edit form.
$form['field_name']['#access'] = FALSE;
// disable update field on the edit form (gray color).
$form['field_name']['#disabled'] = TRUE;
}
}