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.