Sziasztok!
D6 és Ubercart alá készítünk egy modult, de elakadtunk.
PickPackPont szállításhoz készítünk modult, ahol a megrendelő a fizetés oldalon ki tudja választani a PPP átvevőhelyet.
Az átvevőhelyek listája online érhető el.
Azt a megoldást választottuk, hogy JS segítségével lehetővé tesszük a vásárlónak, hogy kiválassza az átvevőhelyet, majd ajaxal átadjuk az értéket a drupalnak.
Ezen a ponton akadtunk el.
A hook_checkout_pane() fgv segítségével elhelyeztünk egy hidden mezőt. Ennek a mezőnek nem tudjuk átadni a kiválasztás értékét.
A kód a következő:
function pickpackpont_checkout_pane() { $panes[] = array( 'id' => 'recipient', 'callback' => 'pickpackpont_checkout_pane_recipient', 'title' => t('Recipient Information'), 'desc' => t('Information on product recipient.'), 'weight' => 9, ); return $panes; } function pickpackpont_checkout_pane_recipient($op, &$arg1, $arg2) { drupal_add_js(drupal_get_path('module','pickpackpont').'/storelist.js'); drupal_add_js(drupal_get_path('module','pickpackpont').'/MicrosoftAjax.js'); switch ($op) { case 'view': $description = '<div id="pickpackpont" class="pickpackpont"></div>'; //$contents['recipient_other'] = array('#type' => 'hidden', '#value' => 'valami'); return array('description' => $description, 'contents' => $contents); case 'process': $arg1->data['recipient']['recipient_other'] = $arg2['recipient_other']; return TRUE; case 'review': $review[] = array('title' => t('Recipient'), 'data' => $arg1->data['recipient']['recipient_other']); return $review; } } function pickpackpont_menu() { $items['cart/checkout/pickpackpont/add_pickpackpont/%'] = array( 'page callback' => 'add_pickpackpont', 'page arguments' => array(1), 'access arguments' => array('access pickpackpont content'), 'type' => MENU_CALLBACK ); return $items; } function add_pickpackpont() { $code = arg(4)!='_'?arg(4):''; $contents['recipient_other'] = array('#type' => 'hidden', '#value' => $code); return $code; }
Tudnátok segíteni, hogy hol hibáztunk?
Köszönöm!
Melyik modulhoz, modulokhoz kapcsolódik a téma?:
Drupal verzió:
Fórum:
Pontos kód
Nem tudom, mennyire pontos az idézett kód és hogyan akar működni, de néhány észrevétel:
Ha a pickpackpont_menu()-ben meg van adva a 'page arguments'=>array(1) (az url 'checkout' része), akkor miért nem használjátok, illetve miért az arg() fvt használjátok?
Az add_pickpackpont()-ban mit csinál a 2. sor, ha a 3. sor return $code?
Fox Mulder
A module fájl kódja pontosan
A module fájl kódja pontosan így néz ki.
A hozzá tartozó js fájl ide kapcsolódó fgv-e a következő:
A return meg csak formai követelmény, annak igazából haszna nincs, azaz lehetne akár return true is.
Azt tapasztaltuk, hogy az add_pickpackpont fgv-ben a
nem működik. Nem adja át a $code változó értékét. Valójában semmilyen értéket nem ad át (ha konkrét sztringet írok a $code helyére azt sem.
Hol hibás az elméletünk?
Köszönöm!
Hová kéne átadnia?
Mit vártok az add_pickpackpont()-tól? Létrehoztok benne egy form tömb töredéket, amivel nem fog történni és nem is történhet semmi, mert egy menu callback függyvénynek az a dolga, hogy előállítson egy kimenetet, ami válasz a menupontban definiált kérésre (a modulotokban: kiírja a $code értékét) és nem tud módosítani olyan űrlapot, amiről nem is tud.
Fox Mulder
Kezdők vagyunk
Az igazság az, hogy meglehetősen kezdők vagyunk Drupal programozásban.
Ez az első olyan modul, ahol alaposabban bele kell mászni ezekbe a dolgokba. Sok homály is van a képletben, persze google-zunk, meg olvasgatunk mindenfélét. Megtennéd, hogy segítenél valami konkrétummal, hogy mit és hogyan kellene csinálni, hogy működjön az átadás?
Köszönöm!
Átadás
Nálam is nagy a homály (megpróbáltam localhoston összerakni), de az biztos, hogy a pickpackpont_menu() - add_pickpackpont() páros nem fogja módosítani a cart/checkout/ űrlapot.
Az űrlaphoz a pickpackpont_checkout_pane_recipient() 'view' ágában kéne hozzáadni a select-eket (amit most a js-ben csináltok) és csak az opciókat beállítani js-ben (lásd később), mert így tudjátok lenyomni a Drupal űrlapfeldolgozó rendszerének a torkán a bekért adatokat. A csak js-ben létrehozott űrlap elemekről a szerver oldal (a Drupal) nem tud.
Miért kell ajax? Egyrészt, mert egy külső adatforrásból kéritek le a boltok listáját XML-ként. Másrészt viszont azért, mert az egyik select elem függ a másiktól, ha a vásárló kiválaszt egy megyét, akkor a csak ebben a megyében lévő városok kerülnek a város select opciói közé stb.
Az utóbbi problémára a hierarchical select modul, illetve a Drupal AHAH jelenthet megoldást, az XML lekéréséhez viszont nincs tippem (illetve dehogynem: az utóbbi link).
Fox Mulder
fox mulder már leírta a
fox mulder már leírta a lényeget. én csak kiegészíteném
A Drupal Form API nem szereti ha kívülről belepiszkálsz és ilyenkor a select értéke nem lesz meg a form elküldésekor (submit). hook_form_alter() vagy hook_form_FORM_ID_alter() segítségével adjátok hozzá a select listát.
Ajaxhoz ajánlott a Drupalban található jQuery függvényeket használni (és akkor nem kell a MicrosoftAjax.js).
Ha jól értettem a feladatot, akkor a megye mezőnél nem indokolt az Ajax használata, mivel ez a lista nem változik. A város+átvevőhely listák elemeit sem lehet csak úgy ajaxosan hozzáadni, mert attól a Drupal még nem szerez róluk tudomást, ezért a Drupal saját függvényeit használva kell belevarázsolni a $form tömbbe. Ha nem válik be a Hierarchical Select, a megye mező változásakor (onchange) kell meghívni az ajaxot (de csakis drupalosan). Ez valahogy így szokott kinézni:
Itt egy példa: http://drupal.org/node/411074#comment-1614458
A simple_select_parent lenne a megye, és a simple_select_child a város. Az átvevőhelyhez pedig ki kell bővíteni egy harmadik elemmel.
remélem, hogy segítettem
sok sikert
Köszönöm!
Mindenkinek köszönöm a segítséget. Dolgozunk a megoldáson az útmutatásotok alapján.
pick pack pont modul
Sziasztok!
Próbálok találni a pick pack modullal kapcsolatban bármit, és csak ez az egy topicot találtam. Olvasgattam itt a levelezgetést, és az a kérdésem, hogy összeállt-e már a rendszer? Jelenleg nálam rengeteg hibaüzenet generálódik, ráadásul nem is tudom a modult kikapcsolni. A boltok listáját egészen biztos nem éri el...
Van valahol esetleg valami leírás erről a modulról?
köszi!
Konkrétan melyik
modullal van problémád?
Új topikban megírhatnád, hogy mit csináltál és mi nem működik.
Üdv!
Dudás József