Siječanj
27
2010

Parametri modula: php dio

Tutorijali > Za developere Autor: Erik Roznbeker, a-web.hr

Ili napokon nešto konkretno

Opis

Lekcija 3: Ova lekcija o modulima koja je nastavak drugog dijela upoznati će vas kako baratati parametrima modula u php datoteci i još par trikova.

 

Ovaj tutorijal obrađuje umirovljenu Joomlu 1.0

 

Uvod

Nakon što smo uspješno definirali parametre u xml-u sada je red da ih i iskoristimo za nešto konkretno.

Parametar, odnosno njegovu vrijednost dohvatiti ćemo pomoću funkcije "get" objekta "$params". Sintaksa funkcije je jednostavna:

 $params->get( 'parametar_name', 'default value' ); 

Funkcija prima dva parametra:

  • "parametar_name" - naziv, tj. identifikator parametra. U xml je to bio atribut "name"
  • "default value" - podrazumijevana vrijednost, koristi se ako vrijednost parametra nije definirana. Jedna od situacija gdje nam to koristi je kada je modul instaliran ali još nije niti jednom konfiguriran pa vrijednosti parametra još nisu spremljene u bazu. Podrazumijevana vrijednost definirana ovdje trebala bi, iako nije nužno, biti jednaka podrazumjevanoj vrjednosti atributa "default" u xml definiciji parametra.

Dakle ako u xml-u definiramo parametar:

<param name="opcija_1" />

Onda ga u php datoteci modula pozivamo sa:

$params-&gt;get( 'opcija_1', '' ); 



Test

Da provjerimo da li to radi ispisati ćemo vrijednost parametra "opcija_1".

Ovaj parametar već imamo definiran u xml datoteci našeg "zdravo svijete" modula tako da xml ne trebamo dirati.

Pronađite i otvorite php datoteku modula (modules/mod_zdravosvijete.php). Prva stvar koju ćemo napraviti je obrisati statički tekst "Zdravo Svijete" iz koda. Nakon toga datoteka bi trebala izgledati ovako:

<!--p
/**
* @version 1.0 $
* @package Zdravo Svijete
* @copyright (C) 2008 Pero Perić
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
*/
 
/** pobrinimo se da će ova datoteka biti pozvana samo iz Joomle */
defined( '_VALID_MOS' ) or die('Direktni pristup nije dozvoljen.');
 
-->

Sada ćemo ubaciti kod koji će dohvatiti i ispisati vrijednost parametra "opcija_1". Nakon toga naša datoteka izgleda ovako:

<!--p
/**
* @version 1.0 $
* @package Zdravo Svijete
* @copyright (C) 2008 Pero Perić
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
*/
 
/** pobrinimo se da će ova datoteka biti pozvana samo iz Joomle */
defined( '_VALID_MOS' ) or die('Direktni pristup nije dozvoljen.');

//dohvaća vrijednost
$opcija_1 = $param-->get( 'opcija_1', '' ); 

echo $opcija_1;
?&gt;

U retku 13 nalazi kod koji dohvaća vrijednost parametra "opcija_1" i tu vrijednost sprema u varijablu $opcija_1. Kod u retku 15 ispisuje tu vrijednost. Spremimo promjene.

Novi tekstSada nam još samo preostaje da otvorimo konfiguraciju modula u administracijskom sučelju i u tekstualno polje "Text" nešto upišemo. Na primjer: "Pozdrav svima!". Spremite nove postavke i ozvježite stranicu. Sada bi vaš modul trebao izgledati nešto kao na slici "Novi tekst".

Možemo sada za vježbu ispisati sve naše parametre. Ali prije toga par trikova.




Trikovi

01Tipovi podataka

Ako je za ispravan rad modula važno da neki parametar bude određenog tipa onda je dobro vrijednost pretvoriti odmah kod dohvaćanja. Ako nam treba cjelobrojna vrijednost onda možemo upotrijebiti funkciju "intval" koja će se pobrinuti da vrijednost bude isključivo integer:

 $opcija_1 = intval( $params-&gt;get( 'opcija_1', '' ) ); 

U slučaju da očekujemo neki tekst uvijek je dobro odstraniti višak praznog prostora sa funkcijom "trim":

$opcija_1 = trim( $params-&gt;get( 'opcija_1', '' ) ); 

 

02\n = <br />

Ako koristimo textarea element za unos vrijednosti imajmo na umu da Joomla automatski svaki novi red "\n" pretvara u "<br />" html element kod dohvaćanja.

03$content

Ako upotrijebite varijablu "$content" unutar modula ona će se automatski ispisati na kraju bez da koristite bilo koju funkciju za ispis.

 

04Ispis

Dobar je običaj da sve što se treba ispisati spremamo u jednu varijablu pa tek na kraju ispišemo sa jednim "echom". Ili čak i taj zadnji echo možemo preskočiti ako varijablu sa sadržajem modula nazovemo $content.

 

05Parametre u array

Ako koristimo funkcije unutar modula dobro je vrijednosti parametra spremati unutar istog "arraya" tako da ako trebamo proslijediti parametre funkciji to napravimo samo sa jednim imenom arraya a ne za svaki parametar posebno.

 

06CSS Sufiks

CSS Sufiks Modula (parametar "moduleclass_sfx") ne trebamo posebno dohvaćati, on je već prisutan u varijabli $moduleclass_sfx.

 

07Itemid

Ako nam treba "Itemid" stranice na kojoj se modul prikazuje ne trebamo tu vrijednost pokušati dohvatiti sa $_GET['Itemid'], ona je također već prisutna u varijabli $Itemid.



Ispis svega

Sad ćemo obrisati kod za dohvaćanje i ispis "opcije_1" i umjesto toga dodati kod koji će dohvatiti svih naših 9 parametra, css sufix i Itemid u jedan array. Zatim ćemo dodati funkciju koja pripremiti parametre za ispis i na kraju ih ispisati tako da ćemo spremiti output u varijablu $content. Ja sam to zamislio ovako:

<!--p
/**
* @version 1.0 $
* @package Zdravo Svijete
* @copyright (C) 2008 Pero Perić
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
*/
 
/** pobrinimo se da će ova datoteka biti pozvana samo iz Joomle */
defined( '_VALID_MOS' ) or die('Direktni pristup nije dozvoljen.');

$opcije['Text'] = trim( $param-->get( 'opcija_1', '' ) );
$opcije['Padajuća lista'] = trim( $params-&gt;get( 'opcija_2', 'a' ) );
$opcije['Radio button'] = intval( $params-&gt;get( 'opcija_3', 0 ) );
$opcije['Tekst area'] = trim( $params-&gt;get( 'opcija_4', '' ) );
$opcije['Sekcije'] = intval( $params-&gt;get( 'opcija_5', '' ) );
$opcije['Kategorije'] = intval( $params-&gt;get( 'opcija_6', '' ) );
$opcije['Izbornici'] = trim( $params-&gt;get( 'opcija_7', '' ) );
$opcije['Slike'] = trim( $params-&gt;get( 'opcija_8', '' ) );
$opcije['Datoteke'] = trim( $params-&gt;get( 'opcija_9', '' ) );
$opcije['CSS Sufiks Modula'] = $moduleclass_sfx;
$opcije['Itemid'] = $Itemid;


//funkcija za sastavljanje ispisa
function pripremi_parametre($opcije){
    $out="";
    foreach($opcije as $key=&gt;$opcija){
        $out.="<strong>".$key."</strong>: ".$opcija."&lt;br /&gt;";
    }
    return $out;
}

//priprema za ispis
$content = pripremi_parametre($opcije);

?&gt;

Kao što smo rekli, najprije smo dohvatili parametre i spremili ih unutar polja $opcije. Zatim imamo funkciju koja sastavlja ispis od parametra i njihovih ključeva i na kraju samo pripremili ispis spremajući sadržaj u varijablu $content.

Svi parametriOdite u konfiguraciju modula i malo poklikajte / pišite po parametrima. Spremite konfiguraciju i pogledajte vaš modul. Nadam se da izgleda kao na slici "Svi parametri"

Tip: CSS Sufiks Modula pustite prazan jer će vam razbiti dizajn modula.

Sada smo naučili kako definirati, dohvatiti i koristiti parametre i njihove vrijednosti. To je gotovo sve što nam treba da bismo napravili vlastiti modul koji će korisnici moći konfigurirati. Tko je nestrpljiv može odmah krenuti razvijati vlastiti modul, ali daleko od toga da smo došli do kraja. Joomla nam nudi još opcija koje možemo iskoristiti i proširiti mogućnosti svojim modulima.

Samo za utra geekove: proučite datoteku "includes/frontend.php" i "includes/frontend.html.php".

Ovdje možete napraviti download datoteka iz ovog tutorijala php_iz_trece_lekcije.zip



Ime (Nije obavezno)
Pravila:
  • Budi pristojan
  • Ne spamaj
  • Drži se teme
Web stranica (Nije obavezno)
Komentar: (Nikakvi tagovi nisu dozvoljeni, samo dobar, stari tekst)
Morate napisati neki komentar, inače nema smisla...
Koliko je 2 plus 2? (antispam)

Joomla developer blog • Teme o: Joomla CMS, PHP, MySql, softver otvorenog koda (open source) te web radu i radnicima općenito