Cấu trúc file của 1 module
Có 4 file cơ bản được sử dụng trong mẫu phát triển module chuẩn:
- mod_helloworld.php - Đây là file điểm nhập chính của module. Nó sẽ thực thi các hướng xác lập khởi đầu cần thiết cho nội dung module. Gọi các thủ tụ trợ giúp (helper) để thu thập các dữ liệu cần thiết, và bao gồm cả giao diện (template) sẽ được sử dụng để hiển thị nội dung xuất ra của module.
- mod_helloworld.xml - File này có chứa thông tin của module. Nó định nghĩa các file cần thiết sẽ được cài đặt trong Joomla và chỉ định các tham số cấu hình (configuration parameters) đối với module.
- helper.php - File này có chứa lớp trợ giúp (helper class) sẽ được sử dụng để thực hiện 1 tác vụ xác định nào đó như khôi phục/nhận dữ liệu mà sẽ được được hiển thị trong module (thường thường dữ liệu nhận về từ cơ sở dữ liệu (database) hoăch các nguồn khác).
- tmpl/default.php - Đây là giao diện của module. File này sẽ nhận các dữ liệu đã thu thập bởi mod_helloworld.php và sinh mã HTML để hiển thị trên trang thông tin tại vị trí module.
File mod_helloworld.php sẽ thực hiện 3 nhiệm vụ sau:
- Gọi 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
- Gọi template để hiển thị đầu ra.
Lớp helper được định nghĩa trong file helper.php. File này được gọi bằng lệnh require_once:
require_once( dirname(__FILE__).DS.'helper.php' );
require_once được dùng bởi hàm helper đượ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 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(). Trong ví dụ đơn giản này, 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 gọi bên trong template. Chúng ta dùng lớp helper chỉ để minh họa kỹ thuật cơ bản này mà thôi.
Hiện tại thì module 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:
/**
* 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' ) );
Tạo helper.php
Có một dòng mà chúng ra vẫn chưa hề được nhắc đế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.
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:
/**
* 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:
defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
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:
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:
Hello, World!
John Doe
1.5.0
A simple Hello, World! module.
mod_helloworld.php
index.html
helper.php
tmpl/default.php
tmpl/index.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.
Joomla! Hello biên dịch và tham khảo từ http://my.opera.com/trantrung22/
| Top 50 thành phần mở rộng xuất sắc dành cho Joomla < Lùi | Tiếp theo > Điều khiển vùng mainbody trên trang chủ Joomla |
|---|
- 12/03/2009 11:56 - Cách tạo module thông tin chứng khoán trong Joomla
- 12/03/2009 11:36 - Cách tạo module hiển thị tỉ giá ngoại tệ, thông tin thị trường trong Joomla
- 02/03/2009 11:21 - JM Sitemap cho Joomla 1.5
- 26/02/2009 10:50 - Các phần tử mặc định trong file CSS template của Joomla!
- 20/02/2009 21:48 - Top 50 thành phần mở rộng xuất sắc dành cho Joomla
- 16/02/2009 22:21 - Hướng dẫn cài đặt và sử dụng Joomla 1.5.x bằng Flash
- 14/02/2009 10:35 - Tạo link thân thiện SEO/SEF
- 03/02/2009 00:50 - Joomla 1.5 page navigation Plugin Điều hướng trang
- 20/09/2008 10:51 - Chèn modules bất kỳ vào bài viết trong Joomla
- 20/09/2008 07:24 - Thay template Joomla không cần đăng nhập
Download Game bóng đá PES8 Việt Nam
Tải game bóng đá FiFa 09
Tải game Dragon ball Z - 7 viên ngọc rồng
Tải Game Bóng Đá Pro Evolution Soccer 6 Việt Nam
Download PES 2011 patch Việt Nam PESVN
Tải Game Bóng Đá FIFA 2009 RIP 1 CD
Download Pro Evolution Soccer 2011
Download Game THE SIMS 3
Tải Game bóng đá PES 2009
Download PES 2011 demo
XAPPR: Biến smartphone của bạn thành khẩu súng Laser, chơi game AR
Thiết lập Hotmail POP settings trên điện thoại
[Xbox 360 FAQs] - Những điều nên biết về Xbox 360
Windows 95/98/XP chạy trên các thiết bị Android một cách dễ dàng
Hướng dẫn phục hồi dữ liệu và Fix lỗi bị treo táo của iPhone, iPod
Fifa 12 cho các máy android 2.3 trở lên
Tải game Android miễn phí
iWep Pro v4.1.3 - Tìm mật khẩu mạng WiFi trên iOS
Activator 1.6.1 Việt hóa
L.A. Noire: The Complete Edition - THETA [Full ISO/Action/2011] [13.37GB]
Download 7554 demo
Download Game PC, cập nhật liên tục (torrent)
PES 2012 ra mắt bản mở rộng đầu tiên vào 11/10
PES2012 - Full version - Ngôn ngữ và bình luận tiếng Anh
PES2012 - Blurry disable làm mịn đồ họa
PES 2011 PATCH 4.1 - TRANSFER UPDATE - RELEASED
Download Prestashop 1.5
Download PrestaShop 1.4
Bổ sung Memcached vào PrestaShop 1.4
Hướng dẫn tích hợp Ngân Lượng vào PrestaShop
Sửa lỗi invalid carrier or no carrier selected trong PrestaShop
Sửa lỗi PrestaShop: Path is not the same between your browser and you server
Cài đặt PrestaShop
Thiết kế giao diện PrestaShop Theme
Hướng dẫn cài đặt themes trong PrestaShop
Hướng dẫn cách thêm ngôn ngữ cho PrestaShop
Bộ sưu tập Giao diện Premium PrestaShop Themes chuyên nghiệp
Giới thiệu về website thương mại điện tử 2.0 Prestashop
Macromedia Flash - Tạo hiệu ứng menu
Cài đặt Joomla 1.5 extensions


