Unterschiedliche Feldbezeichnungen in Edit-Formular via Pagemanager?
am 17.12.2013 - 09:33 Uhr in
Hallo!
Ich nutze den PageManager (cTools) um die Eingabeformulare anzupassen. Hier kann ich z.B. auf Benutzerrollen bezogen einzelne Felder ein- oder ausblenden.
Nun möchte ich einzelne Felder auch unterschiedlich benennen. So soll z.B. das Title-Feld beim Administrator "Titel" heißen, bei einem normalen Benutzer dagegen "Überschrift".
Ich kann nun einzelne Varianten erzeugen und hier - wie bei der Ansicht der Node auch - den Title durch meine Werte überschreiben.
Leider ist das Ergebnis nicht das erwartetet. DRUPAL setzt mir nun (nur im Edit-Formular!) eine Überschrift mit meinem individuellen Titel über das Feld, die ursprüngliche Feldbezeichnung aber trotzdem davor.
Gibt es einen Kniff dies trotzdem mit Pagemanager zu lösen oder muss ich einen gänzlich anderen Ansatz / Modul wählen?
Danke.
Michael
- Anmelden oder Registrieren um Kommentare zu schreiben
Über das Modul Page Manager
am 20.12.2013 - 18:55 Uhr
Über das Modul Page Manager wirst du hier nicht weiterkommen, da du ja die Felder des Formulars selbst verändern möchtest. Um dein Vorhaben umzusetzen, müsstest du auf die Möglichkeiten der Form-API zurückgreifen. Den Titel (also das Label) der einzelnen Felder eines Formulars kannst du mithilfe des hook_form_alter anpassen.
Codebeispiel:
<?php
/**
* Implements hook_form_alter
*/
function mymodule_form_alter(&$form, &$form_state, $form_id) {
// Check for form-id.
if ($form_id == 'page_node_form') {
// Change title of node-form for non-admin users.
// Load the currently logged in user.
global $user;
// Check if the user has the 'editor' role.
if (in_array('editor', $user->roles)) {
$form['title']['#title'] = t('Headline');
}
}
}
?>
Im Codebeispiel wird der Titel für das Node-Formular des Inhaltstypen Page geändert, sofern der aktuell angemeldete Nutzer die Rolle editor besitzt.
SteffenR