Moduli su jednostavne i fleksibilne ekstenzije koje se koriste za prikazivanje različitih podataka na strani i vidljivi su iz različitih komponenti. Primeri modula u standardnoj konfiguraciji Joomle su: menus - Latest News - Login form itd.
Uputstvo objašnjava kako da kreirate jednostavni Hello World modul. Takođe, objašnjava i osnovnu strukturu fajlova modula (osnovna struktura je baza i za neke zahtevnije module).
Ovo je primer za kreiranje jednostavog modula koji će u sebi imati običan tekst.
Prvo: ime modula. Neka to bude recimo „Hello world“ odn. mod_helloworld, nazivi modula imaju prefiks “mod”.
Postoje četiri osnovna fajla koja se koriste za standardni modul:
mod_helloworld.php izvršava tri posla:
“helper” klasa je definisana u našem helper.php fajlu. Ovaj fajl se uključuje sa require_once naredbom:
require_once( dirname(__FILE__).DS.'helper.php' );
require_once se koristi zato što su naše pomoćne funkcije definisane u okviru klase i hoćemo da ih definišemo samo jednom.
Naše pomoćne klase još nisu definisane, ali kad budu sadržavaće jedan metod: getHello(). Za naš osnovni primer i nije neophodno potrebno da se uradi - “Hello, World” poruka mogla je jednostavno da bude uključena u templejt ili u ovaj fajl. Ove pomoćne klase koristimo da bismo demonstrirali osnovnu tehniku izrade modula. Naš modul još uvek nema nikakve parametre, ali ćemo ih definisati kroz pomoćni metod u svakom slučaju da bi ih mogli uključiti kasnije ukoliko budemo želeli da poboljšamo funkcionalnost ovog modula.
Ovaj metod se poziva na sledeći način:
$hello = modHelloWorldHelper::getHello( $params );
Kompletam mod_helloworld.php fajl
<?php /** * Hello World! Module Entry Point * * @package Joomla.Tutorials * @subpackage Modules * @link http://dev.joomla.org/component/option,com_jd-wiki/Itemid,31/id,tutorials:modules/ * @license GNU/GPL, see LICENSE.php * mod_helloworld is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); // Include the syndicate functions only once require_once( dirname(__FILE__).DS.'helper.php' ); $hello = modHelloWorldHelper::getHello( $params ); require( JModuleHelper::getLayoutPath( 'mod_helloworld' ) ); ?>
Jedina linija koju nismo objasnili je prva linija. Ovo je provera odn. osiguranje da se ovaj fajl učitava iz Joomla! aplikacije. Ovo je potrebno iz sigurnosnih razloga.
helper.php fajl sadrži klase koje se koriste za prikupljanje podataka koji će biti prikazani modulom. Kao što smo već rekli sadržače samo jedan metod i to getHello(). Ovaj metod će vratiti poruku ‘Hello, World’.
<?php
/**
* Helper class for Hello World! module
*
* @package Joomla.Tutorials
* @subpackage Modules
* @link http://dev.joomla.org/component/option,com_jd-wiki/Itemid,31/id,tutorials:modules/
* @license GNU/GPL, see LICENSE.php
* mod_helloworld is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
*/
class modHelloWorldHelper
{
/**
* Retrieves the hello message
*
* @param array $params An object containing the module parameters
* @access public
*/
function getHello( $params )
{
return 'Hello, World!';
}
}
?>
Ne postoji pravilo kojim se određuje da naziv klase mora biti takav kao što smo ga mi naveli, ali je preporučljivo zbog kasnijeg lakšeg snalaženja. Napredniji moduli mogu u sebi sadržavati npr. zahteve za bazom, ili nekim drugim fajlom npr. slikom, itd.
default.php fajl je templejt koji prikazuje modul na ekranu.
default.php:
<?php // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); ?> <?php echo $hello; ?>
Najvažnija stvar je da templejt fajl ima isti cilj kao mod_helloworld.php fajl. To znači da varijabla $hello može biti definisana u mod_helloworld.php i zatim korišćena odnosno pozvana kao $hello bez nekih ekstra deklarisanja ili poziva funkcija.
mod_helloworld.xml se koristi za definisanje fajlova koje instaler treba da iskopira i koje Module Manager koristi za određivanje parametara koji se koriste za konfigurisanje modula.
<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
<name>Hello, World!</name>
<author>John Doe</author>
<version>1.5.0</version>
<description>A simple Hello, World! module.</description>
<files>
<filename module="mod_helloworld">mod_helloworld.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<filename>tmpl/default.php</filename>
<filename>tmpl/index.html</filename>
</files>
<params>
</params>
</install>
Primetićete da postoje još dva dodatna fajla koja nismo spominjali: index.html i tmpl/index.html. Ovi fajlovi su uključeni zato da se ovi direktorijumi ne bi mogli izlistavati. Ako neko pokuša da izlista ove direktorijume (tj. da vidi njihov sadržaj) prikazaće se index.html. Ovi fajlovi mogu da budu prazni ili mogu da sadrže jednu liniju:
<html><body bgcolor="#FFFFFF"></body></html>
što će prikazati praznu stranu.
params - sve dok naš modul ne sadrži nikakve parametre ta sekcija će ostati prazna.
Razvoj modula za Joomlu je prilično jednostavan, jasan proces. Upotrebom tehnika koje smo naveli u ovom uputstvu, uz malo truda nije veliki problem razvijati neograničene varijacije modula.
Prevedeno http://dev.joomla.org/component/option,com_jd-wiki/Itemid,/id,modules:hello_world/