[gelöst] Login Form - Benutzername - Beschreibung ändern
am 22.07.2009 - 17:11 Uhr in
Hallo zusammen
Vorab:
Ich benutze das Login über einen Link /user/. Den Login-Block habe ich ausgeblendet.
Was ich ändern wollte:
Unter dem Textfeld des Benutzernamens hat es eine Beschreibung welche wie folgt aussieht:
Geben Sie Ihren [Seitentitel]-Benutzernamen ein.
Da mein Seitentitel relativ lang ist, finde ich das ziemlich unschön. Also nahm ich mir vor, dies zu ändern.
Meine Recherchen:
Natürlich habe ich mich dann durch das Forum gekämpft. (Die Handbücher hatte ich eh schon grösstenteils gelesen) Es gab einige Threads zum Thema eigenes Login-Form. Da ich jedoch das "Form" selber nicht ändern will und nur die Beschreibung dachte ich mir, versuch ich mal was.
Mein Versuch:
Ich versuchte Drupalisch zu denken...
In /modules/user/user.module fand ich folgende Passage:
function user_login(&$form_state) {
global $user;
// If we are already logged on, go to the user page instead.
if ($user->uid) {
drupal_goto('user/'. $user->uid);
}
// Display login form:
$form['name'] = array('#type' => 'textfield',
'#title' => t('Username'),
'#size' => 60,
'#maxlength' => USERNAME_MAX_LENGTH,
'#required' => TRUE,
);
$form['name']['#description'] = t('Enter your @s username.', array('@s' => variable_get('site_name', 'Drupal')));
$form['pass'] = array('#type' => 'password',
'#title' => t('Password'),
'#description' => t('Enter the password that accompanies your username.'),
'#required' => TRUE,
);
$form['#validate'] = user_login_default_validators();
$form['submit'] = array('#type' => 'submit', '#value' => t('Log in'), '#weight' => 2);
return $form;
}Mit der Zeile
$form['name']['#description'] = t('Enter your @s username.', array('@s' => variable_get('site_name', 'Drupal')));dachte ich mich schon fast am Ziel. (Enter your @s username. hatte ich auch bei der Sprachübersetzung gefunden.)
Ich machte eine template.php in meinem Themes-Verzeichnis und kopierte das ganze hinein. Die folgenden zwei Zeilen änderte ich:
function user_login(&$form_state) {
nach
function meintheme_user_login(&$form_state) {Bei "meintheme" steht natürlich mein Themename.
sowie
$form['name']['#description'] = t('Enter your @s username.', array('@s' => variable_get('site_name', 'Drupal')));
nach
$form['name']['#description'] = t('Enter your username.');
Dann habe ich alle Caches gelehrt und versuchte mein Glück. Leider nein.
Kann mir da jemand helfen?
- Anmelden oder Registrieren um Kommentare zu schreiben

user_login ist keine
am 23.07.2009 - 10:27 Uhr
user_login ist keine themebare Funktion.
(siehe http://api.drupal.org/api/group/themeable)
themen kannst Du das Login trotzdem:
zum Beispiel so:
http://drupal.org/node/92657
oder indem Du ein Template für den entsprechenden Block erstellst.
Gruss
Adriana
hmm...
am 23.07.2009 - 15:53 Uhr
Besten Dank.
Ich habe mir diese Anleitungen angeschaut. Irgendwie habe ich es jedoch damit noch nicht zustande gebracht, dies zu realisieren.
Dann habe ich folgenendes Probiert:
Die Funktion in der template.php habe ich belassen.
In http://www.drupalcenter.de/node/4049 habe ich folgenden Code gefunden:
print drupal_get_form('user_login');Nun habe ich eine Seite namens Login erstellt. Als Inhalt hatte ich diesen PHP-Code wie folgt eingepflanzt:
print drupal_get_form('meintheme_user_login');So wie es in der template.php erstellt wurde.
Nun, wenn ich die Seiten-Vorschau anschaue, leitet es mich gemäss der Funktion auf die Userseite um. Sobald ich jedoch die Seite abspeichern will, kommt danach folgende Fehlermeldung:
warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'rebotheme_user_login' was given in D:\www\www645\drupal\includes\form.inc on line 366.
Was habe ich da falsch gemacht?
Ps. Wenn das dann halt nicht funktioniert, werde ich warscheinlich einfach den 'user_login_block' in diese Seite einfügen und mit CSS leicht anpassen. Aber obengenannte Lösung wäre natürlich schon toll. Zumal ich ja eigentlich wirklich nur ein kleiner Satz aus dem /user Login entfernen möchte.
Halt - habe mich umentschieden
am 23.07.2009 - 16:04 Uhr
Habe mir gerade überlegt, dass ich die Description unter den Eingabefeldern gar nicht unbedingt brauche.
Ich werde jetzt also einfach folgende Zeile in meine Seite Login einfügen:
<?phpprint drupal_get_form('user_login_block');
?>
Diesen werde ich explizit für diesen 'Login'-Node mit CSS umformatieren.
Vielleicht nehme ich den Login-Block auch aus dem Block-Menu und lasse ihn im Inhaltsbereich anzeigen, und beschränke den Block auf die Login-Seite. Kann ihn ja auch so mit CSS umformatieren. So könnte ich die PHP-Unterstützung wieder entfernen. Brauche ich für diese Seite eh nicht....
Na ja, ich glaube so wird das was. Besten Dank auf jeden Fall für deine Hilfe. Dies werde ich für eine andere Seite sehr gut gebrauchen können, denke ich.
Liebe Grüsse