Sziasztok!
Nemreg kezdtem drupal 7-vel ... programozasi tapasztalatom van ezert megyeget a drupal csak meg a hook rendszeret nem szoktam meg :P es par dologgal elakadtam pedig tudom hogy meg lehet vele oldani... koszonom elore is a helpeket...
A problemakrol:
amit szeretnek elerni:
egy "kis" regisztralo form amit a drupal a beallitott kotelezo fieldekbol allit ossze.... viszont a kigeneralt html nem megfelelo nekem... es a hibauzenetek helye sem
ami megvan eddig:
- form kigeneralasa (print render(drupal_get_form('user_register_form'));)
- hibauzenetek megjelenesi helyenek megvaltoztatasa (sajat modul az ife modul alapjan)
ami viszont meg problema:
1. en azt szeretnem hogy a submit gomb vagy az a div amiben van az atkeruljon az utolso input elem div-jebe....
ezt az allapotot vagy valami hasonlot szeretnek kodbol elerni(ez most js-vel mukodik :(((
<div class="field-type-list-boolean field-name-field-elfogadom-a-szabalyzatot field-widget-options-onoff form-wrapper" id="edit-field-elfogadom-a-szabalyzatot"> <div class="form-item form-type-checkbox form-item-field-elfogadom-a-szabalyzatot-und"> <div class="form-actions form-wrapper" id="edit-actions--2"> <input type="submit" id="edit-submit--2" name="op" value="Mehet" class="form-submit"> </div> <input type="checkbox" id="edit-field-elfogadom-a-szabalyzatot-und" name="field_elfogadom_a_szabalyzatot[und]" value="1" class="form-checkbox required"> <label class="option" for="edit-field-elfogadom-a-szabalyzatot-und">Elfogadom a szabályzatot <span class="form-required" title="This field is required.">*</span></label> </div> </div>
viszont ha nem oldom meg js-vel akkor igy generalja ki a html-t
<div class="field-type-list-boolean field-name-field-elfogadom-a-szabalyzatot field-widget-options-onoff form-wrapper" id="edit-field-elfogadom-a-szabalyzatot"> <div class="form-item form-type-checkbox form-item-field-elfogadom-a-szabalyzatot-und"> <input type="checkbox" id="edit-field-elfogadom-a-szabalyzatot-und" name="field_elfogadom_a_szabalyzatot[und]" value="1" class="form-checkbox required"> <label class="option" for="edit-field-elfogadom-a-szabalyzatot-und">Elfogadom a szabályzatot <span class="form-required" title="This field is required.">*</span></label> </div> </div> <div class="form-actions form-wrapper" id="edit-actions--2"> <input type="submit" id="edit-submit--2" name="op" value="Mehet" class="form-submit"> </div>
ezzel az a bajom hogy design szerint a gombnak olyan helyen van ahova csak absolute pozicioval tudom berakni de ahogy lesz hiba uzenet rogton elcsuszik a gomb :( viszont ha a form utolso div.form-wrapper -ba bele tudom rakni a submitot akkor ott marad a gomb ahol akarom
2. a hibauzenet helyenek megvaltoztatasa miatt
hozza kellett adnom egy elem rendelest...
function XXX_theme() { 'render element' => 'element' ) ); } function theme_XXX_form_element($variables) { ....
na most az a gondom ezzel hogy a theme_XXX_form_element nem csak a user_register_form-nal fut le ... hogy a tudom megmondani a drupalnak hogy csak az XY id-val rendelkezo formoknal hasznalja a renderelo function-t ?
Jé, tankönyvi eset
Hint: hook_form_alter.
hehh :)
bocsanat csak ez egy elo project es az XY az a project neve csak kicsereltem ra... de akkor legyen proba a neve... :P
Szerintem az a baj…
Szerintem az a baj, hogy nem akarod megismerni a rendszert, nem szánod rá az időt és a tapasztalatot, de már rögtön programozni akarod. Lehet, hogy kiváló PHP programozónak tartod magad és profi vagy adatbázis-kezelésben, de a Drupal egy külön világ, megvan a saját belső rendszere, amellyel megoldhatóak a felmerült problémák. Ha te „nyers PHP” tudásoddal, a Drupalt megkerülve akarsz valamit megoldani, annak mindig gányolás, hekkelés lesz a vége, ami semmi jóra nem vezet. Sőt, ilyen megközelítésnél felmerül, hogy mihez kell egyáltalán a Drupal?
A helyzetet bonyolítja, hogy nem mondtad el pontosan, hogy mit szeretnél. Így nehéz segíteni, mert nem vagyunk gondolatolvasók és ebben az esetben az sem visz előbbre, ha csak azt mondod el, hogy mire jutottál.
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
....
csak felig van igazad mert raszanom az idot ... napok ota nezegetem csak meg nem tiszta es tetszik ez a form rendszer csak meg nem teljesen vilagos(mit es milyen hook-val erek el)... a kodokat nem masoltam be ujra
megprobalom a kerdeseket ujra fogalmazni:
2 kerdes:
az volt a problemam hogy a hibauzeneteket az urlapon a fieldek alatt akartam elhelyezni http://drupal.org/project/ife ezt a module-t letoltottem... megneztem hogy mukodik(hidd el foglalkoztam vele :)) es beepitettem egy sajat modul-ba azt amire szuksegem volt ... mukodik is tokeletesen de en szeretek optimalizalni es debugger futattasa kozben eszre vettem hogy a letrehozott _theme() hook altal bejegyzet element renderelo function-t (function theme_XXX_form_element($variables) { .... az XXX nem a valos nev!) minden form elem renderelesenel lefutattja de en ezt nem szeretnem csak azt szeretnem ha egy bizonyos form(ahogy neztem ezt drupalban altalaban ID-val szokas megadni) elemeinek renderelesenel hivodna meg a function(ez csak szintiszta optimalizacio :) )
1 kerdes:
na hat ezt nehez megfogalmazni ujra :)
annyit szeretnek hogy a submit gomb ne egy kulon wrapperba keruljon hanem az utolso form elem wrapper-ba...
ha a kep sem segit akkor ezt hagyuk most majd idovel megtanulom...
Már írta chx: hook_form_alter
Már írta chx: hook_form_alter.
Docs: http://api.drupal.org/api/drupal/developer%21topics%21forms_api_referenc...
További hint: #container, #prefix/#suffix
----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.
koszonom
az alter-t ismerem de meg mindig nem tudom hogy mit kene csinalni hogy el tudjam erni amit akarok...
pl hogy talalom meg a tombben az utolso elemet ... a prefix es suffix nem minden esetben jo mert mar probaltam!
rakd fel a devel modult, és
rakd fel a devel modult, és írd be a form_altered végére, hogy dsm($form).
----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.
....
fent van de sajna ez egy regisztrator forom es itt meg nem vagyok belepve es 1xer mar googlival probaltam keresni lehetoseget hogy fejlesztes alatt a dsm menjen nem belepett felhasznaloval is de nem talaltam de igazabol annyira nem is izgat mivel debugerrel dolgozom! (ami mar eddig is sokat segitett a drupal mukodesenek megerteseben!)
jogosultságot adj hozzá
Látod erre mondtam a következőt itt: http://drupal.hu/comment/66642#comment-66642
Menj el az admin/people/permissions oldalra és a Devel modul „Access developer information” jogosultságát add meg a szükséges felhasználói szerepköröknek.
Aztán pedig, ha valóban a Drupallal akarsz foglalkozni, akkor ezt most tedd szépen félre (a munkádat is) és nyomás olvasni, itt kezd: http://nagygusztav.hu/drupal-7-alapismeretek
Nyugodtan elhiheted, hogy még töredékét sem érted a Drupal működésének és lehetőségeinek. Több éve foglalkozom vele napi szinten, és még most is többször megesik, hogy új dolgokba futok bele, aminek utána kell néznem. Azt hiszem, ezzel a dologgal nem vagyok egyedül a hazai közösségben.
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
....
Az alapismereteket mar majdnem kiolvastam... de nekem ido amig megszokom alapbol hogy is epul fel a drupal es mit es hogyan szoktak benne ... ha ez a tudas meglesz akkor mar a documentacio is eleg lesz de addig amig nem ertem meg addig sokszor van hogy a documentacio olyanokat ir amiket nem ertek :(( az hogy meg evek ota fejlesztesz benne es meg mindig vannak ujdonsagok azzal nincs gond mert szerintem nincs olyan fejleszto aki mindent egyszerre megtanul ... en legalabbis ugy szoktam haladni hogy van egy feladat es ahoz ami kell tudas azt ossze szedem ... es ugye szepen lassan ezzel az oszkep is bovul majd ... csak tudod mindig a kezdet a legnehezebb... es hidd el mielott irtam ide kerdest azelott nem keveset kerestem annak utanna amiket kerdeztem csak ha meg meg is talaltam a megoldast nem ertettem mivel alap tudas hianyossag van ... Drupal 7 -theme es modul fejlesztesre melyik konyveket ajanljatok ?
Na, ez mar jo kerdes
Na, erre már lehet válaszolni, a Drupal a formokat tömbként ábrázolja amiket a hook_form_alter -ben lehet változtani. A $form['foo']['bar'] a $form['foo']-n belül jelenik meg, tehát ezt kell elérned.
koszonom
oks ezt igy most ertem ... ki fogom probalni ... de ha a submitot atrakom akkor is mukodni fog ? :) na ma ki is probalom ...