Senin, 11 Juli 2011

Membuat Component Joomla

Mari kita membuat komponent di joomla. Misal kita akan membuat komponen dengan nama market. Seperti kata pepatah, tanpa tujuan kita tidak akan tahu arah. So, tujuan kita adalah membuat market rumah. Seorang user bisa menawarkan rumahnya di website kita. Hmm.. boleh boleh... lanjut!

Di sini Saya akan menerangkan sedetil mungkin, step by step, so om om dapat memahami... enggak cuma copy paste trus jadi&beres. bagi om om yang udah jago, saya harap masukannya. trims....

Kita buat back end nya dulu ni.... biar si admin gampang memanage marketnya, cihui.....

Ikuti langkah-langkah pembuatan komponen di Back End berikut:
1. Buat folder com_market di bawah direktori joomla/administrator/components.
2. Buat file dengan nama admin.market.php, letakkan di dalam folder com_market.

isi file admin.market.php:


Sekarang setelah masuk ke halaman admin, coba buka alamat: //localhost/joomla/administrator?option=com_market , maka kamu akan lihat seperti Gambar 1.


Gambar 1. Komponen Back End 1
Gambar 1 di atas adalah tampilah komponen back end yang telah kamu buat. Perhatikan bahwa walaupun kamu belum mendaftarkan komponen kamu di database jos_components, kamu sudah bisa membuat, dan membuka komponen tersebut. Perhatikan juga Gambar 2.

Gambar 2. Menu Components

Gambar 2 adalah tampilan menu komponen di back end. Apa anehnya? menu yang kita buat tadi walaupun bisa diakses, tapi tidak ada dalam daftar menu komponen. Itulah yang membedakan komponen kita sudah terdaftar di database atau belum. Jika belum di daftarkan di database jos_components, jangan harap menu kamu tampil di menu komponen.

Bagaimana cara mendaftarkan komponen supaya bisa diakses dari menu komponen di back end?

3. Daftarkan komponen yang telah dibuat ke database jos_components. Caranya?
Buka //localhost/phpmyadmin -> pilih database joomla -> pilih tabel jos_components -> insert
Isikan kolom datanya sebagai berikut:
name = market
admin_menu_link = option=com_market
admin_menu_alt = market
Klik Go. Sekarang kamu bisa cek komponen market sudah terdaftar di database jos_components (pilih database jos_components -> browse, lihatlah komponen-komponen yang sudah terdaftar).
Kamu juga bisa cek dari menu component di back end, seperti Gambar 3.
Gambar 3. Menu Komponen di Back End

Gambar 3 di atas menampilkan menu market yang sudah kita daftarkan di database jos_components. Silakan klik menu market tersebut, dan lihatlah bahwa dia akan menuju alamat seperti yang telah kita set di database tadi, yaitu option=com_market

OK pakde, Saya udah ngerti caranya buat yang sederhana gitu... sekarang lanjut dunk, minimal yang gak cuma nampilin tulisan echo doank.

Siap om! kita lanjut dengan membuat database rumahnya dulu.. ibarat ingin menanam, kita harus siapin tanahnya dulu biar siap ditanami,hehe...
4. Buat tabel jos_rumah. Buka phpmyadmin -> pilih database joomla kamu -> create new table
Mari kita buat tabel rumah, kita beri nama tabelnya jos_rumah dengan 7 field, yaitu id, lt, lb, harga, kota, keterangan, publiished.
Lebih jelasnya lihat struktur tabenya seperti Gambar 4.
Gambar 4. Struktur tabel jos_rumah
Sekarang kita input data, pilih insert, isikan datanya sebagai berikut: lt = 100, lb = 100, harga =100 juta, kota = rembang, keterangan = hubungi wanda 021 3090602.
5. Buat toolbar untuk back end
Untuk memanage tabel rumah, kita butuh tool untuk menampilkan tabel rumah dan juga menambah, mengedit, menghapus data dalam tabel tersebut, tanpa melalui phpmyadmin. Sekarang kita buat toolbarnya dulu. Silakan buat file dengan nama toolbar.market.php dan toolbar.market.html.php di dalam folder com_market.

File toolbar.market.php merupakan file default yang akan diakses untuk membuat toolbar di back end komponen market, Sedangkan file toolbar.market.html.php merupakan file bantuan untuk membuat tampilan toolbar.

Tulis script berikut ke dalam toolbar.market.php :

Berikut penjelasannya:

defined('_JEXEC')or die('Restricted access'); -> untuk membatasi user yang secara langsung mengakses file tersebut.

require_once(JApplicationHelper::getPath('toolbar_html')); -> memanggil toolbar.market.html.php.

switch($task) -> untuk memilih menu toolbar apa aja yang akan ditampilkan sesuai dengan perintah yang diberikan. Variabel task merupakan variabel yang secara umum digunakan di dalam joomla untuk melakukan suatu tugas tertentu. Contoh:

case 'edit':
TOOLBAR_market::_NEW();
break;

Dengan tiga baris script di atas, jika file toolbar.market.php saat diakses, variabel task nya berisi edit, maka akan ditampilkan menu2 toolbar yang digolongkan dalam class TOOLBAR_market dengan nama fungsi _NEW(). Penggolongan menu ini akan dilakukan oleh file toolbar.market.html.php.
Sekarang isikan file toolbar.market.html.php dengan script sebagai barikut:

Dari script di atas, kita dapat lihat bahwa di dalam toolbar.market.html.php mempunyai class TOOLBAR_market yang di dalamnya mempunyai function _NEW() dan _DEFAULT().

Eits.. apa tuh script2
JToolBarHelper::save();
JToolBarHelper::apply();
JToolBarHelper::cancel();

? Itu script2 untuk tampilan toolbar. Joomla sudah mempunyai class dan objek2 untuk memanage toolbar. Dengan 3 script tersebut, berarti jika fungsi _NEW() dipanggil, maka akan ditampilkan 3 menu dalam toolbarnya, yaitu menu untuk menyimpan [JToolBarHelper::save()], menggunakan [JToolBarHelper::apply()], dan membatalkan [JToolBarHelper::cancel()].

Gimana om.. sampai sini masih ngerti kan....? OK om... kita lanjut lagi yak!

Coba simpan 2 file tersebut dan akses komponen market dari menu komponen di back end (seperti Gambar 3), maka kamu akan lihat tampila toolbar di komponen market.
Gambar 5. Menu Toolbar
Gambar 5 di atas adalah toolbar yang barusan kita buat. Sekarang kita beralih ke isi komponen.
6. Buat isi komponen admin
Update admin.market.php, ketikkan script di bawah ini:
published);
HTML_market::addRumah($lists);
}

function showRumah(){
$db =& JFactory::getDBO();
$query ="select * from #__rumah";
$db->setQuery($query);
$rows =$db->loadObjectList();
if ($db->getErrorNum()){
echo $db->stderr();
return false;
}
HTML_market::showRumah($rows);
}

function saveRumah(){
global $mainframe;
$row=& JTable::getInstance('rumah','Table');
if(!$row->bind(JRequest::get('post')))
{
JError::raiseError(500,$row->getError());
}
$row->lt=JRequest::getVar('lt','','post','integer',JREQUEST_ALLOWRAW);
$row->lb=JRequest::getVar('lb','','post','integer',JREQUEST_ALLOWRAW);
$row->harga=JRequest::getVar('harga','','post','string',JREQUEST_ALLOWRAW);
$row->kota=JRequest::getVar('kota','','post','string',JREQUEST_ALLOWRAW);
$row->keterangan=JRequest::getVar('keterangan','','post','string',JREQUEST_ALLOWRAW);
if(!$row->store()){
JError::raiseError(500,$row->getError());
}
$mainframe->redirect('index.php?option=com_market','Rumah Saved');
}

?>

OK, sekarang lanjut penjelasan script di atas
require_once(JApplicationHelper::getPath('admin_html')); -> untuk memanggil admin.market.html.php. Kenapa kita butuh memanggil admin.market.html.php? karena kita pisahkan antara script untuk tampilan dan script untuk pengolahan/pemrosesan. admin.market.html.php untuk mengatur tampilan, dan admin.market.php untuk pemrosesan. Secara default, Joomla akan mengakses admin.market.php apabila komponen market dipanggil.
JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_market'.DS.'tables'); ->Script untuk menyertakan field-field tabel. Nanti kita akan buat file untuk menginisialisasi tabel nya.
Daripada kelupaan, silakan buat file rumah.php dengan isi sebagai berikut:

File rumah.php di atas, merupakan file untuk inisialisasi data tabel yang akan digunakan.

$task = JRequest::getCmd('task'); -> script untuk mendapatkan nilai variabel task. Variabel task ini digunakan untuk menentukan hal apa yang akan
diproses (menambahkan,menampilkan, dll).
function addRumah(){
$lists['published']=JHTML::_('select.booleanlist','published','class="inputBox"',$row->published);
HTML_market::addRumah($lists);
}

Fungsi addRumah digunakan untuk menambahkan data rumah. Fungsi ini memanggil fungsi addRumah($lists) yang ada di admin.market.html.php.
function showRumah() -> fungsi untuk menampilkan data rumah.
function saveRumah() -> fungsi untuk menyimpan data rumah.
Kita lanjutkan membuat admin.market.html.php, silakan ketikkan script berikut:
Selanjutnya bisa dilihat pada link berikut :
Selanjutnya

Tidak ada komentar:

Posting Komentar