hook_form_alter() az User modul eseten

Lacko képe

Egy erdekes, de annal idegesitobb problemaval allok szemben. A helyzet: anonymus latogato az oldalon latja a belepes blokkot es a regisztracio blokkot. A belepes blokkban mukodik a hook_form_alter(), mig a regisztracios urlapnal nem.

Nem tudtam erre megoldast talalni, viszont jott egy olyan keres, hogy a Belepes blokk mindig lathato legyen - a regisztracios oldalon is. Ezt ugy valositottam meg, hogy letrehoztam egy blokkot, majd a hozza tartozo template fajlt is eletre keltettem, ahol a blokk tartalmanak kiiratasa helyett a drupal_get_form('user_login_block')-ot hasznaltam. A blokkot csak anonymus latogatok latjak, de oldalkorlatozasok nelkul. Fooldalon meg is jelenik szepen, a hook_form_alter() kiszedi a nem kivant dolgokat, azonban a regisztracios oldalon a rendszerbeli urlap jelenik meg. Tehat mintha a hook_form_alter() implementaciojat a template.php fajlban figyelmenkivul hagyna.

Egyszeruen elkepzelesem sincs, hogy mi okozhatja ezt, remelem itt talalok valakit, aki tud segiteni!

Koszonom elore is.

function user_form_alter(&$form, $form_state, $form_id) {
    if ( $form_id == 'user_login_block' ) {
        $form['name'] = array('#type' => 'textfield',
                                '#title' => '',
                                '#maxlength' => USERNAME_MAX_LENGTH,
                                '#size' => 15,
                                '#required' => TRUE,
                              );
 
        $form['pass'] = array('#type' => 'password',
                                '#title' => '',
                                '#maxlength' => 60,
                                '#size' => 15,
                                '#required' => TRUE,
                              );
 
        $form['submit'] = array('#type' => 'image_button',
                                '#src' => path_to_theme() .'/images/s.gif',
                                '#title' => t('ok'),
                                '#value' => t('ok'),
                              );
 
        $items = array();
        $items[] = t('Ha elfelejtette jelszavát, <br />!click.', array( '!click' => l(t('ide kattintson'), 'user/password', array( 'html' => TRUE ))) );
        $form['links'] = array('#value' => theme('item_list', $items));
    }
 
    if ( $form_id == 'user_register' ) {
        $form['submit'] = array('#type' => 'image_button',
                                '#src' => path_to_theme() .'/images/s.gif',
                                '#title' => t('Regisztrálok'),
                                '#value' => t('Regisztrálok'),
                              );
    }
}
Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
eMeLA képe

A user_form_alter()-t a template.php-ba tetted ?

Én eddig úgy tudtam, hogy a hook_form_alter()-t a modulokban lehet használni, ahol a nevének így kell kinéznie: SAJÁTMODULNÉV_form_alter() !

Mivel a hook_form_alter()-ben benne van minden ami általában a user_login_block()-ban definiálva van, és ezt a SAJÁTMODULNÉV_form_alter() mind megkapja a $form változóban, ezért csak azt kell megváltoztatni, amit nem kell neked oda, vagy amit pluszban hozzá akarsz adni.

0
0

...mit tudok: http://web.termuves.hu

Lacko képe

Valoban. Ezt nem tudtam, hogy a hook_form_alter()-t csak igy lehet hasznalni. Viszont akkor nekem egy olyan megoldas kellene, ahol a template.php-bol hasznalhatok.

A masodik eszrevetellel is maximalisan egyetertek, ez is elkerulte a figyelmemet.

Koszonom!

0
0
pp képe

Amikor volt itt a fórumon nemrég és az http://api.drupal.org-on és elég jól le van írva. :D

pp

0
0