tao module joomla 1.5

1,627 views

Published on

tao module joomla 1.5

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,627
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
85
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

tao module joomla 1.5

  1. 1. Tạo Module cho Joomla! 1.5Module 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 componentkhá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àiviế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 tinCó 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ởitạ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 racủ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ệuwww.dvms.vn Page 1
  2. 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ởimod_helloworld.php và sinh ra mã HTML để hiển thị trên trang web.Tạo mod_helloworld.phpFile 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ệnhrequire_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ứamộ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àmnhư 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àotrong 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 tacũ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 modifiedpursuant * 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 accessdefined( _JEXEC ) or die( Restricted access );// Include the syndicate functions only oncerequire_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. 3. tránh bị khai thác lỗi variable injection và các nguy cơ tiềm ẩn khác.Tạo helper.phpFile 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ớphelper 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 modifiedpursuant * 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.phpFile 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 accessdefined( _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 filetemplate 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.xmlFile 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 chowww.dvms.vn Page 3
  4. 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 dungbở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ì fileindex.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ứamộ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ậnPhá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 moduleskhá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.vnwww.dvms.vn Page 4
  5. 5. www.dvms.vn Page 5

×