Jak sloučit editaci uživatelského účtu s položkami profilu
Narazil jsem na zajímavý problém nutnosti sloučit formulář editace uživatelského účtu (jméno, heslo, email) s položkami profilu. Motivace je jasná – potřebujeme co nejvíce uživatelů, kteří si profil vyplní, nicméně nechceme je nutit a nechceme jim polička ukazovat při registraci. Jak na to?
Výchozí stav je následující. Na stránce editace účtu máme několik položek: Uživatelské jméno, Heslo, E-mail, případně několik dalších. Po doplnění chceme na stejné stránce mít možnost nastavit si i položky profilu ze sekce Moje údaje – adresu a rok narození.
Nejprve tedy vytvoříme příslušné položky profilu, zařadíme je do sekce „Moje údaje“. Postup nechám na čtenáři.
Následně si vytvoříme vlastní modul, který použijeme pro změnu formuláře. Nazveme ho zmena_profilu. Vytvoříme tedy adresář „zmena_profilu“ v sites/all/modules a vytvoříme v něm soubor zmena_profilu.info, do kterého vložíme:
<?php
name = Zmena profilu
description = Slouci editaci uzivatelskeho uctu a profilu
core = 6.x
?>
Poté vytvoříme soubor zmena_profilu.module a vložíme do něj následující řádky. Pro vysvětlení viz komentáře:
<?php
/*
* Implementation of hook_user().
*/
function zmena_profilu_user($op, &$edit, &$account, $category = NULL) {
switch ($op) {
// $op 'form' znamena, ze jsme na strance formulare editace uzivatele
case 'form':
// V teto sekci mame vratit pole s formularem, proto nacteme potrebne polozky ze sekce 'Moje údaje' a vratime je. Tretim parametrem funkce je prave sekce ze ktere nacitame.
return profile_form_profile($edit, $user, 'Moje údaje');
break;
}
}
?>
To je vše…Nyní se nám v editaci uživatelského účtu začnou objevovat i položky z profilu. V tipu jsme se naučili několik věcí:
- Jak vytvořit velmi jednoduchý modul.
- Jak málo stačí k podstatné změně v Drupalu, pro kterou nemusíme editovat zdrojový kód CMS.
- Jak sloučit formulář účtu a profilu.

díky za tip!! jen dotaz..
díky za tip!! jen dotaz.. nakonci má být uzavření ?> ??? mělo by to být otevřené myslím
Ne nema tam byt, pokud je to
Ne nema tam byt, pokud je to konec souboru. Nicmene zde to nejde jinak napsat, jinak by Texy! neuzavrelo kod :-)
Původní formulář profilu
Není potřeba ještě skrýt stránku s formulářem profilu, ať nedochází k jeho duplikaci?
dotaz
je možné ‚Moje údaje‘ mít v překládatelné formě? t(‚Moje údaje‘)?
Myslim si, ze ne. Je to user
Myslim si, ze ne. Je to user input a ty se v Drupalu neprekladaji. Mozna nejake i18n strings umi zalozit specialni string…To je treba ale zkusit, ono to vypise message
No nevím ale udělal jsem ten
No nevím ale udělal jsem ten modul náhral ho na web a zapl. Ale když kliknu ve svém učtu na „Upravit“ a jsem v Účet nic navíc se mi nezobrazuje… Přejmenoval jsem Moje údaje na to co tam mám já. Takže asi nevím jak se to používá. Prosím poradíte mi?
Funkce zmena_profilu_user() v souboru template.php
Děkuji za tip, funguje dobře. Zajímalo by mě proč uvedená funkce zmena_profilu_user() nefunguje pokud je pouze vložena do souboru template.php. Dík.
Protoz jde o implementaci
Protoz jde o implementaci hook_user() a ta proste funguje jen v modulu. To je vlastnost.
Děkuji
Děkuji
alebo skuste toto
ja pouzivam toto : http://drupal.org/…epageprofile
Poslat nový komentář