Dirbame su: |
Modulių kūrimasĮvadasŠis dokumentas aprašo TVS iPyramid 1.5 bei 2.0 versijos galimybes, kuriant papildomus 2-o lygio modulius. Naudodamiesi juo, Jūs galėsite panaudoti savo PHP žinias, kurdami našesnius ir patogesnius sprendimus savo klientams. Kad galėtumėt pasinaudoti šiomis instrukcijomis, Jūs turėtumėte būti įvaldęs PHP kalbą, nes visi moduliai rašomi šia kalba. Jeigu Jūsų modulis naudos duomenų bazės informaciją, Jums greičiausiai teks žinoti ir tos duomenų bazės palaikomą SQL kalbos dialektą. Kas yra 2-o lygio modulis?Trumpas atsakymas: Tai yra TVS puslapio tipas. Kiekvienas puslapis, papildomas elementas arba praplėtimas iPyramid sistemoje turi tipą, (pvz tekstas, paveiksliukas, galerija, prekių krepšelis, komentarai, paieška, kliento prisijungimo blokas ir pan.). Tai reiškia, kad kiekvienas puslapis yra kažkokio modulio egzempliorius. Kurdami savo modulį, Jūs galite tinklapyje turėti specifinį duomenų išvedimą. Taip Jūs galite sukurti modulį, kuris pvz., atvaizduos duomenis paimtus iš Oracle, Navision, arba atvaizduoti orų prognozes, arba pateikti prijungtam klientui mėnesio ataskaitą už pvz., ryšio paslaugas, ar sukurti specifinę galeriją tik su tam tikram klientui skirtais konfiguruojamais parametrais. Kaip prijungti tuščią modulį?Priklausomai nuo įsigytos licencijos konkrečiam projektui, Jūs galite sukurti tam tikrą kiekį papildomų modulių. Projekto pagrindinėje direktorijoje subdirektorijose: user/modules/tree/ Jūs galite sukurti direktorijas user1, user2, user(X). Kiekviena direktorija skirta atskiram moduliui.
Iš ko susideda modulis?Kintamieji pasiekiami administravimo srityje:
Objektai:
Funkcijos:
Kiekvienas 2-o lygio modulis susideda iš trijų būtinų failų: _init.php, _print.php, _admin.php ir kelių nebūtinų, tokiu kaip _class.php, _unilang.txt, _derived.php, _dependents.inc.php, kurių paskirtis aprašyta žemiau. Viduje _print.php, _init.php, _class.php, _derived.php, _dependents.inc.php failų Jūs turite konstantas:
_init.phpTai inicializacinis ir pagrindinis modulio failas. Šio failo paskirtis - pranešti sistemai apie modulio egizstavimą. Jame aprašomas pats modulis ir jo parametai. Modulis turi papildyti $modules["jusu_mod_pav"] masyvą. Žemiau pateikiame šio masyvo galimus ir būtinus parametrus:
Kintamieji pasiekiami šiame faile:
Žemiau pateikiame _init.php failo pavyzdį, paprasto modulio, pavadinimu MyModule, inicializacijai: <?php if(IPYR_ADMIN_MODE and $lang_id){ $modules[$_module_name] = array( _admin.phpFailas skirtas modulio administravimo srities pateikimui administratoriui. Paprasto modulio atveju tai skyrelis "Redaguoti", papildomo elemento atveju tai sekantis pagalbininko žingsnis. Dažniausiai failas susideda iš 2-jų dalių: atvaizdavimo ir apdorojimo. Apdorojimo dalis rašoma failo viršuje, tam kad galėtų apdoroti visus veiksmus prieš atvaizduojant rezultatą, taip pat atlikti duomenų išsaugojimo veiksmus. Atvaizdavimo dalis rašoma apačioje. Paprasto _admin.php failo pavyzdys: <?php // Veiksmu apdorojimas _print.phpKintamieji pasiekiami _print.php faile:
Objektai:
Failas skirtas modulio išvedimui ir ateinancių duomenų apdorojimui. Tai, ką vartotojas matys modulio išvedimui skirtoje vietoje, turi buti rašoma čia. Modulis privalo grąžinti (return) išvedamą tekstą. Šiame faile galima naudoti modulio šablonus. Tuo atveju, kai nerandamas šablonas, modulis turi grąžinti tekstą arba klaidos kodą "-1028". Paprasto _print.php failo pavyzdys: <?php // Perduodame visas turinio reikšmes į Smarty _class.phpJeigu norite sukurti modulio klasę, ją turite talpinti čia. Klasė turi vadintis iPyr_Tree_{modulio_pavadinimas}, pvz. iPyr_Tree_mymodule1. Tvarkingam klasės veikimui rekomenduojamas toks konstruktorius (pvz. modulyje news1): // Constructor Tokiu atveju Jūs galesite pasiekti branduolį (iPyr_Core) per $this->_top, o Turinio valdymo objektą per $this->parent, arba $this->_top->m["tree"]. Faile _print.php išvedimo metu pasiekti klasę galite iškvietę $this->{modulio_pavadinimas}(pvz. $this->mymodule1). _unilang.txtPlačiau apie šio failo turini skaitykite skyrelyje "Kalbų failai" _derived.phpŠitame faile kuriamas modulio-praplėtimo administravimo organizavimas. Čia sukurtas valdymas bus vaizduojamas Turinio srityje, atitinkančiame modulio pavadinimą skyrelyje, prie kiekvieno puslapio, kurį praplečia šitas modulis. Šio modulio struktūra ir veikimas yra analogiškas _admin.php failui. Jeigu naudosite action veiksmą praplėtimo duomenų išsaugojimui, siūlome naudoti "editDerived" reiskšmę, pvz. (&action=editDerived), tam kad nesusikirstų _admin.php failo ir _derived.php atliekami veiksmai. Žemiau pateikiamas praplėtimo "Komentarai" pavyzdys. _dependents.inc.phpKai kurie moduliai (tokie kaip Naujienos, Galerija, Vitrina) yra sudėtiniai, t.y. susideda atitinkamai iš elementų pvz. Naujienų, Paveiksliukų, Prekių. Kadangi šių elementų gali būti daug ir jie nėra tinklapio struktūros dalis, o yra turinio dalis, tai jie nematomi tinklapio medyje ir jų negalima sukurti taip, kaip naują puslapį. Norint sukurti Naujieną Naujienų puslapyje, prie sudedamojo modulio redagavimo atsiranda 2 nauji skyreliai, "Elementų sąrašas" ir "Sukurti naują elementą". Šie skyreliai yra valdomi ir kuriami kiekvienam sudėtiniam moduliui atskirai, siekiant pratęsti sisemos lankstumą ir galimybes turėti skirtingą elementų administravimą skirtingiems sudėtiniams moduliams. Pvz naujienų sąraše mes matome naujienų pavadinimus ir naujienų publikavimo datas, galerijoje mes matome tik sumažintus paveiksliukus trim stulpeliais ir jų parametrus. Kaip sukurti nurodyto tipo puslapį?Jeigu tai paprasto tipo puslapis (pvz. tekstas, naujienos), paspauskite "Sukurti nauja puslapį" ir pasirinkite puslapiu tipų sąraše Jūsų norimą tipą. Jeigu tai papildomas elementas (pvz. paveiksliukas), pasirinkite papildomą elementą, paspauskite Redagavimo mygtuką ir sąraše pasirinkite norimą tipą. Jeigu tai praplėtimas (pvz. komentarai prie teksto arba naujienos), pasirinkite modulį, kurį praplečia Jūsų ieškomo tipo modulis, ir šalia redagavimo ir peržiūros skyrelių atrasite ieškomą praplėtimą. Jeigu tai elementas (pvz. Atskira naujiena, galerijos paveiksliukas), pasirinkite tėvinį puslapį (pvz. atitinkamai Naujienas arba Galeriją ) ir prie skyrelio "Redaguoti" ir "Peržiūrėti" rasite skyrelį "Sukurti elementą". Elementų sąrašą rasite ten pat skyrelyje "Elementų redagavimas" Šablonų palaikymasModulio išvedimą galima išskaldyti į kelias dalis. Dažniausiai tai daroma del patogumo. Pavyzdžiui, užklausimo formos siuntimo modulis gali turėti 3 šablonus: formos šabloną, el. laiško su užpildytais formos rezultatais ir padėkos šabloną, kuris pasirodo tuo atveju, kai forma sėkmingai išsiųsta. Šablonus, kuriuos modulis turi palaikyti, reikia įrašyti į _init.php failo $modules[$mod_name] masyvo parametrą "use_templates". Šis parametras yra šablonų pavadinimų masyvas. Modulių pavadinimai turi susideti tik iš lotyniškų raidžių, skaičių ir pabraukimų. pvz formai šis parametras gali buti lygus array("main", "email", "success");. Su tokiu parametru dizaino valdyme prie nurodyto modulio atsiranda 3 šablonai "main", "email", "success". Tam, kad galėtumėt panaudoti tam tikrą šabloną išvedimui, reikia naudoti $ipyr->template->exists() ir $ipyr->template->fetch() funkcijas. Šių funkcijų vienintelis parametras yra kelias iki šablono, kurio formatas turi būti toks "'_modules/tree/{modulio_pavadinimas}/{šablono_variantas}/{šablono_pavadinimas}", kur {modulio_pavadinimas} yra sisteminis modulio pavadinimas (pvz. form1), {šablono_variantas} - šablono variantas, jeigu modulis jį palaiko, pagal nutylėjimą turi būti "default", o {šablono_pavadinimas} - yra būtent tas pavadinimas vienos iš nurodyto _init.php faile parametro reikšmių. Kešuoti ar nekešuoti?Kai kurie moduliai vykdo tik statinio išvedimo funkciją, t.y. išvedimas keičiasi tik nuo administratoriaus tiesioginio modulio duomenų pakeitimo. Tam kad pagreitinti sistemos veikimą ir sumažinti serverio apkrovą, Jūs galite leisti kešuoti modulio išvedimą. Nurodykite _init.php faile $modules[$mod_name] masyvo parametrą "cache" lygų 1. Nepamirškite, kad jeigu modulio išvedimas priklauso nuo išorinių veiksnių - jo leisti kešuoti negalima. Kaip sukurti papildomo elemento moduli?Papildomas elementas yra modulio egzempliorius, įterptas į tam tikrą puslapio vietą. Jis sukuriamas analogiškai paprastam moduliui, išskyrus kelis skirtumus.
Kaip sukurti praplėtimą (extension)?Praplėtimo modulis praplečia paprastojo modulio galimybes. Tarkime prie leidžia teksto moduliui arba naujienai turėti komentarus, galerijos paveiksliukui - reitingus; šiuo atveju reitingas ir komentaras yra Praplėtimo moduliai. Šis modulis naudoja praplečiamo modulio item_id, nes savojo neturi. Dėl to, saugojant reikšmes į UniDB duomenų bazę, stenkitės sugalvoti tokius reikšmių pavadinimus, kad jie nesusidubliuotų su paplečiamuoju. Taip pat nepamirškite, kad prie vieno modulio galima prideti kelis skirtungus praplėtimus. Skirtumai lyginant su paprastu moduliu: _init.php"group" parametras turi turėti reikšmę "ext". Turite užregistuoti kokius modulius praplečia šis. Tam, kad tai padarytumėt, įdėkite _init.php faile eilutę(-es). $derives["prapleciamo_modulio_pavadinimas"][$_module_name] = array("name" => txt("JusuModulioPavadinimas")); Taip galite praplėsti tiek modulių, kiek norite. _derives.phpFailas skirtas praplėtimo valdymui atvaizduoti. Šiame faile $_item_id nurodo ne nuosavą id, bet praplečiamojo modulio id. Kaip sukurti sudėtinio puslapio elementą?Norimo modulio _init.php faile nustatykite parametrą $modules[$mod_name]["group"] = "dep". Tėvinio modulio (tame prie kurio bus pridedamas šis) _init.php faile nustatykite $modules[$mod_name]["built_in_childs"] = array("{vidinio_modulio_pavadinimas}") arba jeigu "built_in_childs" parametras jau aprašo palaikomus modulius, tiesiog papildykite šitą masyvą. Po šios procedūros administravimo srityje, redaguojant tėvinį modulį, "Turinio" skiltyje turi atsirasti skyrelis "Sukurti naują elementą", kuriame vienas iš pasirenkamų tipų turi būti Jūsų nurodytas modulis. Apie skyrelį "Elementų redagavimas" plačiau galite perskaityti punkte _dependents.inc.php Tėvinio modulio klasėje turite sukurti metodą fetchList($id, $fetch_all). Šis metodas turi grąžinti masyvą su STEP elementais ir papildomais duomenimis tų puslapių, kurie priklauso nurodytam tėvinio puslapio $id. Sistema paduoda $fetch_all parametrą kaip true, tam kad metodas grąžintų visus elementus, tame tarpe ir neaktyvius. Tikrajame išvedime galite paduoti FALSE, tam kad metodas grąžintų tik aktyvius elementus. Sistemos objektaiModulių karkasai (šablonai)Standartinis modulis (user1) Parsisiųsti
Papildomas elementas (user2) Parsisiųsti Pavyzdys standartinio modulio (text3, "Tekstas su paveiksliuku") Parsisiųsti Pavyzdys papildomo elemento modulio (infoblock1, "Informacijos blokas") Parsisiųsti |
|||||||||||||||||||||||||||||||||||||||||||||||||
|