Sziasztok!
Szeretnék cookiet lementeni egy drupal 6-os site mindegyik aloldaláról, ahol az URL megkap egy bizonyos paramétert. Ez a paraméter (nevezzük 'ajanlo'-nak) az oldalt mások számára ajánló user ID-jét tartalmazza, ergo egy bannerlinket hozok létre, ami tartalmazza a user saját ID-jét (ezt php-val állítom elő). Ha ezt kiteszi a user valahova és erre kattintva nyitja meg egy látogató a site-ot, akkor lementődik egy cookie, ami tartalmazza az 'ajanlo' paraméter értékét. A regisztrációs formoknál figyelem, hogy van-e ilyen nevű cookie, és ha van, akkor megnézem, hogy az értéke az megegyezik-e egy létező user ID-jével, ha igen, akkor a sütiben levő userId-val rendelkező user lesz az ajánlója, meghívója.
Tehát egy paraméterezett link kb így nézne ki:
http://oldalam.hu/valami?ajanlo=123456
A süti mentése meg így:
function saveCookie() { if (isset($_GET['ajanlo'])) { if ($_GET['ajanlo'] > 0) { if ($referrer = db_result(db_query('SELECT uid FROM users WHERE uid = %d', $_GET['ajanlo']))) { setcookie('ajanlo', $_GET['ajanlo'], time()+60*60*24*30); } } } }
A regisztrációs form-nál a süti vizsgálat egy form_alter függvénnyel történik modulból, azt nem részletezném, az megy.
Tudok mindent, csak azt nem, hogy oldjam meg, hogy a site bármelyik oldalánál mentődjön le a süti, ha az URL-ben benne van az 'ajanlo' paraméter.
Két megoldást látok erre, de nem tudom a pontos kivitelezést, hogy minél inkább "drupal-barát" legyen:
1. template.php be kéne betennem a saveCookie() függvényt, majd a page.tpl.php-ben valahogy meghívni.
2. egy modult kéne készíteni, csak nem tudom, hogy milyen hook-ot kell használni, és pontosan hogy nézne ki a module fájl.
Ha valaki meg tudná mondani, hogy melyik megoldást használjam, és pontosan hogyan, azt nagyon megköszönném. Esetleg, ha más lehetőség is van, azt is szívesen fogadom.
Köszönöm.
hook_init()
Ha készítek egy modult, amiben csak egy hook_init() lesz:
ez így jó lesz? mármint, akkor minden oldalnál lementi a cookie-t, ha URL-ben megkapja az ajanlo parametert?
Működőképesnek
tűnik az elgondolásod, én még nem csináltam ilyet, nem látom át a buktatóit.
Szerintem érdemes saját modult írni, ha kellően önálló a feladat (ez annak tűnik) és ha több függvényt is használsz.
A hook_init mindig lefut, az oldal betöltődésekor, ide be tudod rakni a süti ellenőrzését és lerakását.
> "A regisztrációs form-nál a süti vizsgálat egy form_alter függvénnyel történik modulból"
Ezt a kódot ^^^ is ebbe a modulba pakolnám, hogy egy helyen legyenek az összetartozó dolgok.
köszönöm a választ.
köszönöm a választ.
megfelelően működik a hook_init-tel a modul.