Sziasztok, bongeszgettem a forumot nem igazan talaltam valaszt az en 'problemamra'. Fejlesztek egy oldalt, viszont eleg fapados es nem rendszerezett. Ezert arra gondoltam, hogy egy Drupallal sokkal szervezettebb ill hatekonyabba tudnam tenni. Az oldalam nagyreszt szoveg, viszont van egy alkalmazas rajta. Errol egy par szot, hogy erthetobb legyen:
Van egy form, nemi ajax/jquery-vel megspekelve, hogy szebb legyen ill dinamikus. Vannak kulonbozo beallitasi lehetosegek. A program bevitelnek egy hosszu szoveges lancolatot var, majd elkuldes utan ezt "megformazza". Ez a megformazas annyit tesz, hogy BBCODE tag-ek koze helyezi a szovegfile lenyeget...stb. Na mar most a "konvertalas" reszre van egy kifejezetten erre irt osztaly ami nem is kicsi.
Olvasgattam drupal.org-on modulokkal ill formsAPI, Jquery, ajax-al kapcsolatban dokumentaciokat, ezekkel ha minden igaz megoldhato az "implementacio". Egyedul amit nem talaltam az az, hogy ezt a kulso osztalyt mikeppen tudom meghivni, ill hasznalni. Ebben kellene segitseg elso korben, hogy drupal module-kent tudjam ezt az osztalyt hasznalni. Ha ez megvan, utana mar a Jquery/Ajax ill design resszel mar fogok boldogulni remelem.
Elnezest, ha hosszura nyult a dolog.
Koszi elore is.
hook_menu
Elso lepeskent probalj meg egy kis oldalt letrehozni Drupal modulbol hook_menu()-vel (http://api.drupal.org/api/function/hook_menu/6).
Latni fogod, hogy a hook_menu()-ben tobbek kozott az oldal utvonalat regisztralod, valamint egy callback fuggvenyt, ami az adott utvonal tartalmat allitja elo. Ebben a callbackben hasznalhatod a kis osztalyodat.
Szemelyes velemeny: ahogy megismered a Drupal APIt, idovel ra fogsz jonni, hogy sokkal szebben is meg lehet csinalni a feladatot, ezert kb. az egeszet ujra fogod irni szep lassan. :)
Nos elkezdtem csinálgatni a
Nos elkezdtem csinálgatni a modult, viszont akadályba ütköztem. Megvan ugye a formom viszont ezt szeretném valahogyan formázni, ehhez az kéne nekem h legyen egy module.tpl.php fileom is amit beilleszt a drupal a content tartalomba. Ha jól tanulmányoztam át az API-t akkor a theme_preprocess_hook függvény kell nekem, viszont ennek a használatáról nemigazán találtam normális leírást ill példát. Tudna valaki segíteni kérem? Ami eddig megvan kód az ennyi:
Azt írod, hogy formázni
Azt írod, hogy formázni szeretnéd a form-od. Pontosan mit értsz ez alatt, valami konkrét dolgot írj, hogy miben kellene másképpen megjelennie mint ahogyan az általad bemásold kód megjeleníti. Csak mert valószínűleg neked nem a preprocess függvényekre lesz szükséged.
Kalandjaim a Drupal és PHP világában.
Szia, arra gondolok, hogy
Szia, arra gondolok, hogy templatelni szeretném a formomat. Alapesetben a mostani kód minden form-item-t külön divben jelenít meg, viszont nekem ez így nemjó valahogyan csoportosítanom kellene őket, hogy úgy nézzen ki mint az eredeti ami alatt nincsen drupal csak egy php/html.
Szóval nekem az kéne, hogy létrehozom a formot majd egy .tpl.php fileban tudjam templatelni és csak a mezőt illessze bele az adott html kódba (drupal_form_render vagy melyik is ez a fggvény).
Nem tudom, hogy így már mennyire érthető mit szeretnék elérni!
Több megoldás is van, mint
Több megoldás is van, mint általában a Drupalban :)
Egy csúnya hekk megoldás, valahogy így:
Ennél szebb, ha az $output építgető függvényt egy theme hook-ként regisztrálod és függvényben vagy tpl.php template fájlban valósítod meg.
Ez valahogy így nézne ki:
És a converter-form-render.tpl.php-ben valósítod meg a form-ot HTML-jét, benne ilyenekkel:
print drupal_render($form['egy_mezo'])
Valami ilyensmi, bíztos van elgépelés a fentiekben, de elvi síkon jó :)
A theme neve azért lett convereter_form_render mert converter_form nevű függvényed már van és zavaró lenne.
Kalandjaim a Drupal és PHP világában.
KÖSZÖNÖM szépen, pont valami
KÖSZÖNÖM szépen, pont valami ilyesmire gondoltam! Azthiszem a második megoldást fogom választani ;) az tényleg szebb és áttekinthetőbb!
EDIT: Fatal error: Only variables can be passed by reference in C:\xampp\htdocs\drupal\modules\converter\converter-form-render.tpl.php on line 12 Ezt a hibaüzenetet kapom, a 12 sor pedig ez:
<?php drupal_render($form['subj']) ?>
Nem bírok rájönni ez miért van... amit írtál kód az elvben jó de mégse, és nem tudom miért nem...
Ha csak simán fogom a tpl.php-ban és elhagyom a drupal_render függvényt akkor gond nélkül kiírja a formnak az összes elemét :O
Mert imho,
<?php print drupal_render($form['subj']) ?>
kell neked.
--
Borsa Péter
https://peterborsa.eu
srry elrontottam az előző
srry elrontottam az előző hszben :) természetesen előtte van a print ...
EDIT: Amm most sikerült működésre bírnom, a drupal_get_form() fggvényt kicseréltem drupal_retrieve_form('converter_form', &$form_state) fggvényre. Következő kérdésem az lenne, hogy maradhat ez így? szóval a form_state-t a drupal beállítja magának? vagy valamit még mindig hülyén csinálok?
Oké, ahogy leírtam az nagy
Oké, ahogy leírtam az nagy hülyeség :) A drupal_get_form() egy stringgel, a form renderelt html kódjával tér vissza.
Neked mindössze annyi kell, hogy a form-nak ahol definiálod megadod a theme hookját így:
Ezt a theme hook-ot a converter_theme()-ben definiálod úgy ahogy fent már írtam.
Ekkor a tpl.php-ban már elérhető lesz a $form tömb, amit a drupal_render()-el már valóban meg tudsz jeleníteni, úgy ahogy szeretnéd.
Egyébként ez a megoldás nem csak teljes form-ra működik, hanem egyetlen form elemre is meg tudod tenni, ha csak annyi kell.
Illetve nem csak saját form-ra működik, a hook_form_alter()-el bármely core vagy más contrib modul form renderelését átállíthatod így, ezáltalá bármelyik form-ot úgy jeleníted meg ahogy szeretnéd. Ezek azok a dolgok, amelyek a Drupal olyan népszerű.
Kalandjaim a Drupal és PHP világában.
Sziasztok, mar megint en.
Sziasztok, mar megint en. Sikerult megoldanom a formot, nagyon pofas lett ;) Jquery-s checkboxok es a tobbi nyalanksag. Viszont ujjab problemaba utkoztem... megpedig az adatok tovabbitasa a php fele AJAX hasznalataval. Lehetseges ezt valahogy kivitelezni? Mert eddig akarmit talaltam oldalakon tutorialokat egyik sem mukodott :O :(
Szoval kerdesem az lenne, hogy hogy tudnam ajax segitsegevel json formatumban tovabbitani a mezok adatait?
UI.: Elnezest, hogy itt szerencsetlenkedek, de nemigazan akar osszejonni :(
$.post() és $_POST
A Drupalban van beépített jQuery (1.2.x), kliens oldalon a küldéshez $.ajax() $.get() vagy $.post() használható. A szerver oldalon Drupalban fogadni meg úgy tudod, hogy regisztrálsz egy menu elemet hook_menu() és feldolgozod a $_GET vagy $_POST értékét.
Szerkesztve: Feltételezem, hogy a művlet eredményeként megváltozna az adatbázisod vagy fájlrendszered. Ha így van, akkor az XSRF támadások elkerülése miatt a $.post() metódust és $_POST változót használd, és kerüld a GET paraméter átadást.
Kalandjaim a Drupal és PHP világában.
Szia, igen volt is bajom az
Szia, igen volt is bajom az 1.2es jQuery-vel :D mind1 debuggolva. Kliens oldalon eddig igynezek ki:
Drupal oldalon meg valami ilyesmi: ??
jolirtam? :S
Igen, ránézésre jónak néz ki
Igen, ránézésre jónak néz ki a szerver oldali rész.
Kalandjaim a Drupal és PHP világában.
Kezdem feladni
Na jó, reggel óta ezzel a vacakkal szívok, kicsit mára már elegem van belőle! Ha szerinted a szerver oldali rész jónak néz ki, akkor valami a jquery fggvénnyel nemjó. Már minden létezőt kipróbáltam mi lehet a gond, de egyik sem működik. Kicist már felment a pumpa bennem ,hogy egy egyszerű ajax submit-et nem bírok összehozni!!!
MOD.: Hát ez vicces :) Egy aprócska figyelmetlenség: