A héten volt egy kis időm és megnéztem mire kell felkészülni ha az ember egy Drupal 7 sminkelésébe fog. Természetesen erről is van egy folyamatosan bővülő nagyszerű leírás. Ebből csemegézek.
Az eddig core-ban található modulok – és talán a legtöbb contrib modul is – az általuk megvalósított blokkokat számokkal azonosították, habár működött a hatos is szöveggel. Na ez most már a hetesben megváltozott és minden modul szép beszédes névvel rendelkezik. A block-user-0 azonosítóról csak az igazán vad arcok tudták megmondani, hogy micsoda. A block-user-login azonosítót, pedig talán mindenki könnyedén kitalálhatja. Amiről szó van az mind két esetben a belépés blokk. :D
A $taxonomy változó mostantól nem érhető el a node.tpl.php-ban csak a $terms. http://drupal.org/node/254940#taxonomy Erre azért volt szükség, mert a $taxonomy egy tömb volt, mely a meztelen – néha XSS-el szennyezett – adatokat tartalmazott. Aki trükközni akar az persze megteheti a megfelelő előfeldolgozóban. Aki meg azt nem tudja megtenni, az meg jobb, ha nem is nyúl ehhez a tömbhöz.
A page.tpl.php-ban az RDF miatt változtatásokra volt szükség.
Ha nem tudod mi az az RDF itt az idő, hogy utánanézz. Egy mondatban talán annyi elég, hogy a tartalomhoz olyan összetevőket adunk, hogy az gépileg könnyebben legyen értelmezhető. Tehát a gép tudja azt, hogy a „Petőfi Sándor” szöveg az most egy személy neve, vagy egy utcanév éppen stb.
A clear-block osztályt új elnevezése clearfix
Ha tudod ez mi és használtad is akkor tudd, hogy ezt ki kell cserélni.
A box.tpl.php kidobásra került
Nem tudod mi ez? Nem véletlen. Nem sok helyen használták ezt. A keresésnél és a hozzászólásoknál. Ezek most új néven theme_search_results_listing() és theme_comment_form_box() néven érhetőek el.
Figyelni kell ezután, hogy ha felülírjuk az alapértelmezett régiókat akkor a helpet is hozzá kell adni majd.
Mission ki lett dobva, de van egy highlight régió.
Ez egy sima régió amibe blokkokat lehet pakolni és a misszióval szemben megjelenése nem korlátozódik a főoldalra.
A lábléc üzenet (footer message) kukázva lett.
Ugye sose értetted miért van külön lábléc régió és külön lábléc üzenet. Na mostantól nem kell ezen aggódnod. Elvileg a lábléc üzenetet egy blokkba majd jól bedobja az update. :D
A content régió kötelező, az oldal tartalma blokkba került.
Mivel az oldal tartalma ($content) blokkba került ezért mostantól a $conent régió kötelező minden sminkben, hogy a Drupal tudja hova rakni ezt a blokkot, ha nincs semmi se beállítva. (mert mondjuk még nem használtuk azt a sminket.) Szóval mostantól a $content akár lehet a jobb oldalsávban is, csak kikapcsolni nem tudjuk.
Két fázisú lett a változók feldolgozása
Egy változó feldolgozása két lépésben történhet először a preprocess-ben, másodszor pedig a process függvényben. Tipikusan olyankor használható amikor két lépésre van szükség. Pl. ha hozzá akartunk adni a body-classes változóhoz még egy osztályt akkor azt csak elég bénán tudtuk megtenni, hisz az már egy sima szöveg volt. Vissza kellett tehát alakítanunk egy tömbbé, ahhoz hozzátenne a mi osztályunkat és után ismét szöveggé alakítanunk. Ez most már nem így lesz. A processben lesz benne a tömbből szöveggé alakítás és a preprocessben meg tolhatjuk a tömbbe az osztályokat. Na nézzük a következő változást.
HTML osztályok automatikusan generálódnak.
Az alap process függvényben a classes_array tömbből mindig lesz egy classes szöveges változó. Minden sablonban elérhető ez. Lásd még a kódot: http://api.drupal.org/api/function/template_process/7
HTML tulajdonságok automatikusan generálódnak
Mint az előbb az attributes_array tömbből egy attributes változó lesz.
A változó feldolgozó és előfeldolgozó mindenféle smink kampóban használható.
(ugye, hogy az eredeti angolt jobban meg lehet érteni? :D) Az van, hogy a hatosban azok a smink megoldások amik nem sablont, hanem függvényt használtak azokra nem működött a preprocess. Na hetesbe már fog. Látom ahogy aboros elégedetten hátradől és a kezét dörzsöli.:D
Minden smink függvénynek csak egy argumentuma van, $variables változó.
A függvények nevének mindig a smink nevével kell kezdődnie
A phptemplate_ kezdetű függvények kinyírva.
Minden CSS és JavaScript fájlt az .info fájlban definiálni kell.
Szerintem sokan nem is tudják, hogy ha egyetlen egy stíluslap (stylesheets[all][] = …) se volt megadva, de volt style.css a smink könyvtárában akkor azt a Drupal hozzáadta automatikusan. Ugyan ez igaz a script.js-re is. Na ennek almás. Tessék mindent definiálni az .info fájban mert az úgy értelmesebb.
A $block->content helyett $content változót kell használni a blokk.tpl.php-ben
Hát erre csak azt tudom mondani, hogy hurrá.
Könnyebb node és user renderelés.
Tanultabb barátaim majd adnak egy szép fordítást a Granular rendering-re. :D Aki már sminkkelt node-ot amit cck-val pattintott össze az a linken található példát látva valószínűleg sírva fakad örömében. Igen, igen ilyen egyszerű lesz.
Jquery UI (1.8) a core része lett.
Hoppáka lehet olyan csodákat tolni hogycsakna. A misc/ui könyvtárban találhatóak a cuccok amiket sima drupal_add_js és drupal_add_css függvényekkel adhatunk hozzá a sminkünkhöz.
CSS-t és JS-t csatolhatunk a drupal_render() részére.
Példát nézed és megérted, de kb. azért jó mert nem kell a drupal_add_js és drupal_add_css függvényekkel bohóckodnunk.
A $closure mostatnól $page_bottom és van egy új $page_top régió. Ezek rejtettek.
Arra kell figyelni, hogy ha egyedi régiókat definiálunk akkor ezeket is fel kell venni. Ezek egyébként rejtett régiók. Ami azt jelenti, hogy a felhasználó nem pakolhat bele blokkokat, csak a programok tolhatnak bele tartalmat.
Bal és jobb oldalsáv első és második oldalsáv névre hallgat
Persze ez nem igaz, mert a $left-ből lett $sidebar_first és a $right-ből $sidebar_second. Magyar nevek a hetesben se lesznek. (bár ha sikerül akkor az Árvíztűrő tükörfúró gép benne lehet a coreban.)
$pictura $user_picture névre váltott a user_picture.tpl.php fájlban.
Két új osztály érhető el amivel elemeket rejthetünk le.
.element-hidden Ezzel olyan dolgokat rejthetünk el amiket nem akarunk senkinek se megmutatni azonnal, csak amikor szükség van rá. Tipikusan ilyen az összecsukott űrlap mezőhalmaz. (fieldset, bocs :D)
.elment-invisible Na ezzel azokat az elemeket kell megjelölni amiket nem akarunk a látóknak megmutatni, csak a nem látóknak. Ezeket ugyan a képernyő olvasó szoftverek felolvassák majd.
Ha nem tudod mi ez ne aggódj, nem kell többet használnod. Ha használtad akkor érdemes lenne elgondolkodnod, hogy mi értelme. A Jquery az úgy se megy, ha nincs js, szóval ez teljesen felesleges és csak olyan dörti megoldásokat rejthet amit jó lenne kukáznod a kódodból és keresni rá valami normálisabb megoldást.
A javaslatokban mostantól lehet mágikus karaktert használni
Tipikus volt a hatosban, hogy ha az ember a user/1, user/2 stb. oldalaknak akart adni egy más page.tpl.php-t akkor nem tehette meg egyszerűen. Vagy létrehozott az összes user számára egy ilyen fájlt (LOL ez csak vicc), vagy az előfeldolgozóban egy újabb javaslatot adott hozzá, ha az arg(1) numerikus értéket vett fel. Na mától már ez nem kell. Létrehozod a page-user-%.tpl.php-t. Ez illeszkedni fog a fenti szabályra.
Magában álló elem sminkelésekor figyelni kell.
Ne ezt csak kb. nagyjából értettem. Valaki segítene? :D
Jelölő lett hozzáadva a telepítési indikátorhoz, hogy a képernyő olvasók is értelmezhessék.
Olyan szövegeket adtak itt hozzá, mely látó emberek számára érdektelen, hisz ők látják a csíkot. :D
Fenti okok miatt az „Itt állsz” szöveg hozzá lett adva a morzsamenühöz.
A title és alt tulajdonsága megváltozott az RSS ikonnak
Egy újabb problémás dolog szűnik meg. A hatosban ugyanis volt kereső doboz és kereső blokk. Az egyiket a sminkben tettük a helyére. A másik egy blokkban volt, tehát a felhasználó oda tette, ahova akarta. Ebből aztán volt nagy kavar. Na most már nincsen.
Megváltozott a menü-fa, a link és a fülek előállítása.
A menu_tree_output() most már egy olyan stuktúrált tömböt ad vissza amiből a drupal_render() függvénnyel tudunk HTML-t gyártani. A theme_menu_item_link() és a theme_menu_item() függvények kukázva lettek. Helyettük a theme_menu_link() használatos. Vagyis ez az alapértelmezett függvény ami a menu_tree_output() kimenetének megformázásakor használatra kerül. A theme_menu_local_task() függvény is változik, valamint megjelenik a hozzá nagyon hasonló theme_menu_local_action(). Hetesben van ugyanis ilyen lokális akció. Nézd a képet itt: http://drupal.org/node/542658#comment-1919562 és vedd észre az + Add link-et a jobb oldalon. Az a local action
theme_links() kapott egy új $heading nevű paramétert.
Ez azért kell mert a WCAG ezt előírja. A lényeg, hogy az elsődleges menü kap egy olyan címet ami segítségével a képernyőolvasót használók könnyebben megtalálják a navigációs elemeket.
theme_get_settings() és a SMINK_settings() kapott egy kis tutizást
A hatosban a visszaadott plusz elemeket tette bele a smink beállításai űrlapba a rendszer valamint a saját beállításainkat elég körmönfont módon kellett inicializálni. Most lehetőségünk lesz arra, hogy egyrészt a hook_form_alter() segítségével saját testre szabjuk a beállító űrlapot. Másrészt az .info fájlban van egy újabb változó, mely segítségével könnyedén megadhatjuk a kezdeti értékeket a változónak.
A kis piros csillagocska a kötelező űrlapelemeknél gondolom mindenkinek megvan. Talán annak olyanok akiknek már kellett ezt formázni. Íme hát a hetesben ez is egyszerűbb lesz.
Na ezt is mindig el kellett mondanom, hogy hát igen a l() függvénybe belehuzalozott html kód van ami nem hogy nem helyes, hanem még kerülendő is. A hetesben úgy formázzuk a linkeket ahogyan akarjuk. :D
Szemmel könnyen átugorja az ember a felesleges dolgokat, ráadásul a különböző régiók jobbra és balra el vannak tolva. Képernyőolvasó szoftvert használva már nem olyan könnyű ez. (vagy akár egy kisebb mobil képernyőn se feltétlen. Ezért lett hozzáadva minden sminkhez ez a kis link.
Az alter kampók elérhetőek a sminkekben is
wow, tehát nem csak preprocesszálhatunk, hanem a műkdöésbe is belenyúlhatunk… Vajon jó-e az, hogy egy smink menu_laterezik? Nem tudom, mindenesetre izgalmas távlatokat nyit.
A rendszer modulok stíluslapjait átstruktúrálták.
default.css bele lett tolva a system.css-be system-behavior.css fájl hozzá lett adva. Ebben vannak az olyan mókák mint pl. az autocomplete, drag and drop(ezt nem mertem lefordítani húzd és vondra), collapsible fieldsets (összegyűjthető mezőhalmok :D), progress bar stb.
Új sminkbeállítási lehetőség a Gyorsindító(shortcut) modul „gyorsindító hozzáadása” linkje miatt.
A hetesben van egy a felhasználó által testreszabható gyorsindító eszköztár. Úgy működik, hogy az éppen aktuális oldalt lehet hozzáadni az adott menühöz egy link segítségével. Ha ezt támogatja a sminkünk akkor a következő sort kell hozzáadni az .info fájlhoz: settings[shortcut_module_link] = 1
A sablonfájlok nevében található elválasztó jelek mostantól dupla kötöjel - - a szimpla helyett.
Erre azért volt szükség, mert a ha egy összetett fájlnév volt és az egyik tagjában szintén volt ilyen elválasztó néha összekeveredett, de gyakran követhetetlen volt.
A CSS fileok @import direktívával lesznek betöltve a LINK tag helyett.
Főleg az IE miatt ami nem tud olyan sok css fájlt betölteni.
Böngésző specifikus CSS fájlok hozzáadásának lehetősége a drupal_add_css() függvénynél
Eddig ezeket a feltétles megjegyzéseket a page.tpl.php fájlba kellett belegyűrkőznünk. Eztán már csak egy kis beállítás kell nekünk.
theme_menu_link() és a theme_menu_tree() függvények a új javaslatokat kaptak.
SMINKNEVE_menu_tree__MENU_NAME() és SMINKNEVE_menu_link__MENU_NAME() függvényeket is használhatjuk. Ez ugye azt jelenti, hogy az egyes menükre specializált megjelenést tudunk majd beállítani.
Új $title_prefix és $title_suffix sminkváltozók lettek
Ezeket ne felejtsük el lerenderelni(erre is kéne egy jó szó) a cím előtt és után. Ebbe mindenféle izgalmas dolog lesz mint pl. a helyben szerkesztést lehetővé tévő linkek. Akinek van joga az egyből törölheti is az adott bejegyzést nem kell kattintgatnia. :D
theme_node_form() kukázva lett
node_get_types() át lett nevezve, új neve: node_type_get_types()
Remélem rajtam kívül is hasznát veszi valaki ennek a kis szösszenetnek.