Tạo Module Hello World cho Joomla! 1.5

Module là một extension rất nhẹ và mềm dẻo được sử dụng để render nên trang web. Chúng được sử dụng cho trang có kích thước nhỏ, ít phức tạp và có thể được xem từ nhiều component khác nhau.
Bạn có thể thấy nhiều ví dụ về module trong bản cài đặt Joomla! chuẩn như:
-Menus
-Latest News
-Login form
-và nhiều cái khác nữa.
Bài viết này sẽ hướng dẫn bạn cách tạo ra một module Hello World đơn giản. Xuyên suốt bài viết này bạn sẽ học được cấu trúc cơ bản của một module. Tất nhiên, bạn hoàn toàn có thể mở rộng cấu trúc cơ bản này để tạo ra các module phức tạp hơn theo ý mình.
Cấu trúc tập tin
Có 4 file cơ bản được dùng trong mẫu tiêu chuẩn của việc phát triển module:
•mod_helloworld.php – File này là điểm vào chính cho module. Nó sẽ thực hiện những khởi tạo cần thiết, gọi các helper để thu thập mọi dữ liệu cần thiết, và include template hiển thị đầu ra của module.
•mod_helloworld.xml – File này chứa thông tin về module. Nó định nghĩa ra các files cần thiết để cài đặt từ trình cài đặt của Joomla! và chỉ ra các tham số cấu hình cho module.
•helper.php – File này chứa lớp helper, được dùng để thực hiện các hành động thực sự để lấy về các thông tin mà sẽ được hiển thị trên module (thường là từ database hoặc những nguồn dữ liệu khác).
•tmpl/default.php – File này là template của module. Nó sẽ lấy về dữ liệu đã được thu thập bởi mod_helloworld.php và sinh ra mã HTML để hiển thị trên trang web.
Tạo mod_helloworld.php
File mod_helloworld.php sẽ thực hiện 3 nhiệm vụ sau:
•include file helper.php chứa lớp được dùng để thu thập dữ liệu cần thiết
•Triệu gọi phương thức thích hợp trong lớp helper để lấy về dữ liệu
•include template để hiển thị đầu ra.
Lớp helper được định nghĩa trong file helper.php của chúng ta. File này được include bằng lệnh require_once:
require_once( dirname(__FILE__).DS.'helper.php' );
require_once được dùng bởi hàm helper của chúng ta được định nghĩa bên trong một lớp, và chúng ta muốn lớp này được định nghĩa chỉ 1 lần mà thôi.
Lớp helper của chúng ta hiện vẫn chưa được định nghĩa, nhưng khi được định nghĩa nó sẽ chứa một phương thức: getHello(). Với ví dụ đơn giản của chúng ta, không thực sự cần thiết phải làm như vậy – thông điệp “Hello, World” mà phương thức này trả về đơn giản là sẽ được include vào trong template. Chúng ta dùng lớp helper chỉ để chứng minh kỹ thuật cơ bản này mà thôi.
Hiện tại thì module của chúng ta chưa sử dụng bất kỳ tham số nào, nhưng dù sao thì chúng ta cũng sẽ truyền cho phương thức helper để nó có thể sử dụng về sau, nếu chúng ta quyết định mở rộng chức năng cho module này.
Phương thức lớp helper được triệu gọi theo cách sau đây:
$hello = modHelloWorldHelper::getHello( $params );
File mod_helloworld.php hoàn chỉnh như sau:
<?php
/**
 * Hello World! Module Entry Point
 * 
 * @package    Joomla.Tutorials
 * @subpackage Modules
 * @link http://dev.joomla.org/component/option,com_jd-wiki/Itemid,31/id,tutorials:modules/
 * @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.
 */

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

// Include the syndicate functions only once
require_once( dirname(__FILE__).DS.'helper.php' );

$hello = modHelloWorldHelper::getHello( $params );
require( JModuleHelper::getLayoutPath( 'mod_helloworld' ) );
Có một dòng mà chúng ra vẫn chưa hề động đến chính là dòng đầu tiên. Dòng này kiểm tra để chắc chắn rằng file này thực sự được include từ một ứng dụng Joomla!. Nó thực sự cần thiết để tránh bị khai thác lỗi variable injection và các nguy cơ tiềm ẩn khác.
Tạo helper.php
File helper.php chứa lớp helper dùng để lấy về dữ liệu cho đầu ra của module. Như sẽ đề cập, lớp helper của chúng ta sẽ có 1 method: getHello() trả về thông điệp ‘Hello, World’.
Và đây là code cho helper.php:
<?php
/**
 * Helper class for Hello World! module
 * 
 * @package    Joomla.Tutorials
 * @subpackage Modules
 * @link http://dev.joomla.org/component/option,com_jd-wiki/Itemid,31/id,tutorials:modules/
 * @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
     */    
    function getHello( $params )
    {
        return 'Hello, World!';
    }
}
Không có quy tắc nào bắt chúng ta phải đặt tên cho lớp helper như trên, nhưng đặt tên như vậy sẽ rất có ích cho việc nhận dạng lớp và tìm kiếm.
Các module cao cấp hơn có thể sẽ chứa các yêu cầu truy vấn database hoặc các chức năng khác.
Tạo tmpl/default.php
File default.php là một template nó sẽ hiển thị đầu ra của module.
Code cho default.php như sau:
<?php // no direct access
defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
<?php echo $hello; ?>
Một điểm quan trọng cần chú ý là file template có cùng phạm vi với file mod_helloworld.php. Nghĩa là biến $hello được định nghĩa trong file mod_helloworld.php có thể dùng được trong file template default.php mà không cần bất kỳ khai báo hay lời gọi hàm nào.

Tạo mod_helloworld.xml
File mod_helloworld.xml được dùng để chỉ ra những file nào mà trình cài đặt cần phải copy và sẽ được sử dụng bởi Module Manager để xác định tham số nào được dùng để cấu hình cho module. Những thông tin khác về module cũng được định nghĩa trong file này.
Code cho mod_helloworld.xml như sau:
<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
    <name>Hello, World!</name>
    <author>John Doe</author>
    <version>1.5.0</version>
    <description>A simple Hello, World! module.</description>
    <files>
        <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>
    <params>
    </params>
</install>
Chú ý là có 2 file thêm vào mà chúng ra chưa nhắc đến đó là: index.html and tmpl/index.html. Các file này cũng được include để tránh cho các thư mục không bị truy cập và liệt kê nội dung bởi trình duyệt. Nếu người dùng cố gắng trỏ trình duyệt của họ tới thẳng các thư mục thì file index.html sẽ được hiển thị và họ sẽ chẳng thấy gì hết. Các file này có thể để trống hoặc chứa một dòng đơn giản sau:
<html><body bgcolor="#FFFFFF"></body></html>
Nó sẽ hiển thị một trang trắng tinh.
Vì module của chúng ta ko có parameters nào, nên chương này sẽ bỏ trống.
Kết luận
Phát triển module cho Joomla! là một việc khá đơn giản, trình tự rõ ràng. Bằng cách sử dụng kỹ thuật đã mô tả trong bài viết này, chúng ta có thể dễ dàng phát triển rất, rất nhiều các modules khác nữa.
chi tiết xem ở đây.
http://docs.joomla.org/Tutorial:Creating_a_Hello_World_Module_for_Joomla_1.5

Nhận xét

Bài đăng phổ biến từ blog này

dung lượng RAM lớn nhất mà HĐH cấu trúc 32-bit nhận được

Ký tự viết tắt trong chat & email

Ubuntu LAMP Server