component joomla

7
Mengembangkan Component Joomla Oleh : Garry B. # Prologue Joomla terkenal sebagai salah satu platform Content Management System (CMS) untuk mempublikasi ke World Wide Web ataupun dalam intranet. Tetapi selain terkenal sebagai CMS, sebenarnya dia juga terkenal sebagai framework Model-view-controller (MVC) Web Application Development. Diktat ini akan meringkas mengenai pembuatan Component untuk Joomla dengan menggunakan Joomla-Framework. Versi yang dipakai sekarang adalah Joomla! 1.5. Tetapi seharusnya juga masih tetap sama strukturnya di versi 1.6 (tapi entahlah, saya belum mencobanya di versi itu) # Sekilas Mengenai MVC MVC sudah lazim bagi para pengembang web, entah orang yang mengerti maupun yang kagak ngerti, semua selalu mengelu-elukan struktur MVC ini. Saya sebenarnya tidak berani mengatakan pemahaman MVC saya sudah sempurna. Oleh karenanya saya akan meringkas/menerjemah dari website doc.joomla.org. MVC merupakan pola perancangan software yang digunakan untuk mengorganisir code sedemikian rupa sehingga business logic dan data presentation dipisahkan. Alasan pendekatan ini dikarenakan jika business logic dikelompokkan menjadi satu bagian, maka tampilan(interface) dan interaksi user yang bergantung pada data dapat direvisi ataupun diubah tanpa harus memprogram ulang business logic-nya. MVC aslinya dikembangkan untuk memetakan fungsi tradisional input, output dan proses pada arsitektur GUI logikal. Berikut ini merupakan tiga utama dari Joomla MVC(oleh karenanya mungkin akan berbeda dengan MVC framework lain). Model Model merupakan bagian dari komponen yang berhubungan dengan data. Model biasanya berupa class yang berfungsi mengambil, menambah, mengubah dan menghapus informasi dalam database. Model lah yang biasanya berhubungan dengan data. Makanya kalau misalnya sistem kita berganti dari sistem penyimpanan berbasis

Upload: garry

Post on 12-Jun-2015

1.480 views

Category:

Documents


3 download

DESCRIPTION

Diktat ini bukanlah bagaimana cara menggunakan CMS Joomla, melainkan bagaimana kita membuat Joomla, dalam hal ini Component-nya. Berisi ringkasan-ringkasan cara-cara membangun sebuah Component Joomla dengan menggunakan konsep MVC, diharapkan memberikan gambaran bagaimana sebenarnya mengembangkan CMS Joomla ini.

TRANSCRIPT

Page 1: Component Joomla

Mengembangkan Component JoomlaOleh : Garry B.

# PrologueJoomla terkenal sebagai salah satu platform Content Management System (CMS) untuk mempublikasi ke World Wide Web ataupun dalam intranet. Tetapi selain terkenal sebagai CMS, sebenarnya dia juga terkenal sebagai framework Model-view-controller (MVC) Web Application Development. Diktat ini akan meringkas mengenai pembuatan Component untuk Joomla dengan menggunakan Joomla-Framework. Versi yang dipakai sekarang adalah Joomla! 1.5. Tetapi seharusnya juga masih tetap sama strukturnya di versi 1.6 (tapi entahlah, saya belum mencobanya di versi itu)

# Sekilas Mengenai MVCMVC sudah lazim bagi para pengembang web, entah orang yang mengerti maupun yang kagak ngerti, semua selalu mengelu-elukan struktur MVC ini. Saya sebenarnya tidak berani mengatakan pemahaman MVC saya sudah sempurna. Oleh karenanya saya akan meringkas/menerjemah dari website doc.joomla.org.

MVC merupakan pola perancangan software yang digunakan untuk mengorganisir code sedemikian rupa sehingga business logic dan data presentation dipisahkan.

Alasan pendekatan ini dikarenakan jika business logic dikelompokkan menjadi satu bagian, maka tampilan(interface) dan interaksi user yang bergantung pada data dapat direvisi ataupun diubah tanpa harus memprogram ulang business logic-nya.

MVC aslinya dikembangkan untuk memetakan fungsi tradisional input, output dan proses pada arsitektur GUI logikal.

Berikut ini merupakan tiga utama dari Joomla MVC(oleh karenanya mungkin akan berbeda dengan MVC framework lain).

Model Model merupakan bagian dari komponen yang berhubungan dengan data. Model biasanya berupa class yang berfungsi mengambil, menambah, mengubah dan

menghapus informasi dalam database. Model lah yang biasanya berhubungan dengan data. Makanya kalau misalnya sistem kita

berganti dari sistem penyimpanan berbasis file ke penyimpanan berbasis database, kita hanya perlu mengganti coding model, tanpa perlu ubah controller ataupun view.

View View merupakan bagian dari komponen yang berfungsi me-render data dari model sehingga

sesuai untuk interaksi. Untuk aplikasi berbasis web, umumnya view akan berupa halaman HTML. View yang akan menarik data dari model (sebetulnya ditarik di Controller kemudian dilempar

ke View) dan memberikan data ke template (template yang akan ditampilkan ke user) View tidak pernah mengubah data, hanya menampilkan data yang diambil dari model.

Page 2: Component Joomla

Controller Controller bertanggung jawab atas kegiatan user. Khusus di aplikasi web maka berupa page

request (misalnya $_POST ataupun $_GET). Controller menentukan request apa yang diminta user dan meresponnya dengan memicu

model untuk mengubah data dan mengirim model ke view supaya view mampu menampilkan data.

Dalam Joomla untuk mengimplementasikan MVC kita menggunakan 3 kelas : JModel, JView dan JController

Gambar samping merupakan bentuk sederhana component dal am Joomla

Selain terdapat Model, View dan Controller juga terdapat yang dikenal dengan Entry Point (bulatan kecil) serta Template.

# Mulai Membuat Component

Kita akan membuat sebuah component bernama datadiri. Component ini untuk menampilkan biodata orang yang tersimpan dalam database. Berikut ini merupakan file yang harus dibuat:

com_datadiri/datadiri.php – Inilah entry point untuk menuju component

com_datadiri/controller.php – ini merupakan file dasar controller.

com_datadiri/views/biodatas/view.html.php – File ini menarik data yang dianggap penting kemudian melemparnya ke template.

com_datadiri/views/biodatas/tmpl/default.php – Inilah file template yang merupakan output.

datadiri.xml – XML ini yang menentukan bagaimana Joomla menginstall component kita.

Yang harus diketahui:

Nama entry point harus sama dengan nama component.

Underscore memiliki makna khusus dalam Joomla, sehingga hindari penggunaan underscore dalam nama.

Page 3: Component Joomla

# Membuat Entry Point Joomla selalu akses melalui entry point : index.php untuk site biasa dan administrator/site.php

untuk halaman administrator. Aplikasi akan me-load component yang diperlukan sesuai dengan nilai dari 'option' dalam URL

ataupun dalam data POST. Untuk URL akan berupa seperti : index.php?option=com_datadiri. Contoh isi file com_datadiri/datadiri.php :

Baris awal , “defined ('_JEXEC') or ...” merupakan statement untuk pengecekan keamanan. JPATH_COMPONENT merupakan path absolut ke component sekarang, dalam kasus ini

components/com_datadiri. DS merupakan directory separator yang merupakan '/' kalau tidak '\'. Ini otomatis sesuai server

OS. JRequest::getVar() untuk mengambil data baik dari $_POST[] maupun dari $_GET[]. Misalnya

URL nya index.php?task=insert, maka kita dapat menulis JRequest::getVar('task') untuk mendapatkan nilai task.

Base controller terletak pada com_datadiri/controller.php. Jika misalnya suatu saat perlu controller tambahan, maka buat controller tambahan seperti 'DatadiriControllerxxx' di com_datadiri/controllers/xxx.php.

Standar penamaan controller tambahan : {Nama Component}{Controller}{Nama Controller}

# Pembuatan Model Biasanya kita mulai desain dari Model. Berikut contoh coding (com_datadiri/models/biodatas.php)

<?phpdefined ('_JEXEC') or die('Restricted accessed');

require_once (JPATH_COMPONENT.DS.'controller.php');$controller = new DatadiriController(); //buat objek dari DatadiriController$controller->execute(JRequest::getVar('task')); //jalankan controller. Kalau $task

nilainya NULL maka otomatis jalankan yang di $__default?>

<?phpdefined ('_JEXEC') or die ('Restricted accessed');jimport('joomla.application.component.model');

class DatadiriModelBiodatas extends JModel{function getBiodata(){

$db = & JFactory::getDBO();$query = "SELECT nama, nilai FROM jos_datadiri";$db->setQuery($query);$hasil = $db->loadRowList();return $hasil;

}}?>

Page 4: Component Joomla

jimport merupakan fungsi yang tujuannya sama dengan include php tetapi dengan beberapa kelebihan. Misalnya kita perlu include file joomla/application/component/model.php, maka kita dapat menulisnya dengan jimport(joomla.application.component.model) dimana tanda '/' diganti dengan tanda titik (.) dan pada bagian belakan .php tidak perlu ditulis.

Sistem penamaan Model : {Nama Component}{Model}{Nama Model} Jika kita ingin mengakses database maka kita harus menulis $db = & JFactory::getDBO(); Kita menggunakan tanda & supaya hanya me-reference. Karena jika kita tidak

menggunakannya maka dia akan memindahkan seluruh data ke dalam variabel, dan itu sangat memakan waktu.

Untuk melakukan query Select kita menggunakan $db->setQuery() Untuk melakukan query Insert, Update ataupun Delete maka kita harus menggunakan $db-

>Execute() Untuk mengambil hasil query terdapat berbagai cara yakni $db->loadResult(), $db-

>loadRowList() dan lain-lain. $db->loadRowList() untuk mengambil semua baris hasil query.

# Pembuatan View Berikut contoh coding (com_datadiri/views/biodatas/view.html.php) :

Fungsi default dari View adalah display() Di bagian $model = & $this->getModel(); mungkin agak membingungkan mengapa kita hanya

tulis getModel tanpa menyebutkan model apa yang ingin kita ambil(normalnya model bisa lebih dari satu). Itu karena nantinya di class Controller nanti kita akan setModel() untuk kelas View, jadi disini kita tinggal getModel(). Perhatikan class Controller untuk lebih jelasnya.

$this->assignRef() adalah fungsi untuk melemparkan nilai variabel ke template. Misalnya kita menulis $this->assignRef('biodatas',$biodatas) maka untuk mengaksesnya di template nantinya kita cukup tulis $this->biodatas

<?phpdefined ('_JEXEC') or die ('Restricted Accessed');jimport ('joomla.application.component.view');

class DatadiriViewBiodatas extends JView{//cari di alamat template script yg tersimpan $tpl. //kalo $tpl kosong otomatis cari alamat defaultfunction display($tpl=null){

$model = & $this->getModel();$biodatas = $model->getBiodata();

$this->assignRef('biodatas', $biodatas);

//panggil fungsi display()-nya JViewparent :: display($tpl);

}}

?>

Page 5: Component Joomla

# Membuat Template Template/layout Joomla merupakan file PHP biasa yang digunakan untuk menampilkan data

dari View. Variabel yang diset JView::assignRef dapat diakses dengan menggunakan $this-

>{namaproperty}. Berikut contoh coding :

# Membuat Controller Berikut contoh coding (com_datadiri/controller.php) :

<?phpdefined ('_JEXEC') or die ('Restricted Accessed');

?>

<strong> List of Biodatas </strong><ol><?php

foreach($this->biodatas as $row){echo "<li>".'<strong>'.$row[0].'</strong>'.'=>'.$row[1]."</li>";

}?></ol>

<?phpdefined ('_JEXEC') or die('restricted accessed');jimport('joomla.application.component.controller');

class DatadiriController extends JController{function display(){

//mendapatkan view$view = &$this->getView('biodatas', 'html');//mendapatkan model$model = &$this->getModel('biodatas');

//cek errorif(!JError::isError($model)){

//setModel untuk $view supaya ntar di view.html.php bisa akses

//model. kan didalam class datadiriviewbiodatas ada getModel$view->setModel($model, true);

}//set the template and display$view->setLayout('default');$view->display();

}}

?>

Page 6: Component Joomla

Constructor JController pasti selalu akan mendaftarkan fungsi display() sebagai default kecuali kita menspesifikasikan fungsi lain dengan menggunakan method registerDefaultTask().

Controller yang melakukan load class View dan class Model. Untuk meload View, menggunakan $this->getView({nama_view},'html'} Untuk meload Model, menggunakan $this->getModel({nama_module}} $view->setLayout() merupakan fungsi menentukan Layout, yakni bagaimana View

menampilkan data-nya. Untuk menampilkan View yang sudah kita buat, kita harus menulis $view->display()

# PrologueYang dipaparkan dalam diktat masih hanya konsep dasar MVC dengan menggunakan Joomla dan diterapkan pada Site(halaman front-end, yang dilihat pengunjung). Kalau misalnya ingin menggunakannya pada Administrator (halaman back-end, bagian admin) sebetulnya sama saja, dengan catatan folder component-nya diletakkan dalam folder administrator