Helló, világ! modul készítése

A JoomlaWiki wikiből

A modulok egyszerűen és rugalmasan használható bővítmények. Az oldalak kis részeként vannak jelen és általában kevésbé összetettek. Számos példát láthatunk modulokra, mint például a Joomla! alaptelepítésében lévő menük, legutóbbi hírek, bejelentkezés modulok.

Ez a leírás bemutatja, hogy készítsünk el egy Helló, világ! modult. A leíráson keresztül megismerhetjük a modulok fájlstruktúrájának az alapjait. Ezt az alapstruktúrát a későbbiekben bővíthetjük bonyolultabb modulok fejlesztéséhez.

Tartalomjegyzék

Fájlstruktúra

Négy fájlból épül fel egy alapvető modul:

  • mod_hellovilag.php: Ez a modul fő fájlja. Az alapvető inicializáló rutinokat hajtja végre, meghívja a helper rutinokat a szükséges adatok begyűjtéséhez, majd beágyazza a sablont, amely a modul kimenetetét jeleníti meg.
  • mod_hellovilag.xml: Ez a fájl a modul adatait tartalmazza. Meghatározza a telepítendő fájlokat és a konfigurációs paramétereket.
  • helper.php: Ez a fájl tartalmazza a helper osztályt amely a tulajdonképpeni munkét végzi, visszaadja a megjelenítendő információt (általában az adatbázisból).
  • tmpl/default.php: Ez a modul sablonja. A fájl megkapja az adatokat a mod_helloworld.php fájltól, majd létrehozza az oldalon megjelenítendő HTML-t.

A mod_hellovilag.php fájl elkészítése

A mod_hellovilag.php fájl három feladatot végez el:

  • Beágyazza a helper.php fájlt, amely a szükséges adatok összegyűjtéséhez használt osztályt tartalmazza.
  • Meghívja a helper osztály megfelelő metódusát az adatok kinyeréséhez.
  • Beágyazza a sablont a kimenet megjelenítéséhez.

A helper osztály a helper.php-ben van definiálva. Ezt a fájlt a requiery_once utasítással ágyazzuk be:

  1. require_once( dirname(__FILE__).DS.'helper.php' );

A require_once-t használjuk, mert a helper funkció egy osztályon belül található és csak egyszer szeretnénk definiálni.

A helper osztályt még nem definiáltuk, de amikor megtesszük, egy metódust fog tartalmazni: getHello(). Az alap példához ez nem igazán szükséges - a "Helló, világ!" szöveget, amit a metódus visszaad, egyszerűen beépíthetnénk a sablonba. Most viszont a helper osztályt használjuk a technika bemutatásához.

A mi modulunk jelenleg nem használ paramétereket, de mindenesetre átadjuk őket a helper metódusnak, hogy a későbbiekben használhatók legyenek ha úgy döntünk, hogy bővítjük a modul funkcióit.

A helper osztály metódusát a következő módon hívjuk meg:

  1. $hello = modHelloVilagHelper::getHello( $params );

A teljes mod_hellovilag.php a következő:

  1. <?php
  2. /**
  3.  * Helló, világ!
  4.  */
  5.  
  6. // Közvetlen elérés megakadályozása
  7. defined( '_JEXEC' ) or die( 'Restricted access' );
  8.  
  9. // A helper fájl beágyazása
  10. require_once( dirname(__FILE__).DS.'helper.php' );
  11.  
  12. $hello = modHelloVilagHelper::getHello( $params );
  13. require( JModuleHelper::getLayoutPath( 'mod_hellovilag' ) );

Az egyetlen sor, amiről eddig még nem beszéltünk az az első sor. Ez a sor ellenőrzi, hogy a fájlt a Joomla! hívta-e meg. Ez a különböző támadások kivédéséhez szükséges.

A helper.php fájl elkészítése

A helper.php fájl tartalmazza a helper osztályt, amelyet a kimenetben megjelenő adatok visszaadásához használunk. Ahogyan azt már említettük, a helper osztály egy metódust fog tartalmazni: getHello(). Ez a metódus a "Helló, világ!" szöveget adja vissza.

A helper.php fájl kódja:

  1. <?php
  2. /**
  3.  * A Helló, világ! modul helper osztálya
  4.  */
  5. class modHelloVilagHelper
  6. {
  7.     /**
  8.      * Visszaadja a "Helló, világ!" szöveget
  9.      *
  10.      * @param array $params A modul paramétereit tartalmazó objektum
  11.      * @access public
  12.      */    
  13.     function getHello( $params )
  14.     {
  15.         return 'Helló, világ!';
  16.     }
  17. }

Nincs szabály arra, hogy úgy kell elnevezni az osztályt ahogy tettük, de segít ha így tesszük, mert könnyen azonosítható.

A bonyolultabb modulok adatbázis kéréseket vagy más funkciókat is tartalmazhatnak a helper osztályban.

A tmpl/default.php fájl elkészítése

A default.php fájl a sablon, amely a modul kimenetét jeleníti meg.

A default.php fájl kódja a következő:

  1. <?php
  2.  
  3. // Közvetlen elérés megakadályozása
  4. defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
  5.  
  6. <?php echo $hello; ?>

Fontos megjegyezni, hogy a sablon fájlban ugyanazok a változók érhetők el, mint a mod_hellovilag.php-ben. Ez azt jelenti, hogy a $hello változót definiálhatjuk a mod_hellovilag.php fájlban, majd használhatjuk minden további deklaráció nélkül a sablonban.

A mod_hellovilag.xml fájl elkészítése

A mod_hellovilag.xml határozza meg, hogy a telepítőnek mely fájlokat kell átmásolnia, és hogy a modulkezelőnek milyen paramétereket kell konfigurálnia. A modul további információi szintén ebben a fájlban találhatók.

A mod_hellovilag.xml kódja a következő:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <install type="module" version="1.5.0">
  3.     <name>Helló, világ!</name>
  4.     <author>John Doe</author>
  5.     <version>1.5.0</version>
  6.     <description>Egy egyszerű Helló, világ! modul</description>
  7.     <files>
  8.         <filename>mod_hellovilag.xml</filename>
  9.         <filename module="mod_hellovilag">mod_hellovilag.php</filename>
  10.         <filename>index.html</filename>
  11.         <filename>helper.php</filename>
  12.         <filename>tmpl/default.php</filename>
  13.         <filename>tmpl/index.html</filename>
  14.     </files>
  15.     <params>
  16.     </params>
  17. </install>

Észrevehetjük, hogy két további fájl is szerepel a listában amelyekről eddig még nem beszéltünk: index.html és tmpl/index.html. Azért hoztuk ezeket létre, hogy a könyvtárat ne lehessen böngészni. Ha valaki megkísérli megtekinteni a könyvtár tartalmát, akkor az index.html kerül megjelenítésre. Ezeket a fájlokat hagyhatjuk üresen, vagy használhatjuk a következő sort, amely egy üres oldalt jelenít meg:

  1. <html><body bgcolor="#FFFFFF"></body></html>

Mivel a modulunk nem használ paramétereket, ezért ez a szekció üres.

Összefoglalás

A Joomla! modulkészítés elég egyszerű folyamat. A fenti technikákat használva végtelen lehetőség nyílik modulok készítésére.

A cikk forrása: Joomla! Official Documentation