Tartalom beküldés után átirányítás másik oldara

eMeLA képe

Hol és mivel tudok beavatkozni abba, hogy egy tartalom beküldése után ne a beküldött tartalom megjelenítéséhez, hanem egy másik oldalra érkezzen vissza a beküldő.

Mindezt a saját modulomban akarom megcsinálni.

Próbálkoztam a hook_nodeapi insert ágával, de ekkor a rendszerüzenetek még nem jelennek meg...

Drupal verzió: 
aboros képe

engedélyezd a trigger modult.
a webhely beállítások -> akciók menüpont alatt hozhatsz létre végrehajtandó akciókat amiket aztán a webhely építés -> triggerek menüpontban különböző eseményekhez rendelhetsz. mikor bekövetkezik adott esemény, végrehajtódik az akció.
(nem vagyok benne biztos, de lehet, hogy ezzel csak egy fix útvonalra tudod írányítani a beküldés után. szóval minden beküldés után irány a node/42 mondjuk)

0
0

-
clear: both;

crt képe

Szia.

A hook_form_alter-ben a megfelelő feltételektől függően hozzáadod a $form tömbhöz az útvonalat:
$form['#redirect'] = 'ide/menj';

Üdv: Zoli

0
0
eMeLA képe

Igen ! Pont erre vágytam. A trigger-ek is biztos jók, csak nekem modulból kellett :)
Köszönöm,

0
0

...mit tudok: http://web.termuves.hu

eMeLA képe

Sajnos mégsem teljesen az igazi. Alapból három lehetőség van a node beküldésénél: Mentés, Előnézet, Törlés. Nekem az első és az utolsó az érdekes.

A "#redirect"-el a Mentés utáni átirányítás kitűnően működik, de nem lehet Törölni a node-ot, mivel ott van (lenne, ha nem lenne átirányítva) egy megerősítés oldal is közben.

Próbáltam a "#submit"-ban vizsgálni, hogy éppen törlés vagy mentés van, de itt már nem fogadja el a $form-ba átírt "#redirect"-et.

0
0

...mit tudok: http://web.termuves.hu

crt képe

Nézd meg ezt, szerintem erre lesz szükséged: how to redirect after delete?

Üdv: Zoli

0
0
eMeLA képe

Érdekes ez is, de ez a saját modulban létrehozott node-ra vonatkozik.

0
0

...mit tudok: http://web.termuves.hu

york képe

Ha sajat modul, akkor hivd meg ezt a fuggvenyt:
http://api.drupal.org/api/function/drupal_goto/6

0
0
eMeLA képe

A node-ot szerkesztésre az alábbi formában kell meghívni: ?q=node/1&destination=node/2

0
0

...mit tudok: http://web.termuves.hu

Bálint képe

Próbáltam a "#submit"-ban vizsgálni, hogy éppen törlés vagy mentés van, de itt már nem fogadja el a $form-ba átírt "#redirect"-et.

Pedig a form submit függvényében lehet redirect-et beállítani:

$form_state['redirect'] = 'útvonal'; 
0
0
Pasqualle képe

vicces, hogy ennyien segitenek megsincs egy hasznalhato valasz sem.. pedig nem lehet ez olyan bonyolult.. leirom megegyszer a kerdest mert latom ez okozza itt is a legnagyobb problemat

a kerdes az, hogy konkretan a node/add oldal utan kell atiranyitani, nem mashonnan. es a kerdezo jol tudja hogyan lehet atiranyitani..

ahogy crt megirta, szokasos eljaras a form_alter hook ahol a $form[#redirect] erteket megvaltoztatjuk. csakhogy ez nem jo mivel ezzel a torles gomb redirectje is megvaltozott..

szoval erre a kerdesre keressuk a valaszt..

0
0
crt képe

Szerintem megoldható egy hook_nodeapi() hurokkal és egy drupal_goto() függvénnyel, de mivel a node_save() és a node_delete() függvények a node_invoke_nodeapi() hívás után tartalmaznak még kódot, azokat kézzel kell megvalósítani a drupal_goto() előtt.

Remélem kibogozható, amit írtam, egy próbát megér.

Üdv: Zoli

0
0
Pasqualle képe

felaldoznad a node_save es a node_delete fuggvenyeket csak azert, hogy megoldj egy atiranyitast, ne mar.. ha csak ilyen hentes megoldas lenne akkor inkabb hagynam a fenebe..

en arra gondoltam, hogy sajat submit fuggvenyt kellene hozzaadni a formhoz, ami megnezi mire kattintottal es az szerint allitja be a redirectet.. csak azt nem tudom, hogy lehet e hozzaadni vagy csak felulirni lehet e az eredetit (bar az is egy lehetseges (kevesbe hentes) megoldas lenne). es az sem tudom, hogy ez mukodik e, elfogadja e az ott modositott redirectet, vagy valahol meg modosit rajta utana..

0
0
york képe

Mi lenne akkor, ha sajat sumbit-ot tenne a form feldolgozas vegere es ott vizsgalna, hogy torles vagy mentes volt-e?
Ha mentes akkor goto, ha torles akkor nem csinal semmit.

0
0
eMeLA képe

Alapvetően egy akármilyen tartalomtípus beküldése utáni átirányításról van szó, nem pedig egy modulban létrehozott tartalomtípusról.

Ami működik az a ?q=node/1&destination=node/2 forma. Most így van megoldva. Ez jó a törlésnél és a mentésnél is.

Ha működik Bálint megoldása, a $form_state['redirect'], akkor szerintem ezzel elegánsabb megoldást lehet találni, kis kiegészítéssel.
Ezt még nem volt időm hogy teszteljem, de így képzelem el:

hook_alter() -ben
--------------------------------------
// a sajatfuggveny-ben tudom majd vizsgálni, hogy éppen mentés van-e
$form['submit'][] = "sajatfuggveny"; // 6.x Drupal

// törlés esetén
if ($form_id == 'node_delete_confirm') $form["#redirect] = 'ide/menj';

sajatfugvany()-ben
--------------------------------------
vizsgálni, hogy éppen mentés van, ha igen akkor $form_state['redirect'] = 'útvonal';

0
0

...mit tudok: http://web.termuves.hu

york képe

Ha mar ezt megcsinalod:
$form['submit'][] = "sajatfuggveny"; // 6.x Drupal

Akkor miert bohockodsz utana ezzel:
$form_state['redirect'] = 'útvonal';

A submit-nel meghivodik a sajat fuggvenyed, ott el tudod donteni, hogy mentes vagy torles volt, ha mentes, akkor goto oda ahova ugrani szeretnel.

0
0
eMeLA képe

A törlésnél van még egy megerősítő form is. A 'sajatfuggveny' a törlésmegerősítés előtt fut le. A törlés megerősítését a hook_form()-ban meg lehet ejteni mert ennek tudom az id-jét. A mentés utáni átirányítást pedig csak a 'sajatfugveny' részben tudom megadni.

0
0

...mit tudok: http://web.termuves.hu

york képe

A torles utan is at kell iranyitanod?
Mert ha nem akkor neked mar a torlessel nem kell foglalkozni, csak a mentessel.

0
0