Kreiranje Hello World Modula za Joomla! 1.5

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 – Ovo je polazna tačka odnosno osnovni porgram koji izvršava inicijalizaciju, poziva pomoćne rutine za prikupljanje potrebnih podataka i sadrži templejt koji će prikazati na kraju modul.
  • mod_helloworld.xml - opisni fajl sa relevantnim informacijama o modulu. On sadrži ime modula, informacije o autoru, datumu kreiranja, verziji i kao najznačajnije - nazivi svih fajlova koje koristi sam modul.
  • helper.php – Ovaj fajl sadrži klase koje se koriste za aktuelni posao u dobijanju informacija koje će se prikazati u modulu (obično je to iz baze ili nekog drugog izvora).
  • tmpl/default.php - Modul templejt. Ovaj fajl organizuje podatke prikupljene sa mod_helloworld.php i generiše HTML za prikazivanje na strani.

Kreiranje mod_helloworld.php

mod_helloworld.php izvršava tri posla:

  • uključuje helper.php koji sadrži klase za prikupljanje potrebnih podataka
  • Poziva odgovarajući helper class method za uzimanje podataka
  • uključuje templejt za prikazivanje na ekranu.

“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.

Kreiranje helper.php

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.

Kreiranje tmpl/default.php

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.

Kreiranje mod_helloworld.xml

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.

Zaključak

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/

 
kako_napraviti_modul.txt · Last modified: 2008/09/25 11:58 by cicans
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki