A Drupal alaprendszer a /user oldalon való bejelentkezés után a saját profil oldalunkra irányít. A login blokk használatakor pedig arra az oldalra kerülünk vissza, ahol bejelentkezés előtt voltunk.
Időnként azonban szükség lehet arra, hogy a felhasználót egy általunk meghatározható útvonalra tereljük bejelentkezés után. Mi sem egyszerűbb: bevethetjük pl. a Login Destination vagy a LoginToboggan modulokat. Ha azonban egyébként is használjuk a Rules modult, nincs szükség az előbbiekre. Pillanatok alatt összekattinthatunk egy átirányítást. Azonban az egyszeri bejelentkezés működésben tartsa már kicsit izgalmasabb. Haladjunk sorjában!
Egy rule három fő összetevőből áll(hat). Esemény(ek)ből (Events), feltétel(ek)ből (Conditions) és művelet(ek)ből (Actions). A példánkban: Events = User has logged in
– vagyis amikor a felhasználó bejelentkezett… –, Actions = Page redirect, Parameter: URL ahova/atiranyitom
– …irányítsuk át az ahova/atiranyitom oldalra!
Az átirányítást ezzel le is tudtuk, már csak az egyszeri bejelentkezés működést kell megoldanunk.
Itt lehet eltévedni! Első lépésben a egy legördülő mezőből (Select condition to add) kell kiválasztanunk a feltételt. „Józan paraszti ésszel” azt gondolhatjuk, hogy a Path csoport két lehetséges értéke közül közül kell valamelyiket választanunk. A második lehetőség (URL alias exists
) elég „gyanús”, legyen az!
Nézzük a lehetséges behelyettesítési mintákat (Replacement patterns): hohó, hát itt is van nekünk az [account:one-time-login-url]
token! Sínen vagyunk. Kiválasztjuk, hozzáadjuk, mentjük és kész, működik, hátradőlhetünk! Hát, sajnos nem.
Hogy miért nem, nem tudom, nem jártam utána. Azonban némi keresgélés után a drupal.org Rules issue-i közül előkerült a működő megoldás. Íme.
Condition: Text comparison
Data selector: site:current-page:path
Matching text value: user/reset
Comparison operation value: contains
Negate: checked (kipipálva)
Magyarul: nézzük meg az aktuális oldal útvonalának szövegét, hogy ne(!) tartalmazza a user/reset
értéket. Ha ez teljesül, akkor lehet végrehajtani az átirányítást. Ez működik.
Most lehet hátradőlni! :o)
PS: Az exportált rule így néz ki:
<br></br>{ "rules_login" : {<br></br> "LABEL" : "Login",<br></br> "PLUGIN" : "reaction rule",<br></br> "TAGS" : [ "User" ],<br></br> "REQUIRES" : [ "rules", "path" ],<br></br> "ON" : [ "user_login" ],<br></br> "IF" : [<br></br> { "NOT text_matches" : { "text" : [ "site:current-page:path" ], "match" : "user\/reset" } }<br></br> ],<br></br> "DO" : [ { "redirect" : { "url" : "frontpage" } } ]<br></br> }<br></br>}<br></br>