1. Az autoloader hatókörén belül létre kell hozni a modult vagy komponenst.
Komponens
A komponens egy olyan programrész, ami dinamikusan töltődik be, input paraméterek alapján, az oldal fő tartalmi helyére.
Ajánlott fájl struktúra például egy rendszerhez tartozó modulra:
SOURCE/modules/com_hello_world
SOURCE/modules/com_helloworld/hello_world.inc
Ezen belül legyen egy hello_world osztály. A hello_world osztály az lpController-ből, a readTable-ből, a writeTable-ból származzon.
Az osztálynak legyen konstruktora, amelynek a végén van egy parent::__counstruct() utasítás.
A konstruktor határozza meg az osztály $tasks tömbjét. Ebben lesznek a task-ok amit a komponens futtatni tud.
// tasks of the controller
protected $tasks = array(
"read" => "read",
"autocomplete" => "autocomplete",
"details" => "details",
);
A $tasks tömb kulcsai a request['task'] változó értékei, a tömb elemei pedig az osztályon belüli függvény nevével kell megegyezzenek.
A kulcsok kisbetűsek, ha kell aláhúzással tagoltak. Az értékek camelCase
Például, a fenti esetben, ha a $REQUEST['task'] értéke 'read' akkor az osztály 'read' függvényét fogja futtatni a kontroller.
Ha admin komponens készül, akkor a név elé 'a_' kerül. Ugyanaz a név nem lehet az autoloader miatt.
SOURCE_ADMIN/modules/com_a_hello_world/a_hello_world.inc
View fájlok
Ez lesz a view, ha nincs megadva az értéke, illetve táblázat olvasásánál.
SOURCE/modules/com_helloworld/view/hello_worldView,inc
Ez a frissített táblázat view-ja
SOURCE/modules/com_helloworld/view/hello_worldtableView,inc
Ez a szerkesztő nézet view-ja
SOURCE/modules/com_helloworld/view/editformView,inc
Admin komponens esetén erre a három fájlra szinte minden esetben szükség van.
A view fájlneveket úgy kell képezni, hogy a fájlnév a $REQUEST['view']+'View.inc' legyen. pl: a $REQUEST['view']='hello_world' esetén a fájl: view/hello_worldView,inc
Adatbázsi model helye
SOURCE/modules/com_helloworld/model/
Ajánlott fájlnevek:
SOURCE/modules/com_helloworld/model/helloWorldModel.inc
SOURCE/modules/com_helloworld/model/helloWorldBaseModel.inc
SOURCE_ADMIN/modules/com_a_helloworld/model/helloWorldAdminModel.inc
Trait, ha van
SOURCE/modules/com_helloworld/trait
Helper-ek (statikus osztályok)
SOURCE/modules/com_helloworld/helper
Komponens elindítása:
index.php?com=hello_world&task=read&view=hello_world
vagy SEO linkek esetén a normál link legyen ez.
Modul
A modulok statikus komponensek, amelyek az oldal egyes területén betöltődnek. Szabályozható, hogy melyik komponensnél töltődjön be.
A komponens nevek aláhúzással tagoltak, a modul nevek camelCase. Autoloader miatt, hogy különböző legyen.
SOURCE/modules/mod_helloworld/helloWorld.inc
SOURCE/modules/mod_helloworld/view/helloWorldView.inc
Modul megjelenítése az oldalon:
lpApplication::displayModule('a_modul_neve');
2. A modulok közé fel kell venni a modult, vagy komponenst az admin felületen
Rendszer->Új modul
/ad2min/index.php?com=a_module&task=create&view=editform
Komponens esetén a 'Változónév' az osztály neve lesz. pl: 'hello_world', a 'Típus' üresen marad.
Modul esetén a 'Változónév' tetszőleges, de egyedi a rendszeren belül. pl: 'mod_hello_world', a 'Típus' az osztály neve lesz.
A 'params' mező egy JSON formátumú tömb. Itt lehet paraméterezni a modulokat, vagy komponenseket.
A 'load_module' mezőben szintén JSON formátumú tömbben lehet megadni, hogy mely komponenseknél töltődjön be, illetve kizárni is lehet modulokat
3. Hozzáférést kell biztosítani a felhasználóknak a komponens task-jaihoz
Jogosultságok->Modul lista frissítése
/ad2min/index.php?com=a_user_acl&task=refresh&view=a_user_acl
A táblázatban bejelölni a futtatási jogokat.