Sziasztok!
A következő kérdések merültek fel, amire nem tudtam megtalálni a válaszokat:
Légyszi segitsetek!
Az első az hogy miért nem hivja meg a form_alter függvényből egy külső függvényt:
function Hirlevel_2($email,$name,$field32) { //$field32 - Custom filed Lakcim $email=urlencode($email); $name=urlencode($name); $field32=urlencode($field32); $URL="http://www.weblap.hu/cgi-bin/responder/register.cgi"; $account=5; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"$URL"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "account=$account&email=$email&name=$name&dp32=$field32" ); curl_exec ($ch); curl_close ($ch); } function autoresponder_form_alter($form, &$form_state) { Hirlevel_2('[email protected]','próba','Budapest'); }
A másik kérdés ami ebből következett, hogy szeretném lekérni az aktuálisan bejelentkezett felhasználó nevét, emailcimét, ez milyen változóban van eltárolva, s hogyan tudom elérni?
Ezt szeretném a fenti függvénnyel elküldeni az autorespondernek.
S még annyi utóljára, hogy innen eltudok érni a szerveren egy másik adatbázist, ami az autoresponderé. mert azt szeretném megoldani, hogy ha a profile űrlapon valaki bejelölgeti a hirleveleket, mindig frissitse az adatbázisban, de az nem a drupal adatbázisában tárolódik.
Ezeket hogyan tudom megoldani?
Még eszembe jutott, hogy lehet ebben is tudnátok segiteni, hogy amikor beirtam ezt az form_alter függvénybe, állandóan kiirta ezt:
drupal_set_message(t($user.'A hírlevél feliratkozások frissítése megtörtént.'));
return;
Hogy tudom megadni, hogy csak akkor irja ki, amikor a profile menüt módosították.
Légyszi segitsetek, mert annyi módon próbáltam már, s sehogy se sikerült ezeket megvalósitanom. Vagy azért mert valószinű az angol tudásom miatt nem értettem az angol szöveget, vagy pedig azért mert nem látom át, hogy hogyan működnek ezek a függvényhívások.
köszönöm
egy téma egy kérdés
1.
Gondolom csináltál egy modult, melynek neve autoresponder? Honnan tudod, hogy nem hívja meg? Tolj be a Hirlevel_2 elejére egy drupal_set_message('hello') függvényhívást. Ha megjelenik a hello akkor meghívja.
2.
global $user;
$user
ezt egyébként nem értem, hogy miért nem sikerült megtalálnod, épp a napokban volt erről itt szó a fórumon...
3. az egyes megoldásban felvázolt módszer kell neked, nem kell itten másik adatbázis.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
ez egyszerű..
Ez egyszerű. Onnan tudom, hogy nem irja be az autoresponder adatbázisába az adatokat.
De rögtön nézem amit mondtál.
Csináltam egy sima autoresponder.php fájlt. S simán bemásoltam a függvényt, s a meghivást is. Lefuttatom, s rögtön megis jelenik a responder olvasók között a felhasználó, az adatokkal amiket átadtam neki.
CHi
valamit nagyon elkavarsz vagy félreértesz
az autoresponder egy létező drupal modul, használod ezt a modult?
az az érzésem, hogy a hurokrendszer működése se teljesen tiszta.
hogy hívják a saját modulodat? gondolom nem autorespondernek hívod vagy igen?
vagy hogyan kerül az autoresponder a képbe? miért autoresponder_form_alter a hurok neve?
-
clear: both;
igazad van.
igazad van. tényleg nem tiszta. Pontosan ezért kérdezek. Igen, egy saját modult irok, mert ezt tanácsolták a fórumban a többiek. Autoresponder loadernek neveztem el, s igazából csak átkéne adnia pár adatot a Silihost autoresponder.cgi fájlnak a fenti függvénnyel. Aminek akkor kéne lefutnia amikor a felhasználó a profile menüjében, illetve a regisztrációnál az elküldés gombra kattint. az a lényeg, hogy hirlevél csoportokra lehetne feliratkozni, illetve ha a felhasználó kivenné a pipát a saját profil menüjében valamelyik hirlevél csoportból, akkor azt vizsgálni kell, s beirni egy 0-át az adatbázisban, hogy inaktiv lett a fórumozó ebben a hirlevélben.
A létező autorespondert is átnéztem, de mivel nem vagyok tisztába, hogy igazából mit hova kellene irnom, ezért irogatok ide talán valaki tud segiteni immár 2 hete küzdök vele.
Ezek szerint ezt sem jól irtam: autoresponder_form_alter:
Én úgy értettem, hogy a form_alter mindig lefut, s hogy amikor az adott modulhoz irok ilyet, pl. profile_form_alter, akkor ezt azt jelenti, hogy akkor fut le, amikor a profile beküldés gombot megnyomjuk. Ezt már csak elkeseredésemben irtam, mert egyre jobban összezavarodtam.
hook függvények
A hook függvények olyan függvények, amivel a modul bele tud nyúlni különböző folyamatokba. Mindig a modul nevével kell kezdődjön. A hook szócskát kell lecserélni a függvény nevében. Tehát hook_form_alter az a temodulodneve_form_alter lesz. Minden form elkészítésekor lefut a form_alter neked kell vizsgálnod, hogy melyik form_ba akaszkodsz bele. Ezt a form_id-vel tudod megtenni. Ha a submit-ba akarsz belenyúlni akkor hozzá kell adnod még egy submitot a form-hoz, de ha júzerrel dolgozol akkor inkább hook_form_alter + hook_user függvényeket használd.
És ne aggódj! Két hét az nulla idő a Drupal programozásában. Adj magadnak egy kemény félévet, hogy elmondhasd biztonsággal állsz neki feladatoknak.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
megnéztem
Szia!
köszi. Tehát ha jól értem, akkor mivel én a user modul nyúlok bele ezért
user_form_alter_submit ?
Egyébként beleraktam egy kiiratást a függvénybe, ahogy mondtad, s tényleg átviszi a változók értékét. De akkor miért nem küldi el a respondernek?
Van ötleted?
Ha simán php-ként futtatom, akkor meg elküldi, s beis irja.
nem jól érted.
hook_akármi függvényedet a saját modulodban mindig úgy nevezed el, hogy a "hook" szót a saját modulod nevére cseréled.
például a marvin_a_depresszios_robot.module fileban megvalósított hook_form_alter neve marvin_a_depresszios_robot_form_alter kell legyen. tökmindegy, hogy milyen formba akarsz belepiszkálni vele. azt a függvény első sorában fogod ellenőrizni a $form_id alapján.
-
clear: both;
huh.. dejó, ez közelebb vitt egy lépéssel..
a megoldáshoz.
Aha akkor ez a probléma megoldása!
megpróbáltam, de hogy találom meg hogy a profil, vagy a regisztrációs űrlapnak mi a form-id-je?
tutorial
http://www.lullabot.com/articles/modifying-forms-5-and-6
keress ra a "form_id"-re az oldal forrasaban
ezt irja ki - offineban van a site. Ez a te site-od?
Site off-line
This site is currently under maintenance. We should be back shortly. Thank you for your patience.
Majd megpróbálom később
nem
nem az enyem. ez A lullabot site..