[gelöst]Text eines Button ändern?
Eingetragen von ThuleNB (379)
am 27.11.2013 - 10:56 Uhr in
am 27.11.2013 - 10:56 Uhr in
Hallo Community,
ich würde gerne den "Speicher"-Button meiner Profil-Edit-Seite umbenennen in "Profil speichern". Das kann ich bestimmt einfach in der HTML-Datei ändern. Mein (Anfänger-)Problem ist allerdings, dass ich die entsprechende Datei nicht finde, in der ich das ändern kann. Kann mir hier jemand auf die Sprünge helfen?
Grüße
Thomas
- Anmelden oder Registrieren um Kommentare zu schreiben
Der richtige Weg geht über
am 27.11.2013 - 11:18 Uhr
Der richtige Weg geht über ein eigenes Minimodul. Darin erstellst Du eine Funktion, die mittels hook_form_alter in dem entsprechenden Formular den Text des Submit-Buttons ersetzt. Am Drupal-Core wird nämlich nicht geändert und die Forms-API, die für die Erstellung von Formularen zuständig ist, gehört zum Core. Hier ist ein Beispiel.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
du wirst keine HTML-Datei finden
am 27.11.2013 - 11:21 Uhr
schon gar keine, die einen Button enthält.
Drupal ist kein Webseitengenerator, sondern ein vollwertiges CMS, das von einer Datenbank gesteuert wird.
Alle Inhalte stehen in der Datenbank.
Ehe du solche Eingriffe machst, befasse die erst mit der grundsätzlichen Technologie, weil du ansonsten sehr schnell frustriert davon läuftst.
Dafür gibt es reichlich Videotutorials, teilweise auch in deutscher Sprache.
Grüße
Ronald
zwei Zeilen reichen aus
am 27.11.2013 - 11:59 Uhr
Nix Frust, das ist ein Zweizeiler.
Du benutzt, wie von wla vorgeschlagen, hook_form_alter() in einem kleinen custom Modul, das Du "savebutton" nennst. Dafür erstellst Du in sites/default/modules oder sites/all/modules/custom ein Verzeichnis "savebutton". Hier kommen zwei Dateien rein, eine safebutton.info und eine safebutton.module.
Du musst nur die ID des Profil- Forms rausfinden. Dazu rufst Du einfach /edit/profile auf und guckst in den Quelltext. Bei mir ist die ID "edit-profile-user-profile-form", bei Dir mit großer Wahrscheinlichkeit auch.
Die savebutton.info Datei:
name = savebutton
description = ändert den Text des Save Buttons im Profil
core = 7.x
package = other
files[] = savebutton.module;
Die savebutton.module Datei:
<?php
/**
*Implements hook_form_alter
*/
function savebutton_form_alter(&$form,$form_state,$form_id = 'edit-profile-user-profile-form'){
$form['actions']['submit']['#value'] = t('Profile erstellen'); // 'Profile erstellen' in Deinen Text ändern
}
?> // Das abschließende PHP Tag im Modul weglassen !!!
Nach dem Speichern der beiden Dateien im Verzeichnis "savebutton" kannst Du das Modul wie üblich über die Modulverwaltung aktivieren. Das ist alles.
Das ist ja cool, hat
am 27.11.2013 - 14:48 Uhr
Das ist ja cool, hat einwandfrei funktioniert! Mein ersten kleines Modul...:-)
Vielen Dank für die Hilfe!!! Insbesondere dir, glycid!!!
Hallo glycid,jetzt ist mir
am 28.11.2013 - 10:44 Uhr
Hallo glycid,
jetzt ist mir gerade aufgefallen, dass sämtliche "Speichern"-Button nun "Profil speichern" heißen. So sieht mein Modul aus:
<?php
/**
*Implements hook_form_alter
*/
function savebutton_form_alter(&$form,$form_state,$form_id = 'profile2-edit-main-form'){
$form['actions']['submit']['#value'] = t('Profil speichern'); // 'Profile erstellen' in Deinen Text ändern
}
?>
Zuerst dachte ich, dass ich die falsche Form-ID verwendet habe. Ich habe diese hier verwendet "profile2-edit-main-form", die laut Quelltext eigentlich aus stimmen sollte:
<form id="profile2-edit-main-form" accept-charset="UTF-8" method="post" action="/drupal722/profile-main/1/edit" enctype="multipart/form-data">
<div>
<div class="field-group-multipage-group-wrapper group-registrierung field-group-multipage-group">
<h2 class="element-invisible">Multipage</h2>
<div class="multipage-panes multipage-processed">
<div id="profile2_main_form_group_allgemeine_informationen" class="field-group-multipage multipage-closed form-wrapper multipage-pane">
<h2 class="multipage-pane-title">
<span>Allgemeine Informationen</span>
Hab ich da noch irgendwo einen Fehler drin?
Da ist ein Fehler im Code. Es
am 28.11.2013 - 11:00 Uhr
Da ist ein Fehler im Code. Es sollte heißen:
<?php
/**
*Implements hook_form_alter
*/
function savebutton_form_alter(&$form,$form_state,$form_id){
if ($form_id != 'profile2-edit-main-form') return;
$form['actions']['submit']['#value'] = t('Profil speichern'); // 'Profile erstellen' in Deinen Text ändern
}
?>
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Hallo Werner, danke für die
am 28.11.2013 - 14:15 Uhr
Hallo Werner,
danke für die Hilfe.
Nachdem ich deinen Code eingefügt habe, sind nun wieder alle Button-Labels im Ursprungsstatus. Leider auch der auf der Profile-Edit-Seite.
Steckt da noch irgendwo der Fehlerteufel drin :)?
Gruß
Thomas
Dann ist die Form-ID falsch
am 28.11.2013 - 14:44 Uhr
Dann ist die Form-ID falsch eingetragen. Darum habe ich mich jetzt nicht gekümmert. ich benutze zum Debuggen eine kleine Funktion, die Inhalte in eine Datei ausgibt.
<?
/*
* My tool to debug and develop the module software :-)
* This will work on Mac OSX and other Unixes
*/
function wla_logging($text) {
$fp = fopen("/tmp/wla_log", "a+");
chmod ("/tmp/wla_log", 0777); // importand to read and clean with an editor
fputs($fp, $text, strlen($text));
fclose($fp);
}
// */
?>
Vor die If-Abfrage einfach die Zeile
<?
wla_logging("$form_id \n");
?>
einbauen, und die Funktion ans Ende des Moduls. Dann kannst Du in der Datei in tmp anschließend nachsehen, welche FormIDs angeliefert wurden. Wenn Du die richtige hast, den Code korrigieren. (Ist vermutlich ein Problem mit "-" und "_")
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Ups, Pardon. Hätte es wohl
am 28.11.2013 - 14:44 Uhr
Ups, Pardon. Hätte es wohl testen sollen. So passt es:
function savebutton_form_alter(&$form, $form_state, $form_id){
// dpm ($form_id);
if ($form_id == 'edit_profile_user_profile_form') {
$form['actions']['submit']['#value'] = t('Profile speichern'); // 'Profile speichern' in Deinen Text ändern
}
}
Drupal verarbeitet die form_id intern mit Unterstrichen!!
Klasse, jetzt funktioniert
am 28.11.2013 - 15:10 Uhr
Klasse, jetzt funktioniert es. Herzlichen Dank an euch!!!