Risposte:
Puoi provare il modulo Autorizzazioni campo
Caratteristiche
- Abilita le autorizzazioni di campo su qualsiasi entità, non solo sui nodi.
- Autorizzazioni di campo basate sul ruolo che consentono diversi schemi di visualizzazione in base all'accesso dell'utente.
- Le autorizzazioni a livello di autore consentono la visualizzazione e la modifica dei campi in base a chi è il proprietario dell'entità.
- Le autorizzazioni per ciascun campo non sono abilitate per impostazione predefinita. Al contrario, gli amministratori possono abilitare esplicitamente queste autorizzazioni per i campi in cui è necessaria questa funzionalità.
Se vuoi farlo nel modulo personalizzato
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
, no my_module_form_user_profile_form_alter
.
Rendi la proprietà di visibilità del campo solo per utenti anonimi. Quindi il valore verrà archiviato al momento della registrazione. Quindi nessuno può accedere a quel campo. Una volta installato il modulo di autorizzazione sul campo, troverai questa opzione da applicare solo a utenti anonimi.
Prova a usare hook_form_alter
, vedi l'esempio seguente:
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;
}
}
inserisci questo codice in un modulo personalizzato, il campo sarà in grado di nuovi contenuti ma sarà disabilitato per modificarlo.
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;
}
}