Sminkkészítés Plain PHP módszerrel

Drupal-os sminkek készítésének több módja van már az alap 4.6-os Drupal feltelepítése után is. Erre alapvetően két módszer létezik alap esetben, ezek a

Az XTemplate alapból elég sok dolgot kínál fel változtatási lehetőségnek, ám sokaknak nem túl kényelmes, és nem lehet eléggé testre szabni, ha eléggé különleges, az alap sminktől jócskán eltérő megvalósításkra van szükség.

Most a teljesen PHP alapú smink elkészítésébe szeretnék most jobban belemenni. Ennek egyrészt megvannak a maga szépségei, ugyanakkor a hátrányai is. A kiindulás ehhez, hogy a themes mappa alá csinálunk egy sajatsmink nevű mappát, abba pedig egy sajatsmink.theme nevű fájlt, amit ezek után a PHP szabályai szerint kell elkészíteni (tekintsd úgy, mintha egy .php fájl lenne).

Ebbe alapvetően egy függvényt kell definiálni, ez pedig a sajatsmink_features() , ami egy tömböt ad vissza, arról hogy milyen saját beállításai vannak a sminknek. Bővebb információ erről a Teljesen saját smink írása oldalon található.

Saját smink függvények

Az előbbin kívül a theme hook-okat írhatjuk átírni a következő formában:
ha az eredeti függvény a theme_page volt, akkor a saját függvény a sajatsmink_page lesz. Persze az összes paraméternek meg kell egyezni az eredeti theme függvényével.

Nem kell ugyanakkor minden ilyen függvényt felülbírálni, csak azokat, amik valamilyen oknál fogva nagyon speciálisak a kinézet szemponjából, illetve amelyeket CSS segítségével nem tudunk kényelmesen megoldani. A legfontosabb amit nagy valószínűséggel szerint felül kell bírálni (override), azok a [url]theme_page[/url] és a [url]theme_node[/url] függvények.

A theme függvények teljes listáját 4.6-os Drupal esetén a http://drupaldocs.org/api/4.6/group/themeable, illetve fejlesztői változat esetén http://drupaldocs.org/api/head/group/themeable oldalon található.
Legegyszerűbb, ha a megváltoztatni szükséges függvényt teljes egészében kimásoljuk innen, és a módosításokat már ezen hajtjuk végre.

CSS fájlok

Ezen kívül a sminkhez tartozó CSS-t és a CSS-ben hivatkozott képeket a themes/sajatsmink , illetve azonos kódbázison levő drupal site-ok esetén a sites/sajatsite.hu/themes/sajatsmink könyvtárba kell helyeznünk, mivel ezek a CSS fájlhoz képesti relatív útvonalról kerülnek behívásra a böngésző által. Minden egyéb képet, amit sminkünk használ szintén érdemes a sminkünk könyvtárába rakni, ám ezekre a hivatkozást már a Drupal oldalunk gyökerétől indítva kell megadni. Ezt segíti a [url]path_to_theme()[/url] függvény, ami visszadja a smink elérési útját.

Az alapértelmezett CSS neve style.css , amit a [url]theme_get_styles()[/url] függvény alapból be fog szúrni. A [url]theme_add_style()[/url] függvény segítségével újabb CSS fájlok húzhatók be a sminkbe, persze ezeket a theme_get_styles() meghívása előtt kell hozzáadni.

A módszer előnyei, hátrányai

Az előnyök között megemlíteném, hogy ez a módszer hozza a leggyorsabb oldalelőállítást, ugyanis nem kell a sminkkezelő, -feldolgozó motornak végigmenni egy állományon és ott a megfelelő változtatásokat végrehajtani. Ugyanezt nevezhetjük hátránynak is, ugyanis nem kevés PHP tudásra és Drupal rendszerismeretre van szükség az ilyen sminkek létrehozásához. Ugyanakkor például XTemplate esetén elegendő a (X)HTML és CSS ismerete a smink létrehozásához, és nem kell ismerni a belső függvényhívásokat amik a megjelenítés mögött vannak.

Előnyként jelenkezik, hogy nagyon egyedi dolgokat lehet PHP-ban megvalósítani. Például ha nem tetszik, hogyan valósítja meg a Drupal a menük, blokkok megjelenítését, akkor azt teljesen a saját szánk íze szerint módosíthatjuk. Bár ez nem minden esetben olyan egyszerű, mint amilyennek látszik, ugyanis például a menük generálására és megjelenítésére szolgáló Drupal-os függvények eléggé bonyolultak még a gyakorlottabb szemű programozók számára is, és elég mély ismeretek elsajátítását követeli meg.
Példaként a menük eléggé egyedi módosítására hozhatom a Vértes Center weboldalát, ahol elég sok trükközés kellett hogy a menük egyes szintjeit leválasszam a blokk-tól.

Végül de nem utolsó sorban definiálhatunk egy sajatsmink_settings() függvényt, amiben a sminkünk saját, egyedi beállításait tárolhatjuk el. A függvénynek a ?hagyományos? [url]hook_settings[/url] függvényhez hasonló kinézetűnek kell lennie, ennek következtében a beállítások eltárolása teljesen automatikusan történik, és a megfelelő menüpont is megjelenik az administer/themes/sajatsmink menüpont alatt kiegészítve a sajatsmink_features() beállításait.
Ezeket a beállításokat a variable_get függvény segítségével érhetjük el a sminkünkben.

Legvégül egy olyan hátrányt említenék meg, ami a kód a megjelenítéstől való elválasztását említeném, ami ebben az esetben csak részben valósul meg. Mivel továbbra is PHP kódot írunk és a PHP kódba rakjuk bele a HTML megjelenítéshez szükséges részeket is, ezért az elválasztást nem nevezhetjük teljesnek. Mentségként ugyanakkor felhozhatjuk, hogy egy külön állomány felelős a megjelenítésért, még ha az PHP állomány is.

comments powered by Disqus