Login Block überschreiben
am 17.04.2009 - 15:59 Uhr in
Moin an alle,
durch die Suche im Forum weiß ich dass die Thematik den Login Block zu überschreiben schon mehr fach durchgekaut wurde. Aber ich bekomme es einfach nicht hin. Ich bin unter anderem auf diese Threads gestoßen:
http://www.drupalcenter.de/node/5083
http://drupal.org/node/350634
http://drupal.org/node/19855
http://www.nicklewis.org/node/845
Hier mal die Infos und Schritte die ich unternommen habe:
1. Mein Theme heißt "yaml_3col_mks_standard"
2. Folgende zwei Funktionen habe ich in die template.php des Themes eingefügt:
function yaml_3col_mks_standard_theme() {
drupal_set_message('yaml_3col_mks_standard_theme'); # debug output
return array(
'user_login' => array(
'template' => 'user-login',
'arguments' => array('form' => null),
)
);
}
function yaml_3col_mks_standard_preprocess_user_login(&$variables) {
drupal_set_message('yaml_3col_mks_standard_preprocess_user_login'); # debug output
$variables['intro_text'] = t('This is my awesome login form');
$variables['rendered'] = drupal_render($variables['form']);
}3. Ich habe eine Datei user-login.tpl.php im Theme-Verzeichnis angelegt, und diesen Code eingefügt:
<p><?php print $intro_text; ?></p>
<div class="my-form-wrapper">
<?php print $rendered; ?>
</div>4. Ich habe den Cache geleert bzw. neu aufgebaut.
Das Leeren des Caches habe ich auch mehrfach mit dem Devel-Modul vorgenommen. Dabei konnte ich anhand der Debugausgabe feststellen, das zumindest die Funktion "yaml_3col_mks_standard_theme()" aufgerufen wird. Die Funktion "yaml_3col_mks_standard_preprocess_user_login()" wird jedoch nicht aufgerufen
Kann mir jemand sagen wo ich den Fehler mache?
Vielen Dank schon mal, und beste Grüße
djdops
- Anmelden oder Registrieren um Kommentare zu schreiben

Login Block
am 17.04.2009 - 16:11 Uhr
Für den Login-Block musst du dieses Template anlegen: user-login-block-form.tpl.php
Deines ist für die Login-Seite (/user/login)
vg
--
md - DrupalCenter.de
mdwp* :: Drupal Consulting
Es gibt keine Theme-Funktion
am 17.04.2009 - 16:14 Uhr
Es gibt keine Theme-Funktion dafür siehe http://api.drupal.org/api/function/user_theme/6 .
Also kannst du nur durch http://api.drupal.org/api/function/hook_form_alter/6 das Formular beeinflussen.
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Vielen Dank
am 17.04.2009 - 16:26 Uhr
Vielen Dank, für die schnellen Antworten. Ihr mögt beide recht haben, aber ich hab es jetzt doch geschafft. Der Fehler lag in der Funktion "yaml_3col_mks_standard_theme()". Diese muß wie folgt aussehen:
function yaml_3col_mks_standard_theme($existing, $type, $theme, $path) {drupal_set_message('yaml_3col_mks_standard_theme'); # debug output
return array(
'user_login_block' => array(
'template' => 'user-login',
'arguments' => array('form' => null),
)
);
}
Es muß "user_login_block" heißen, und nicht "user_login". "user_login_block" ist eine Funktion, welche vom User-Modul (Z:731) in der Funktion "user_block" aufgerufen wird, wenn $op = 'view' und $delta = 0.
Trotzdem nochmal vielen Dank.
Beste Grüße
djdops
----------------------------
Wenn man sich vornimmt nichts zu tun, und das auch schafft, hat man dann etwas getan?
Spartacus schrieb Es gibt
am 17.04.2009 - 16:33 Uhr
Es gibt keine Theme-Funktion dafür siehe http://api.drupal.org/api/function/user_theme/6 .
Also kannst du nur durch http://api.drupal.org/api/function/hook_form_alter/6 das Formular beeinflussen.
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Aber mit einem eigenen Template geht es schon. Siehe hier: http://4-seasons.tv/user
Hab ich mit einer user-login.tpl.php gemacht. Da das die Seite und nicht der Login-Block ist.
vg
--
md - DrupalCenter.de
mdwp* :: Drupal Consulting
Ergänzung
am 17.04.2009 - 16:37 Uhr
Noch eine nicht unwesentliche Ergänzung: Die Funktion "yaml_3col_mks_standard_preprocess_user_login()" muß dann auch "yaml_3col_mks_standard_preprocess_user_login_block()" heißen.
Beste Grüße
djdops
----------------------------------
Wenn man sich vornimmt nichts zu tun, und das auch schafft, hat man dann etwas getan?
Noch ein Versuch
am 20.04.2009 - 14:55 Uhr
Ich hab es nochmal versucht. Aber auch ein Template user-login-form.tpl.php hilft nicht. Bislang hat mich nur die Variante des Überschreibens weitergebracht. Aber für jeden Block eine neue Funktion? Ich versuche nun einen über das Block-Menü (/admin/build/block) angelegten Block zu themen. Laut Doku muß das Template mit block-[modulname]-[delta].tpl.php benannt werden. Delta wäre in diesem Fall 1, was mich zu block-block-1.tpl.php bringt. Lege ich aber ein solches Template an, wird es trotzdem nicht geladen.
Habt ihr noch einen Tipp für mich?
Was ich oben nicht erwähnt hatte: Ich verwende das Komplettpaket von Yaml für Drupal. Ich gehe aber eigentlich davon aus, das hier im wesentlichen "nur" das HTML und CSS verändert wurde.
---------------------------------------------------------
Wenn man sich vornimmt nichts zu tun, und das auch schafft, hat man dann etwas getan?