User login block elhelyezese?

zoliky képe

Eszrevettem, hogy egyes drupal alapu oldalakon a "login" block nincs a bal vagy jobb oldali menuben.

Itt van egy pelda: http://www.alquds.com a ket login mezo a fenti "Header" reszben lathato.
En ugy probaltam megoldani a problemat, hogy letrehoztam egy "block-user-0.tpl.php" fajlot es beleraktam a kovetkezo kodot:

<div class="user-login">
<form action="/newspaper/node?destination=" method="post" id="user-login-form">
<table border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td valign="top"><input type="text" name="name" id="edit-name" class="login-input" value="">&nbsp;</td>
    <td valign="top"><input name="pass" id="edit-pass" type="password" class="login-input" value="">&nbsp;</td>
    <td valign="top"><input type="image" src="<?php print $base_path . $directory ?>/images/btn-login.gif" name="op" id="edit-submit" class="btn"  value=""></td>
  </tr>
</table>
<div class="logintext"><a href="/user/password">Request password</a>  &nbsp;<a href="/user/register">Register</a></div>
 
<input type="hidden" name="form_id" id="edit-user-login-block" value="user_login_block"  />
</form>
</div>

Tudnatok esetleg jobb megoldast mondani ? A login block mukodik csak nem tudom ha jo otlet beleirni a form adatokat kezel.

A "login block-ot" a header region-ba helyezem el es a tobbit CSS-el sminkelem.

Fórum: 
pp képe

Én spec simán css-el raknám egymás mellé, de ha már a táblázathoz ragaszkodsz, akkor nézd meg, hogy hogyan kell form-ot sminkelni. (api.drupa.org form API quickstartot keresdd)

pp

0
0
zoliky képe

Ok, de ha bent van a form adat a fajlban nem gond ? Ugy ertem, hogy nem egy drupal valtozo nyomja ki a form tartalmat.

0
0
pp képe

Ne így csináld! Ezért mondtam, hogy sminkeld inkább. A form API még egy pár rejtett változót is hozzátesz amit nem biztos, hogy ki kéne hagynod.

pp

0
0
zoliky képe

A "user login" tudomasom szerint egy block, amelynek az azonositoja: block-user-0. Ezt a block-ot altalaban a "bal" es a "jobb" savban helyezuk el. Szuksegem van egy tanacsra:

Hogyan tudnam elhelyezni a "login block-ot" a felso "header" reszben ? Letre kell hozni egy kulon regiont es oda berakni a block-ot ? azutan kell sminkelni a CSS-el ?

Nincs szuksegem kodra, sminkre, stb.. de orulnek ha valaki meg tudna magyarazni lepesenkent, hogy csinalna meg az egeszet.

0
0
pp képe

Ha a header-be akarod tenni akkor tedd bele, ha oda nem jó és a sminket Te magad készíted, akkor érdemes létrehozni egy régiót, amibe ezt belenyomhatod. Érdemes ezt úgy csinálni, hogy ha nincs ott a blokk akkor is kinézzen valahogyan az oldal. (mondjuk lehet, hogy később egy hírlevél feliratkozást akarsz majd oda beletenni.)

pp

0
0
zoliky képe

Ok ertem!
Ha esetleg valtoztatni szeretnek a "create new account" , "request new password" szovegeken, segit a FormAPI ?

egyebkent figyeltem tobb oldalt a drupalsites.net-en, itt van az egyik: http://www.24heures.ch/ a login a fenti reszen lathato de erdekes modon nincsen block-ban. A firebugal vizsgaltam.

0
0
pp képe

CSS-el el tudod érni azt, hogy máshogy nézzen ki a blokk, ha máshol van. Pl a menü blokk függőleges az oldalsávokban és vízszintes a header-ben.

ha létrehozol egy block-user-0.tpl.php fájlt akkor abba olyan html-tartalmat csinálsz a belépés formnak amilyet akarsz. Ekkor azonban mivel helyspecifikus html-t nyomsz ki csak az adott helyen fog jól kinézni a blokk-od.

Teheted azt is, hogy direktbe meghívod a drupal_get_form-ot ekkor csak a form fog jönni ;)
és teheted azt is, hogy form_alter hook-kal nyúlsz bele a form kinézetébe.

direktbe html-t beledrótozni nem egészséges.

Szóval több ponton is bele tudsz szólni a folyamatba. (ezért a császár a Drupal)

pp

0
0
zoliky képe

A drupal.hu-n a kereso is egy block ? http://img396.imageshack.us/my.php?image=12rx8.jpg csak sminkelve van ?

0
0
pp képe

nem, de a google keresője egy blokk és láss csodát ugyan úgy néz ki!
Miről beszélünk ;))

pp

0
0
zoliky képe

function mytheme_form_alter(&$form, $form_state, $form_id) {
  switch ($form_id) {
    case 'user_login_block': 
     $form['name']['#title'] = t('user');
    break;
  }
}

Van valami otleted, hogy miert nem reagal a fenti hook-ra a drupal ?

0
0
nevergone képe

Mert ezt modulba kell tenni (mint minden hook -ot), és a mytheme helyett a modul neve kell. Ahogy elnézem, nagyon kevered a dolgokat.

0
0
zoliky képe

ok, ertem es ha "phptemplate_"-t hasznalok muszaj modulba rakni ?

0
0
nevergone képe

Mindenképpen muszály, az egy hook, ami a modulokhoz tartozik.
Mit szeretnél pontosan?

0
0
zoliky képe

Ok, sikerult elinditani a kodot egy kulon modulban. Itt lathato a kimenet: http://img139.imageshack.us/my.php?image=kepvh2.jpg

A lenyeg az, hogy megvaltoztatom a "username" es a "password" szoveget. Gyakorolva szeretnem tanulni a drupal-t, semmi mas!

Oszinten elege nehezkesnek tunik a smink redszer, nem artana egy jo magyar leiras. Most azt szeretnem tanulmanyozni, hogyan tudom megvaltoztatni a szoveget modul nelkul :)

0
0
pp képe

Tudom, hogy csak tanulsz, de pont ezekhez a szövegekhez nem kell más tenned, mint a megfelelő fordítást feltenned. (esetleg egy meglévőt módosítanod.)

Sminkelni azt lehet, amit megkap a sminkelő alrendszer. Amerre elindultál az nem sminkelés, hanem form módosítás. (amit csinálsz az ágyúval verébre)

Nem kell neked modul, fogod a template.php-t (ha nem lenne, akkor létrehozod) és beleírod a következő függvényt:

function phptemplate_user_login($form) {
//itt módosítod amit akarsz
$form['name']['#title'] = t('user');
//
return drupal_render($form);
}

Ebben a függvényben a form-ban lévő elemeket tudod úgy elhelyezni ahogy akarod.(tehát mondjuk egymás mellé vagy berakhatsz plusz diveket stb.) Tehát tudod módosítani a form kinézetét. (részeltesebben) A hook_form_alter függvénnyel pedig a form tartalmát és működését tudod befolyásolni. Erre neked most nincs szükséged.

pp

0
0
zoliky képe

A fenti kod nem mukodik 6.x-en, en is probaltam:

function phptemplate_user_login($form) {
  //itt módosítod amit akarsz
  $form['name']['#title'] = t('user');
 
  return drupal_render($form);
}

Beleneztem a "modules/user/user.module" fajlba, probaltam igy is:

function phptemplate_user_login(&$form_state) {
  $form['name']['#title'] = t('user');
 
  return drupal_render($form);
}

meg igy is:

function phptemplate_user_login_block($form) {
  //itt módosítod amit akarsz
  $form['name']['#title'] = t('user');
 
  return drupal_render($form);
}

A modult mar idegesegemben irtam meg, mert a fenti peldak nem mukodtek :)

Igazad van a szoveget meg tudom valtoztatni a "locale" modulal, azert van a t() fuggveny. A gond az, hogy a mezok hosszat nem szabhatom meg.

0
0
zoliky képe

Drupal 5-os verzion mukodik a kodod, kiprobaltam! Nem sikerul elindita drupal 6.x-en.

0
0
Paal képe

0
0

--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan

zoliky képe

ok, kulomben azert kerdezek ilyen sokat, mert tanulmanyozom a dolgokat. Megprobalok felepiteni egy teszt oldalt es ha sikerul akkor megmutatom ;)

0
0