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

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:

<?php
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.

pifta képe
eldobom az agyam - function=hurok?

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
hmm...

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
function != hurok

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
Értem... thx

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
hurok

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
smink hurkoknál igen

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

pp képe
igen, ez bennne a zseniális

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

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

aboros képe
ez nagyon hasznos!

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

alieno képe
HOW TO

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? :)