J3.x

Membuat modul sederhana/Mengembangkan 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 89% complete.

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

Ini adalah seri artikel mengenai cara membuat modul untuk Joomla! Versi Joomla 3.x. Anda dapat menelusuri artikel-artikel yang terdapat di dalam seri ini melalui menu dropdown.

Mulai dari Pendahuluan, lalu telusuri artikel-artikel di dalam seri ini melalui tombol navigasi di bagian bawah atau dari kotak di samping (Artikel dalam seri ini)

There are 2 videos accompanying this tutorial which you can view at Basic Joomla Module Development video 1 and Basic Joomla Module Development video 2.



Modul merupakan ekstensi yang ringan dan fleksibel. Digunakan di suatu tempat di halaman yang biasanya tidak rumit dan dapat ditampilkan lintas komponen.

Anda dapat melihat ada banyak contoh modul di website standar Joomla: - Menu - Berita Terkini - Formulir login - dan banyak lagi.

Tutorial ini akan menjelaskan bagaimana cara membuat modul Hello World sederhana. Melalui tutorial ini, anda akan mempelajari struktur file dasar dari sebuah modul. Struktur dasar ini kemudian dapat dikembangkan guna menghasilkan modul-modul yang lebih rumit.

Struktur File

Terdapat empat file dasar yang dipakai dalam pola standar pengembangan modul:

  • mod_helloworld.php - File ini adalah entri poin untuk modul. File ini akan melakukan rutinitas inisiasi yang dibutuhkan, memanggil helper rutin untuk mengumpulkan data yang dibutuhkan, dan menyertakan templat yang akan menampilkan output dari modul tersebut.
  • mod_helloworld.xml - File ini mengandung informasi-informasi mengenai modul. File ini menentukan file-file apa saja yang perlu dipasang oleh Joomla! dan parameter konfigurasi untuk modul.
  • helper.php - File ini mengandung kelas helper yang dipakai untuk melakukan tugas-tugas sesungguhnya, mendapatkan informasi yang akan ditampilkan di modul (biasanya berasal dari database atau sumber-sumber lainnya).
  • tmpl/default.php - Ini adalah templat dari modul. File ini akan mengambil data-data yang dikumpulkan oleh mod_helloworld.php untuk kemudian membuat tampilan HTML di halaman.

Membuat mod_helloworld.php

File mod_helloworld.php akan melakukan tiga tugas:

  • menyertakan file helper.php yang mengandung kelas yang akan digunakan untuk mengumpulkan data-data yang dibutuhkan
  • meminta metode kelas helper tertentu untuk mendapatkan datanya
  • menyertakan templat untuk menampilkan output

Kelas helper ditentukan di dalam file helper.php kita. File ini adalah salah satu yang dipanggil dalam deklarasi require_once:

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

require_once digunakan karena fungsi helper kita ditentukan dalam sebuah kelas, dan kita hanya menginginkannya satu kali.

Kelas helper kita belum ditentukan, tetapi kalau sudah, ia akan mengandung satu metode: getHello(). Untuk contoh dasar kali ini, kita tidak perlu melakukan hal ini—pesan "Hello, World" yang dikembalikan oleh metode ini dapat dimasukkan ke dalam templat. Kita menggunakan kelas helper di sini hanya bertujuan menunjukkan teknik dasar.

Modul kita saat ini tidak menggunakan parameter apa pun, namun demikian kita akan mengirimkannya ke metode helper sehingga ia dapat dipakai nanti ketika kita memutuskan untuk mengembangkan fungsi dari modul.

Metode kelas helper dibuat dengan cara berikut ini:

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

File mod_helloworld.php selengkapnya

File 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 dijelaskan sejauh ini adalah defined('_JEXEC') or die;. Baris ini penting guna memastikan bahwa file ini dipanggil dari aplikasi Joomla. Ini dibutuhkan untuk mencegah injeksi variabel dan kerentanan keamanan lainnya.

Membuat helper.php

File helper.php mengandung kelas helper yang digunakan untuk mendapatkan data yang akan ditampilkan di output modul tersebut. Seperti yang sudah disebutkan sebelumnya, di sini kelas helper kita hanya akan memiliki satu metode: getHello(). Metode ini akan mengembalikan pesan 'Hello, World'.

Berikut adalah kode untuk file 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 khusus yang mengharuskan untuk mengubah nama kelas helper, tetapi akan sangat membantu agar dapat dikenali dan dicari dengan mudah. Mohon dicatat bahwa penting ditulis dalam format seperti ini jika anda berencana untuk menggunakan komponen com_ajax.

Modul yang lebih canggih lainnya bisa saja menyertakan permintaan database atau fungsi-fungsi lain di dalam metode kelas helper.

Membuat tmpl/default.php

File default.php adalah templat yang menampilkan output modul.

Kode untuk file default.php adalah sebagai berikut:

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

Sebuah catatan penting yang harus diperhatikan adalah file templat ini memiliki cakupan yang sama dengan file mod_helloworld.php. Ini artinya variabel $hello dapat ditentukan di dalam file mod_helloworld.php untuk kemudian dipakai di file templat tanpa deklarasi tambahan atau pemanggilan fungsi lainnya.

Membuat mod_helloworld.xml

File mod_helloworld.xml digunakan untuk menentukan file-file apa saja yang perlu disalin oleh pemasang Joomla dan digunakan oleh Pengelolaan Modul untuk menentukan parameter yang dipakai dalam mengonfigurasikan modul tersebut. Informasi lain mengenai modul juga ditentukan di dalam file 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>

File manifes menjelaskan detail teknis elemen-elemen apa saja yang dipakai di file XML.

Anda akan melihat bahwa ada dua file tambahan lain yang belum disebutkan: index.html dan tmp/index.html. File-file ini disertakan agar direktori ini tidak dapat ditelusuri oleh browser. Jika ada seseorang yang mencoba untuk mengarahkan browser ke folder ini, file index.html yang akan ditampilkan. File-file ini boleh dibiarkan kosong atau mengandung baris sederhana seperti ini:

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

yang akan menampilkan halaman kosong.

Karena modul kita tidak menggunakan bidang formulir apa pun, bagian konfigurasinya kosong.

Installing and Viewing the Module

To install the module, zip up the parent directory of your source files, to create a file called mod_helloworld.zip. Go into Joomla admin, to the Extensions / Manage / Install form, click on the Update Package File tab, and upload your zip file. You should find that the module installs ok. If it doesn't, then compare carefully your code with the code above, and ensure your source code files are named correctly. To make the module visible on your site web pages go into the Extensions / Modules listing and click on the Hello World module to edit it.

  1. set the Status to Published
  2. select the Position where the module should appear (if you're unsure about which Position to set, then navigate to Extensions / Templates / Styles, check which template is assigned on your web pages, then follow this guide to finding the module positions).
  3. on the Menu Assignment tab set the Module Assignment to "On all pages"

Save and Close your edit form. Now if you navigate to your site you should see "Hello, World!" displayed in your chosen module position.

Kesimpulan

Pengembangan modul Joomla! cukup sederhana, proses yang mudah. Melalui teknik-teknik yang dijelaskan di tutorial ini, varietas modul tanpa batas dapat dikembangkan dengan sedikit berusaha.