J3.x

Membuat sebuah modul sederhana/Mengembangkan sebuah Modul Dasar

From Joomla! Documentation

< J3.x:Creating a simple module
This page is a translated version of the page J3.x:Creating a simple module/Developing a Basic Module and the translation is 90% complete.

Outdated translations are marked like this.
Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎Bahasa Indonesia • ‎Nederlands • ‎português do Brasil • ‎русский
Joomla! 
3.x
Tutorial
Membuat sebuah modul sederhana

Ini adalah sebuah multi seri artikel tentang bagaimana caranya membuat sebuah modul untuk Joomla! Versi Joomla 3.x. Anda dapat menavigasikan artikel-artikel di dalam seri ini dengan menggunakan menu dropdown navigasi.

Mulai dengan Pendahuluan, dan navigasikan artikel di dalam seri ini dengan menggunakan tombol navigasi yang ada pada bagian bawah atau kotak di sebelah kanan (Artikel dalam seri ini).



Modul adalah sebuah ekstensi yang ringan dan dapat dikembangkan. Mereka dipakai di sejumlah kecil halaman yang secara umum lebih sederhana dan dapat dilihat di lintas komponen yang berbeda.

Anda dapat melihat beragam contoh modul di pemasangan standar Joomla: - menu - Berita Terkini - formulir Masuk - dan masih banyak lagi.

Tutorial ini akan menjelaskan bagaimana caranya membuat sebuah modul yang sederhana seperti modul Hello World. Melalui tutorial ini Anda akan mempelajari dasar struktur berkas sebuah modul. Struktur dasarnya dapat dikembangkan untuk membuat modul-modul yang lebih rumit lainnya.

Struktur Berkas

Terdapat empat berkas dasar yang dipakai di pola standar pengembangan modul:

  • mod_helloworld.php - Berkas ini adalah entri poin utama untuk modul. Berkas tersebut akan melakukan rutinitas pemulaian yang penting, memanggil rutinitas helper untuk mengumpulkan data-data yang dibutuhkan, dan termasuk juga templat yang akan menampilkan output modul tersebut.
  • mod_helloworld.xml - Berkas ini mengandung informasi-informasi tentang modul tersebut. Berkas itu mendefinisikan berkas-berkas yang dibutuhkan oleh pemasang Joomla! dan menentukan parameter konfigurasi untuk modul itu.
  • helper.php - Berkas ini mengandung kelas helper yang dipakai untuk melakukan pekerjaan sebenarnya dalam hal pengumpulan informasi yang akan ditampilkan di modul (biasanya berasal dari basisdata atau beberapa sumber yang lain).
  • tmpl/default.php - Ini adalah templat modul. Berkas ini akan mengambil data yang telah dikumpulkan oleh mod_helloworld.php kemudian membuat HTML untuk tampil di halaman.

Membuat mod_helloworld.php

Berkas mod_helloworld.php akan melakukan tiga tugas-tugas berikut:

  • menyertakan berkas helper.php yang mengandung kelas yang akan dipakai guna mengumpulkan data yang penting
  • meminta metoda helper yang sesuai untuk mendapatkan datanya
  • menyertakan templat untuk menampilkan output-nya.

Kelas helper didefinisikan di dalam berkas helper.php kita. Berkas ini termasuk sebuah pernyataan require_once:

require_once dirname(__FILE__) . '/helper.php';

require_once dipakai karena fungsi helper kita didefinisikan dengan sebuah kelas, dan kita hanya menginginkan kelas tersebut didefinisikan sekali saja.

Kelas helper kita belum didefinisikan, tapi kalau sudah, maka akan mengandung satu metoda: getHello(). Untuk contoh dasar kita, tidak terlalu penting untuk melakukan ini - pesan "Hello, World" yang dihasilkan metoda ini dapat disertakan di dalam templat saja. Kita menggunakan sebuah kelas helper disini untuk mendemonstrasikan teknik dasar.

Modul kita saat ini tidak menggunakan parameter apapun, tapi kita meneruskannya ke metoda helper saja sehingga dapat digunakan kembali apabila kita putuskan untuk mengembangkan fungsi-fungsi modul kita.

Metoda kelas helper meminta dalam cara-cara berikut ini:

$hello = modHelloWorldHelper::getHello($params);

Berkas mod_helloworld.php lengkap

Berkas mod_helloworld.php selengkapnya adalah sebagai berikut:

<?php
/**
 * Hello World! Module Entry Point
 * 
 * @package    Joomla.Tutorials
 * @subpackage Modules
 * @license    GNU/GPL, see LICENSE.php
 * @link       http://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module
 * 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;
// Include the syndicate functions only once
require_once dirname(__FILE__) . '/helper.php';

$hello = modHelloWorldHelper::getHello($params);
require JModuleHelper::getLayoutPath('mod_helloworld');

Satu baris yang belum kita jelaskan sejauh ini adalah baris pertama. Baris ini memeriksa dan memastikan apakah berkas ini disertakan di dalam aplikasi Joomla. Ini penting untuk mencegah injeksi variabel dan kemungkinan faktor-faktor keamanan lainnya.

Membuat helper.php

Berkas helper.php mengandung kelas helper yang dipakai untuk mendapatkan data untuk ditampilkan di output modul. Sepert disebutkan sebelumnya, kelas helper kita akan memiliki satu metoda: getHello(). Metoda ini akan menghasilkan pesan 'Hello, World'.

Berikut adalah kode untuk berkas helper.php:

<?php
/**
 * Helper class for Hello World! module
 * 
 * @package    Joomla.Tutorials
 * @subpackage Modules
 * @link http://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module
 * @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
     */    
    public static function getHello($params)
    {
        return 'Hello, World!';
    }
}

Tidak ada aturan yang mengharuskan kita memberi nama kelas helper itu seperti yang ada, tapi adalah sangat membantu untuk melakukan ini agar mudah dikenali dan dicari. Catat bahwa adalah wajib untuk memiliki format seperti ini apabila Anda berencana untuk menggunakan plugin com_ajax.

Modul-modul yang lebih canggih lainnya mungkin menyertakan permintaan basisdata atau fungsi yang lain di dalam metoda kelas helper.

Membuat tmpl/default.php

Berkas default.php adalah templat yang akan menampilkan output modul.

Kode untuk berkas default.php adalah sebagai berikut:

<?php 
// No direct access
defined('_JEXEC') or die; ?>
<?php echo $hello; ?>

Poin penting untuk dicatat adalah berkas templat tersebut memiliki kesamaan cakupan seperti yang dimiliki berkas mod_helloworld.php. Ini artinya bahwa variabel $hello dapat didefinisikan di dalam berkas mod_helloworld.php kemudian dipakai di dalam berkas templat tanpa deklarasi tambahan maupun pemanggilan fungsi.

Membuat mod_helloworld.xml

mod_helloworld.xml dipakai untuk menentukan berkas-berkas mana saja yang dibutuhkan pemasang untuk disalin dan digunakan oleh Pengelolaan Modul guna menentukan parameter-parameter mana saja yang dipakai di dalam modul. Informasi lainnya tentang modul tersebut juga ditentukan di berkas ini.

Kode untuk mod_helloworld.xml adalah sebagai berikut:

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="3.1.0" client="site" method="upgrade">
    <name>Hello, World!</name>
    <author>John Doe</author>
    <version>1.0.0</version>
    <description>A simple Hello, World! module.</description>
    <files>
        <filename>mod_helloworld.xml</filename>
        <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>
    <config>
    </config>
</extension>

Berkas manifes menjelaskan detail teknis elemen-elemen yang digunakan di dalam berkas XML.

Anda akan memperhatikan bahwa ada dua berkas tambahan yang belum kita sebutkan: index.html dan tmpl/index.html. Berkas-berkas ini disertakan agar direktori ini tidak dapat diramban. Apabila seorang pengguna mencoba mengarahkan peramban mereka ke folder-folder ini, maka index.html akan ditampilkan. Berkas-berkas ini bisa dibiarkan kosong atau berisi baris sederhana seperti berikut:

<html><body bgcolor="#FFFFFF"></body></html>

yang akan menampilkan sebuah halaman kosong.

Karena modul kita tidak menggunakan kolom form apapun, maka bagian konfigurasinya kosong.

Kesimpulan

Pengembangan modul Joomla! cukup sederhana, proses langsung ke sasaran. Menggunakan teknik-teknis seperti dijelaskan di dalam tutorial ini, sebuah varietas modul tanpa akhir dapat dikembangkan dengan sedikit usaha.