Saját PHP függvény alapú smink készítése

chx képe

Legegyszerűbb leírni a tiszta PHP smink készítését, ráadásul a PHPTemplate megértését segíti, ha először ezzel kezdem. Minden smink a themes alatt a saját könyvtárában lakik, és a neve megegyezik a könyvtárnévvel, a kiterjesztése pedig theme. Tehát az themes/sajatsmink könyvtárban van a sajatsmink.theme fájl.

Ezen belül, hasonlóan a modulokhoz, különböző hurkokat valósíthatunk meg. Ezek a hurkok a kézikönyvben theme_-al kezdődnek, élesen elkülönülve a hook_ hurkoktól. Ez utóbbi csak egy jelölés, míg a smink hurkok ténylegesen meg is vannak valósítva a includes/theme.inc fájlban.

Például van egy theme_form_element smink hurok, amit a sajatsmink_form_element fájlban sajatsmink_form_element néven valósítunk meg. Ennek a függvénynek egy stringet kell visszaadni, amit aztán kiír majd a Drupal.

Minden tiszta PHP sminknek meg kell valósítania a theme_features hurkot, ez egy tömböt ad vissza. A tömb leírja, hogy ez a smink mire képes. Lehetséges elemei:

logo
Megadhatunk egy logót. A sminknek ellenőriznie kell a default_logo (logikai) és logon_path (string) változók értékeit.
toggle_logo
A logó ki-be kapcsolható.
toggle_name
A weboldal neve ki-be kapcsolható.
toggle_search
A keresés doboz ki-be kapcsolható.
toggle_slogan
A jelmondat ki-be kapcsolható.
toggle_mission
A misszós üzenet ki-be kapcsolható.
toggle_primary_links
Az elsődleges hivatkozások ki-be kapcsolhatóak.
toggle_secondary_links
A másodlagos hivatkozások ki-be kapcsolhatóak.
toggle_node_user_picture
A smink meg tudja jeleníteni a felhasználók képét a tartalmai mellett.
toggle_comment_user_picture
A smink meg tudja jeleníteni a felhasználók képét a hozzászólásai mellett.

Például:

function chameleon_features() {
return array(
'logo',
'toggle_name',
'toggle_slogan',
'toggle_primary_links',
'toggle_secondary_links');
}
?>

Az alap disztribúcióban ilyen típusú smink a chameleon. Angolul ezen az oldalon találhatjuk meg a smink hurkok listáját.

Hozzászólások

pifta képe

A theme-t sminknek forditani az meg egy dolog... usse ko megeszem, de a function-t huroknak???? Azt ugy hivjak tanyasi programozoek hogy fuggveny... Legalabb ha forditatok ertsetek mar hozza kicsit... teljesen erthetetlen pl ez a leforditott doksi igy... annak ellenere hogy hasznos lenne...

Aztan amikor meg megy a user a programozohoz, hogy hapsikam, azt irja a doksi hogy modositani kell azt a hurkot aminek valami formos t betus neve van, a programozo baratunk nagyokat nez hogy "Te meg mi a *rol beszelsz hapsikam???" Telleg nem leszolni akarom a forditot, de ha nem ert hozza, akkor legalabb kerdezzen meg valakit, telleg nem baj ha lelkes valaki, csak ne az legyen mar a vege, hogy egy rakas *t er a munkaja azoknak akik konyitanak a temahoz es itt keresnek infot szolajtok ha rosszul gondolom.

Vagy ha a sajat terminologia kidolgozasa a cel, es nem szamit, hogy ennek a szakmanak mar van terminusa az se baj, csak egyszeruen nem ertem... foleg ugy nem, hogy egyetlen helyen sikerult is fuggvenynek hivni...:)

Pifta

pifta képe

Nahjo lehet hogy hamar itelkeztem kicsit, mashol is hasznalatban van ez a terminus, de akkor csak szimplan nem ertem hogy honnan, vagy miert... De elso korben ugytunik hogy en voltam a *.:)

Pifta

Illyés Edit képe

A hurok (hook) a függvények egy speciális típusa a Drupal motorban.

Nagyon ritkán fordulhat az elő, hogy a Drupal forráskódját módosítanunk kell, hiszen a rendszer számos ponton lehetővé teszi a folyamataiba történő beavatkozást az úgynevezett hurkokon (hook) keresztül. Ezek olyan speciálisan elnevezett függvények, melyek szükség esetén meghívódnak. Nekünk nem kell törődni azzal, hogy meghívásra kerüljenek, erről a Drupal gondoskodik. A hurkoknak nem csak a neve, hanem a paraméterezése is kötött, a hurok definiálója adja meg, hogy mi az elvárt paraméter lista. Saját hurok megvalósításainkat is ennek megfelelően kell létrehoznunk.

Olvasgasd a Kézikönyv ide vágó fejezeteit magyarul vagy angolul.

pifta képe

Nah akkor jol ereztem én, hogy jelent ez valamit, miutan több helyen is olvastam, elnézést az első destruktív kommentért, és köszönöm a választ.

Pifta

sonaba képe

Mondjuk valaki elmagyarázhatná rendesen, hogy mi ez a hurok... ez gyakorlatilag függvény clone ?
Ha van hurok, az hívódik meg, ha nincs, akkor meg az eredeti függvény ?
Vagy hogy van ez ?

Hojtsy Gábor képe

A smink hurkok pont így működnek.

pp képe

Fejlesztesz egy modult, de kéne html kimenet. Ezt nem belegányolod a kódba, hanem készítesz egy függvényt, melyet 'theme_' szövegrészlettel kezdesz, pl: theme_modulneve_formazasneve. Ahol szükséged van erre a html kimenetre ott meghívod ezt a függvényt, de nem csak egyszerűen ahogyan php-ban tennéd, hanem a theme függvénnyel: theme('modulneve_formazasneve');
A theme függvény ugyanis az első függvényt hívja meg amit megtalál a következő sorból:

sminkneve_modulneve_formazasneve
sminkmotorneve_modulneve_formazasneve
theme_modulneve_formazasneve

Tehát ha meg akarod változtatni valamelyik modul html kimenetét(és jól írták azt meg) akkor nem kell más tenned, mint megkeresned a modulban a theme_ kezdetű függvényeket, és a neked megfelelőt(amelyik azt a tartalmat állítja elő amit át akarsz sminkelni) egyszerűen bemásolod a template.php-ba. Aztán a theme helyett beírod a smink nevét és azt csinálsz az adatokkal "amit csak akarsz". (megenni nem tudod, úgyhogy akár kisgyerek kezébe is adhatod, hisz nem fogja felszippantani az apró darabkákat.)

remélem így már érthető.

pp

sonaba képe

Igen. Most már tiszta.
Köszönöm.

aboros képe

hú, ez baromi hasznosnak tűnik, így már vili, hogy miért írják, hogy drupals theme system is very strong. :) én eddig csak úgy 'sminkeltem' [ezek után már csak így idézőjelbe :], hogy cck, fieldek, tartalom típusok, aztán mindegyiknek van szépen node-akarmi.tpl.php -ja, ott meg már csinálhatom a dolgom. najó, meg persze view -k, az is szuper azért, megértem, hogy a továbbiakban próbálnak is amit csak lehet cck -val meg view -sal megcsinálni.

most a hírlevél kapcsán szaladtam először abba, hogy ez kevés, valójában egy modul kimenetét kellene bántani, ha jól értem ez pont erre való!

[én teljesen autodidakta programozó vagyok, de mindig leakadok rajta, hogy mennyire okos is a drupal.. :]

jó lenne erről a hurkos template.php -s sminkelésről valami konkrét példán végigmenő 'HOW TO' magyarul is talán. na, majd írok egyet, ha végleg megértettem és használni is rendesen tudom végre. már csak hetek kérdése. :D

-
clear: both;

alieno képe

Szia!

Sikerült kitapasztalni a sminkelés rejtelmeit? Sokaknak jól jönne az a HOW TO, köztük nekem is ugyanis most sokminden kavarog a fejemben a témával kapcsolatban, de nem áll össze :(

Lépésről lépésre leírás lenne jó, nem akarsz egyet csinálni? :)

ballor képe

Gondolom sok embernek jönne jól egy ilyesféle leírás. Szeretnék én is készíteni saját sminket, de eléggé bonyolultnak tűnik. (Nem a CSS átírása érdekel, mert azt bárki megoldja.)

Előre is köszönjük!