Skoči na sadržaj
1

Radeći na temi za srpsku Drupal zajednicu

Radeći na temi za Drupal zajednicu, naišao sam na manje (naravno nepredviđene) probleme uglavnom na sitnicama koje su mi oduzele najviše vremena. Prvo je trebalo odlučiti dal' tema da bude 'tečna' (fluid) ili određene širine (fixed). Odlučio sam se za određenu širinu jer je lakše kontrolisati izgled sadržaja na određenoj širini nego na temama koje imaju dinamičku širinu sadržaja. A iz tog razloga bi izrada morala da bude brža. Pošto je taj deo rešen, stavljena je sirina 960px kao neki standard za sajtove sa određenom širinom. Tu bi trebalo da stane sve sto nam treba... Regioni 'levi' i 'desni' i sadržaj.

Daljim radom sam uvideo da je širina regiona sa strane jako mala i ako želimo da tu prikažemo blok sa kalendarom taj kalendar bi bio poprilično spljošten. Sa druge strane, ako regione proširim, ostaje jako malo mesta za sam sadržaj. Tu sam odlučio da izbacim desni region i da zadržim samo levi koji bi bio poprilično širok kako bi u njemu mogli da prikazujemo blokove koji bi bili prikazani kao 'slider'-i ili 'tab'-ovi. Levi region sam stavio da bude sirok 300px, a za sadržaj sam ostavio 660px, a kad se oduzmu margine i punjenje (padding), ostaje nam 600px za sam sadržaj. Navodim ove dimenzije zato što sam kasnije naišao na još par problema. Jedan se tiče tabela, odnosno sadržaja na stranici za definisanje tipova sadržaja, a drugi je sa formama odnosno sa poljima za unos teksta (textfield, textarea). Tu se uključuju i forme sa izmenu sadržaja kao i neke forme u sekciji za administratore. Problem je najviše bio sa tekst poljima koji podrazumevano u Drupal-u imaju veličinu 60 koja je za, recimo, izmenu blokova bila predugačka s obzirom da se koristi 'vertical_tabs' modul koji opet zauzima jedan deo prostora po sirini od sadržaja. Kao prvo rešenje sam koristio form api za svako polje koje je bilo predugačko, ali kako je posao odmicao, na sve više mesta je trebalo primeniti form_hook_alter(). Tad sam pomislio

pa zašto ja to radim ovako... zašto za svako polje stavljam posebno širinu 50 (koja mi je bila potrebna), zašto to jednostavno ne bih uradio od jednom za sva tekst polja

Istraživajući po internetu i po Drupal dokumentaciji, saznao sam da Drupal elemente za formu pravi preko funkcije hook_element() koja služi za definisanje novih elemenata (date, link, email, ...), a poziva je systemmodul kao system_elements() i u toj funkcji su definisana SVA polja koja dolaze sa Drupal jezgrom, a među njima i textfield. Nažalost, ne postoji funkcija hook_elements_alter() s kojom bi mogli da rešimo ovaj nedostatak u Drupal-u 6, ali neko je naišao na ovaj problem čak i u Drupal-u 7 http://drupal.org/node/527804koji je otklonjen i funkcionalnost je uključena u jezgro Drupal-a 7 http://api.drupal.org/api/function/element_info/7A nama za sad ostaje da problem rešimo na tezi način, a verovatno preko css-a, šta da se radi... Evo i mali prikaz teme u toku razvoja

1