Sziasztok!
Egy weboldalt upgrade-elek D6-ról D7-re és elakadtam.
D6-ban a regisztrációs formon használok többek között az alap profile modul által létrehozott beviteli mezőket, amiket módosítottam a hook_form_alter fgv-el (sorrend, összecsukhatóság, stb.)
D6-ban a hook_alter_form fgv $form tömbjében benne vannak ezek az adatok, így könnyen bele tudtam nyúlni és működik is.
Azonban D7-ben a $form tömb nem tartalmazza a profile modul által létrehozott mezőket, így azokat értelemszerűen nem tudom módosítani.
Segítséget szeretnék kérni, hogyan tudom D7-ben a profile modul által létrehozott mezők tulajdonságait alternálni? Milyen fgv-t, vagy modult tudok erre használni? Sajna a neten keresgéléssel nem találtam meg a választ!
Köszönöm!
Attól függ, mit szeretnél
Attól függ, mit szeretnél pontosan elérni. Ha csak a kiíráskori sorrendet szeretnéd módosítani, erre van lehetőség, elvben a $user objektumon is ott vannak ezek a fieldek, de ha nincsenek, a profile_user_load függvénnyel be lehet töltetni ezeket a mezőket, és azt csinálsz vele, amit akarsz.
Ha egyedi mezőkre van szükséged, vagy át akarod szabni a már meglevő mezőket, akkor pedig az Administration > Configuration > People > Account settings menüben a Manage fields fülön (bocs, nincs előttem most élő magyar site a menüpontokhoz) tudsz hozzpiszkálni a profilhoz (új mezők felvétele, régiek átszabása), nem kell form_alterezni most már.
Írd le, hogy mik az elképzeléseid, mit szeretnél megvalósítani, és talán tudunk segíteni a hogyanban.
--
Most így fejből nem tudom,
Most így fejből nem tudom, hogyan működik a profile modul, könnyen lehet az is, hogy a te modulodnak a
hook_form_alter()
-je korábban fut le mint a profile modulnak az ugyan ilyen hook-ja, és ezért nincsenek még ott azok a mezők amiket módosítani szeretnél.Ha ez a helyzet akkor, ezt legalább kétféle képen tudod megoldani.
Ha csak lehet, akkor használd a hook_form_FORM_ID_alter()-t. Amellett, hogy teljesítmény szempontjából előnyösebb, ráadásul a sima hook_form_alter()-ek után fut le. Tehát nagyobb esély van rá, hogy a módosítani kívánt elem már benne van a $form-ban.
Mivel D6-ról migrálsz, jó ha tudod, hogy ez a működés a D6-ban pont fordítva volt. Tehát D6-ban a hook_form_alter() futott előbb és csak aztán a hook_form_FORM_ID_alter().
Ha bebizonyosodott, hogy az azonos hook-ok futási sorrendjén kéne módosítani, akkor közvetlenül lehet módosítani a
{system}.weight
adatbázis mező értékét.Itt van rá példa: forum_install()
(nyilván valami hook_install()-ban vagy hook_update_N()-ben)
A profil modul elavultnak számít D7-ben
Mindamellett javasolt a D6-os profil mezőket átkonvertálni rendes Entity Field-ekre.
D7-ben a profile modult csak akkor lehet bekapcsolni ha nem friss telepítés történt, hanem D6-ról frissítés.
https://api.drupal.org/api/drupal/modules%21profile%21profile.info/7
Jaja. Pl ezt meg is nézhetnéd
Jaja. Pl ezt meg is nézhetnéd, hogy jó-e még: https://www.drupal.org/sandbox/szantog/1744436
Elég régi, de ahogy nézem, semmi olyan nem válozott nagyon, amit érint.
----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.
Köszönöm az eddigi válaszokat
Köszönöm az eddigi válaszokat.
Kissé elhúzódott az upgrade. :)
A leírtak alapján megcsináltam a Profile2 modulban az új entity mezőket, át is migráltam, működik is.
Azonban belefuttottam egy problémába.
Amikor regisztrál egy új user, akkor trigger és az akció segítségével egy emailt küldök ki a regisztrált adatokkal.
Az Entity token modult engedélyeztem, az akció szerkesztésénél a tokenek listájában meg is jelennek a mezők.
Azonban a profile2 entity mezőit sehogyan sem akarja a Drupal becserélni a megadott értékre.
Mit tegyek hogy működjön?
Előre is köszönöm!