SlideShare a Scribd company logo
1 of 5
Download to read offline
Tạo Module 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

www.dvms.vn                                                                                  Page 1
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 để


www.dvms.vn                                                                              Page 2
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



www.dvms.vn                                                                              Page 3
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.

Dịch từ Joomla Developer Site




                                CHÚC THÀNH CÔNG!


                          THÔNG TIN LIÊN HỆ HỖ TRỢ

                DVMS

                  (08) 360 289 37 info@dvms.vn

                 www.DVMS.vn


www.dvms.vn                                                                                Page 4
www.dvms.vn   Page 5

More Related Content

What's hot

Bài 4 Bảo mật cho website - Xây dựng ứng dụng web
Bài 4 Bảo mật cho website - Xây dựng ứng dụng webBài 4 Bảo mật cho website - Xây dựng ứng dụng web
Bài 4 Bảo mật cho website - Xây dựng ứng dụng webMasterCode.vn
 
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao KhanhPham
 
Tài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xTài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xZendVN
 
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng webBài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng webMasterCode.vn
 
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTBài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTMasterCode.vn
 
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng webBài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng webMasterCode.vn
 
Mysql Workbench hướng dẫn cài đặt - Video tiếng Việt
Mysql Workbench hướng dẫn cài đặt - Video tiếng ViệtMysql Workbench hướng dẫn cài đặt - Video tiếng Việt
Mysql Workbench hướng dẫn cài đặt - Video tiếng ViệtKhanhPham
 
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPTBài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPTMasterCode.vn
 
Báo cáo thực tập athena nguyễn anh tuấn
Báo cáo thực tập athena   nguyễn anh tuấnBáo cáo thực tập athena   nguyễn anh tuấn
Báo cáo thực tập athena nguyễn anh tuấniwubmg
 
Wp hoi-thao-phan-quyen
Wp hoi-thao-phan-quyenWp hoi-thao-phan-quyen
Wp hoi-thao-phan-quyenKhanhPham
 
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong WordpressTài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong WordpressKhanhPham
 

What's hot (20)

Bài 4 Bảo mật cho website - Xây dựng ứng dụng web
Bài 4 Bảo mật cho website - Xây dựng ứng dụng webBài 4 Bảo mật cho website - Xây dựng ứng dụng web
Bài 4 Bảo mật cho website - Xây dựng ứng dụng web
 
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
 
Tài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xTài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.x
 
Web301 slide 4
Web301   slide 4Web301   slide 4
Web301 slide 4
 
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng webBài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
 
Web201 slide 6
Web201   slide 6Web201   slide 6
Web201 slide 6
 
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTBài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
 
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng webBài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
 
Mysql Workbench hướng dẫn cài đặt - Video tiếng Việt
Mysql Workbench hướng dẫn cài đặt - Video tiếng ViệtMysql Workbench hướng dẫn cài đặt - Video tiếng Việt
Mysql Workbench hướng dẫn cài đặt - Video tiếng Việt
 
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPTBài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
 
Web201 slide 7
Web201   slide 7Web201   slide 7
Web201 slide 7
 
Web3012 slide 8
Web3012   slide 8Web3012   slide 8
Web3012 slide 8
 
Web301 slide 1
Web301   slide 1Web301   slide 1
Web301 slide 1
 
Web201 slide 2
Web201   slide 2Web201   slide 2
Web201 slide 2
 
Web201 slide 1
Web201   slide 1Web201   slide 1
Web201 slide 1
 
Báo cáo thực tập athena nguyễn anh tuấn
Báo cáo thực tập athena   nguyễn anh tuấnBáo cáo thực tập athena   nguyễn anh tuấn
Báo cáo thực tập athena nguyễn anh tuấn
 
Web203 slide 4
Web203   slide 4Web203   slide 4
Web203 slide 4
 
Wp hoi-thao-phan-quyen
Wp hoi-thao-phan-quyenWp hoi-thao-phan-quyen
Wp hoi-thao-phan-quyen
 
Web203 slide 8
Web203   slide 8Web203   slide 8
Web203 slide 8
 
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong WordpressTài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
 

Viewers also liked

mobile catalogue, mobile brochure
mobile catalogue, mobile brochuremobile catalogue, mobile brochure
mobile catalogue, mobile brochuredvms
 
CakePHP × 国産! baserCMS3の深化と今後の拡がり
CakePHP × 国産! baserCMS3の深化と今後の拡がりCakePHP × 国産! baserCMS3の深化と今後の拡がり
CakePHP × 国産! baserCMS3の深化と今後の拡がりDaisuke Abe
 
BỘ QUY TẮC ỨNG XỬ CỦA ĐỐI TÁC DVMS
BỘ QUY TẮC ỨNG XỬ CỦA ĐỐI TÁC DVMSBỘ QUY TẮC ỨNG XỬ CỦA ĐỐI TÁC DVMS
BỘ QUY TẮC ỨNG XỬ CỦA ĐỐI TÁC DVMSdvms
 
TÀI LIỆU HƯỚNG DẪN VIẾT MODULE CHO SUGARCRM
TÀI LIỆU HƯỚNG DẪN VIẾT MODULE CHO SUGARCRMTÀI LIỆU HƯỚNG DẪN VIẾT MODULE CHO SUGARCRM
TÀI LIỆU HƯỚNG DẪN VIẾT MODULE CHO SUGARCRMdvms
 
“El coaching como estrategia para mejorar el desempeño laboral de docentes en...
“El coaching como estrategia para mejorar el desempeño laboral de docentes en...“El coaching como estrategia para mejorar el desempeño laboral de docentes en...
“El coaching como estrategia para mejorar el desempeño laboral de docentes en..."Virgen del Carmen" 50273
 
20150606 CMS Fun名古屋 vol.2 baserCMSのご紹介
20150606 CMS Fun名古屋 vol.2 baserCMSのご紹介20150606 CMS Fun名古屋 vol.2 baserCMSのご紹介
20150606 CMS Fun名古屋 vol.2 baserCMSのご紹介Daisuke Abe
 
STracking
STrackingSTracking
STrackingdvms
 
DVMS tạo module joomla 2.5
DVMS tạo module joomla 2.5DVMS tạo module joomla 2.5
DVMS tạo module joomla 2.5dvms
 
SmartApp for Sale
SmartApp for SaleSmartApp for Sale
SmartApp for Saledvms
 
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7dvms
 
NỘI QUY CTY DVMS
NỘI QUY CTY DVMSNỘI QUY CTY DVMS
NỘI QUY CTY DVMSdvms
 
DVMS schat giải pháp chăm sóc và tư vấn khách hàng tuyệt vời
DVMS schat giải pháp chăm sóc và tư vấn khách hàng tuyệt vờiDVMS schat giải pháp chăm sóc và tư vấn khách hàng tuyệt vời
DVMS schat giải pháp chăm sóc và tư vấn khách hàng tuyệt vờidvms
 
Sesiones de aprendizaje de 1° a 5° secundaria
Sesiones de aprendizaje de 1° a 5° secundariaSesiones de aprendizaje de 1° a 5° secundaria
Sesiones de aprendizaje de 1° a 5° secundaria"Virgen del Carmen" 50273
 
Quản trị joomla toàn tập
Quản trị joomla toàn tậpQuản trị joomla toàn tập
Quản trị joomla toàn tậpdvms
 

Viewers also liked (15)

mobile catalogue, mobile brochure
mobile catalogue, mobile brochuremobile catalogue, mobile brochure
mobile catalogue, mobile brochure
 
CakePHP × 国産! baserCMS3の深化と今後の拡がり
CakePHP × 国産! baserCMS3の深化と今後の拡がりCakePHP × 国産! baserCMS3の深化と今後の拡がり
CakePHP × 国産! baserCMS3の深化と今後の拡がり
 
Lgpl 2 1
Lgpl 2 1Lgpl 2 1
Lgpl 2 1
 
BỘ QUY TẮC ỨNG XỬ CỦA ĐỐI TÁC DVMS
BỘ QUY TẮC ỨNG XỬ CỦA ĐỐI TÁC DVMSBỘ QUY TẮC ỨNG XỬ CỦA ĐỐI TÁC DVMS
BỘ QUY TẮC ỨNG XỬ CỦA ĐỐI TÁC DVMS
 
TÀI LIỆU HƯỚNG DẪN VIẾT MODULE CHO SUGARCRM
TÀI LIỆU HƯỚNG DẪN VIẾT MODULE CHO SUGARCRMTÀI LIỆU HƯỚNG DẪN VIẾT MODULE CHO SUGARCRM
TÀI LIỆU HƯỚNG DẪN VIẾT MODULE CHO SUGARCRM
 
“El coaching como estrategia para mejorar el desempeño laboral de docentes en...
“El coaching como estrategia para mejorar el desempeño laboral de docentes en...“El coaching como estrategia para mejorar el desempeño laboral de docentes en...
“El coaching como estrategia para mejorar el desempeño laboral de docentes en...
 
20150606 CMS Fun名古屋 vol.2 baserCMSのご紹介
20150606 CMS Fun名古屋 vol.2 baserCMSのご紹介20150606 CMS Fun名古屋 vol.2 baserCMSのご紹介
20150606 CMS Fun名古屋 vol.2 baserCMSのご紹介
 
STracking
STrackingSTracking
STracking
 
DVMS tạo module joomla 2.5
DVMS tạo module joomla 2.5DVMS tạo module joomla 2.5
DVMS tạo module joomla 2.5
 
SmartApp for Sale
SmartApp for SaleSmartApp for Sale
SmartApp for Sale
 
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7
 
NỘI QUY CTY DVMS
NỘI QUY CTY DVMSNỘI QUY CTY DVMS
NỘI QUY CTY DVMS
 
DVMS schat giải pháp chăm sóc và tư vấn khách hàng tuyệt vời
DVMS schat giải pháp chăm sóc và tư vấn khách hàng tuyệt vờiDVMS schat giải pháp chăm sóc và tư vấn khách hàng tuyệt vời
DVMS schat giải pháp chăm sóc và tư vấn khách hàng tuyệt vời
 
Sesiones de aprendizaje de 1° a 5° secundaria
Sesiones de aprendizaje de 1° a 5° secundariaSesiones de aprendizaje de 1° a 5° secundaria
Sesiones de aprendizaje de 1° a 5° secundaria
 
Quản trị joomla toàn tập
Quản trị joomla toàn tậpQuản trị joomla toàn tập
Quản trị joomla toàn tập
 

Similar to tao module joomla 1.5

Create easymoduleinphpfox
Create easymoduleinphpfoxCreate easymoduleinphpfox
Create easymoduleinphpfoxEntu Di
 
Thuyet_trinh_de_tai_Joomla
Thuyet_trinh_de_tai_JoomlaThuyet_trinh_de_tai_Joomla
Thuyet_trinh_de_tai_JoomlaTrung Mai
 
Lap trinh-joomla-15-theo-mo-hinh-mvc
Lap trinh-joomla-15-theo-mo-hinh-mvcLap trinh-joomla-15-theo-mo-hinh-mvc
Lap trinh-joomla-15-theo-mo-hinh-mvcChe Linh Nguyen
 
Drupal framework xanh
Drupal framework xanhDrupal framework xanh
Drupal framework xanhXanh Nguyen
 
Hỏi tình hình bk tiny bktiny-hdsd
Hỏi tình hình bk tiny   bktiny-hdsdHỏi tình hình bk tiny   bktiny-hdsd
Hỏi tình hình bk tiny bktiny-hdsdVu Hung Nguyen
 
Sức mạnh của jsf 2, phần 2 tạo khuôn mẫu và các thành phần phức hợp
Sức mạnh của jsf 2, phần 2 tạo khuôn mẫu và các thành phần phức hợpSức mạnh của jsf 2, phần 2 tạo khuôn mẫu và các thành phần phức hợp
Sức mạnh của jsf 2, phần 2 tạo khuôn mẫu và các thành phần phức hợpTuyet Tam
 
PMMNM.docx
PMMNM.docxPMMNM.docx
PMMNM.docxNgnHng26
 
template magento
template magentotemplate magento
template magentodvms
 
Bài 7: Bảo mật website Joomla Các lỗi và một số vấn đề thường gặp với website...
Bài 7: Bảo mật website Joomla Các lỗi và một số vấn đề thường gặp với website...Bài 7: Bảo mật website Joomla Các lỗi và một số vấn đề thường gặp với website...
Bài 7: Bảo mật website Joomla Các lỗi và một số vấn đề thường gặp với website...MasterCode.vn
 
All zend
All zendAll zend
All zendkuetli
 
Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01Giang Nguyễn
 
Huongdancaidat moodle 162(kco j
Huongdancaidat moodle 162(kco jHuongdancaidat moodle 162(kco j
Huongdancaidat moodle 162(kco jLan Nguyen
 
Bài 3 Cài đặt và quản lý các Extension của Joomla
Bài 3 Cài đặt và quản lý các Extension của JoomlaBài 3 Cài đặt và quản lý các Extension của Joomla
Bài 3 Cài đặt và quản lý các Extension của JoomlaMasterCode.vn
 
Bài 4 Hướng dẫn chỉnh sửa và thiết kế giao diện web Joomla
Bài 4 Hướng dẫn chỉnh sửa và thiết kế giao diện web JoomlaBài 4 Hướng dẫn chỉnh sửa và thiết kế giao diện web Joomla
Bài 4 Hướng dẫn chỉnh sửa và thiết kế giao diện web JoomlaMasterCode.vn
 

Similar to tao module joomla 1.5 (20)

Create easymoduleinphpfox
Create easymoduleinphpfoxCreate easymoduleinphpfox
Create easymoduleinphpfox
 
Tìm hiểu về Joomla
Tìm hiểu về Joomla Tìm hiểu về Joomla
Tìm hiểu về Joomla
 
Gioi thieu joomla
Gioi thieu joomlaGioi thieu joomla
Gioi thieu joomla
 
Yii
YiiYii
Yii
 
Thuyet_trinh_de_tai_Joomla
Thuyet_trinh_de_tai_JoomlaThuyet_trinh_de_tai_Joomla
Thuyet_trinh_de_tai_Joomla
 
Joomla developermanual
Joomla developermanualJoomla developermanual
Joomla developermanual
 
Lap trinh-joomla-15-theo-mo-hinh-mvc
Lap trinh-joomla-15-theo-mo-hinh-mvcLap trinh-joomla-15-theo-mo-hinh-mvc
Lap trinh-joomla-15-theo-mo-hinh-mvc
 
Drupal framework xanh
Drupal framework xanhDrupal framework xanh
Drupal framework xanh
 
Hỏi tình hình bk tiny bktiny-hdsd
Hỏi tình hình bk tiny   bktiny-hdsdHỏi tình hình bk tiny   bktiny-hdsd
Hỏi tình hình bk tiny bktiny-hdsd
 
Sức mạnh của jsf 2, phần 2 tạo khuôn mẫu và các thành phần phức hợp
Sức mạnh của jsf 2, phần 2 tạo khuôn mẫu và các thành phần phức hợpSức mạnh của jsf 2, phần 2 tạo khuôn mẫu và các thành phần phức hợp
Sức mạnh của jsf 2, phần 2 tạo khuôn mẫu và các thành phần phức hợp
 
PMMNM.docx
PMMNM.docxPMMNM.docx
PMMNM.docx
 
template magento
template magentotemplate magento
template magento
 
Web203 slide 7
Web203   slide 7Web203   slide 7
Web203 slide 7
 
Bài 7: Bảo mật website Joomla Các lỗi và một số vấn đề thường gặp với website...
Bài 7: Bảo mật website Joomla Các lỗi và một số vấn đề thường gặp với website...Bài 7: Bảo mật website Joomla Các lỗi và một số vấn đề thường gặp với website...
Bài 7: Bảo mật website Joomla Các lỗi và một số vấn đề thường gặp với website...
 
All zend
All zendAll zend
All zend
 
Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01
 
Huongdancaidat moodle 162(kco j
Huongdancaidat moodle 162(kco jHuongdancaidat moodle 162(kco j
Huongdancaidat moodle 162(kco j
 
Web203 slide 3
Web203   slide 3Web203   slide 3
Web203 slide 3
 
Bài 3 Cài đặt và quản lý các Extension của Joomla
Bài 3 Cài đặt và quản lý các Extension của JoomlaBài 3 Cài đặt và quản lý các Extension của Joomla
Bài 3 Cài đặt và quản lý các Extension của Joomla
 
Bài 4 Hướng dẫn chỉnh sửa và thiết kế giao diện web Joomla
Bài 4 Hướng dẫn chỉnh sửa và thiết kế giao diện web JoomlaBài 4 Hướng dẫn chỉnh sửa và thiết kế giao diện web Joomla
Bài 4 Hướng dẫn chỉnh sửa và thiết kế giao diện web Joomla
 

More from dvms

S-TMS | Smart Transportation Management System
S-TMS | Smart Transportation Management SystemS-TMS | Smart Transportation Management System
S-TMS | Smart Transportation Management Systemdvms
 
HƯỚNG DẪN SỬ DỤNG PHẦN MỀM SUBVERSION (SVN) TOÀN TẬP
HƯỚNG DẪN SỬ DỤNG PHẦN MỀM SUBVERSION (SVN) TOÀN TẬPHƯỚNG DẪN SỬ DỤNG PHẦN MỀM SUBVERSION (SVN) TOÀN TẬP
HƯỚNG DẪN SỬ DỤNG PHẦN MỀM SUBVERSION (SVN) TOÀN TẬPdvms
 
DVMS Easy Order app đặt món trên smartphone
DVMS Easy Order app đặt món trên smartphoneDVMS Easy Order app đặt món trên smartphone
DVMS Easy Order app đặt món trên smartphonedvms
 
Quy trình làm việc với khách hàng của DVMS
Quy trình làm việc với khách hàng của DVMSQuy trình làm việc với khách hàng của DVMS
Quy trình làm việc với khách hàng của DVMSdvms
 
Hệ thống đánh giá đại lý, chi nhánh, cửa hàng
Hệ thống đánh giá đại lý, chi nhánh, cửa hàngHệ thống đánh giá đại lý, chi nhánh, cửa hàng
Hệ thống đánh giá đại lý, chi nhánh, cửa hàngdvms
 
admin magento user guide
admin magento user guideadmin magento user guide
admin magento user guidedvms
 

More from dvms (6)

S-TMS | Smart Transportation Management System
S-TMS | Smart Transportation Management SystemS-TMS | Smart Transportation Management System
S-TMS | Smart Transportation Management System
 
HƯỚNG DẪN SỬ DỤNG PHẦN MỀM SUBVERSION (SVN) TOÀN TẬP
HƯỚNG DẪN SỬ DỤNG PHẦN MỀM SUBVERSION (SVN) TOÀN TẬPHƯỚNG DẪN SỬ DỤNG PHẦN MỀM SUBVERSION (SVN) TOÀN TẬP
HƯỚNG DẪN SỬ DỤNG PHẦN MỀM SUBVERSION (SVN) TOÀN TẬP
 
DVMS Easy Order app đặt món trên smartphone
DVMS Easy Order app đặt món trên smartphoneDVMS Easy Order app đặt món trên smartphone
DVMS Easy Order app đặt món trên smartphone
 
Quy trình làm việc với khách hàng của DVMS
Quy trình làm việc với khách hàng của DVMSQuy trình làm việc với khách hàng của DVMS
Quy trình làm việc với khách hàng của DVMS
 
Hệ thống đánh giá đại lý, chi nhánh, cửa hàng
Hệ thống đánh giá đại lý, chi nhánh, cửa hàngHệ thống đánh giá đại lý, chi nhánh, cửa hàng
Hệ thống đánh giá đại lý, chi nhánh, cửa hàng
 
admin magento user guide
admin magento user guideadmin magento user guide
admin magento user guide
 

tao module joomla 1.5

  • 1. Tạo Module 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 www.dvms.vn Page 1
  • 2. 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 để www.dvms.vn Page 2
  • 3. 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 www.dvms.vn Page 3
  • 4. 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. Dịch từ Joomla Developer Site CHÚC THÀNH CÔNG! THÔNG TIN LIÊN HỆ HỖ TRỢ DVMS (08) 360 289 37 info@dvms.vn www.DVMS.vn www.dvms.vn Page 4
  • 5. www.dvms.vn Page 5