Antworten:
Sie können versuchen , Feld Berechtigungen Modul
Eigenschaften
- Aktivieren Sie Feldberechtigungen für jede Entität, nicht nur für Knoten.
- Rollenbasierte Feldberechtigungen, die je nach Zugriff des Benutzers unterschiedliche Anzeigemuster ermöglichen.
- Berechtigungen auf Autorenebene ermöglichen das Anzeigen und Bearbeiten von Feldern basierend darauf, wer der Entitätseigentümer ist.
- Berechtigungen für jedes Feld sind standardmäßig nicht aktiviert. Stattdessen können Administratoren diese Berechtigungen explizit für die Felder aktivieren, in denen diese Funktion benötigt wird.
Wenn Sie dies in einem benutzerdefinierten Modul tun möchten
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
nicht my_module_form_user_profile_form_alter
.
Legen Sie die Eigenschaft für die Sichtbarkeit von Feldern nur für anonyme Benutzer fest. Der Wert wird also zum Zeitpunkt der Registrierung gespeichert. Dann kann niemand auf dieses Feld zugreifen. Sobald Sie das Feldberechtigungsmodul installiert haben, wird diese Option nur für anonyme Benutzer angewendet.
Versuchen Sie es mit hook_form_alter
, siehe folgendes Beispiel:
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;
}
}
Platzieren Sie diesen Code in einem benutzerdefinierten Modul. Das Feld kann neue Inhalte enthalten, ist jedoch deaktiviert, um sie zu bearbeiten.
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;
}
}}