Mục tiêu bài học• Hiểu rõ cấu trúc của component; module • Hiểu rõ về quy trình, cách thức, giải pháp xây dựng component, module... Xây dựng ComponentXây dựng component theo mô hình MVC
Trang 1Bài 5
Hướng dẫn xây dựng Extension
Trang 3Mục tiêu bài học
• Hiểu rõ cấu trúc của component; module
• Hiểu rõ về quy trình, cách thức, giải pháp xây dựng
component, module
Trang 4Xây dựng Component
Xây dựng component theo mô hình MVC
- Các component Joomla được xây dựng theo mô hình MVC
(Model-View-Controler);
User(Khách truycập web)
View(tạo giao diện hiển
thị)
Model(thiết lập các
Controler(điều khiển, xử lýtương tác)
Trang 5Xây dựng Component
Xây dựng 1 Component đơn giản: Component Hello
Trang 6Xây dựng Component
Component cơ bản có 5 file:
• site/hello.php - file tạo entry point
• site/controller.php - Thiết lập điều khiển
• site/views/hello/view.html.php - Thiết lập
hiển thị
• site/views/hello/tmpl/default.php - Tạo giao
diện hiển thị
• hello.xml - Đóng gói thành bộ cài
• site/hello.php - file tạo entry point
• site/controller.php - Thiết lập điều khiển
Trang 7$controller = new $classname();
$controller->execute( JRequest::getVar( 'task' ) );
$controller = new $classname();
$controller->execute( JRequest::getVar( 'task' ) );
$controller->redirect();
Trang 8Xây dựng Component
Tạo controller với file controller.php
<?phpdefined( '_JEXEC' ) or die( 'Restricted access' );
jimport('joomla.application.component.controller');
class HelloController extends JController{
function display(){
parent::display();
}}
<?phpdefined( '_JEXEC' ) or die( 'Restricted access' );
jimport('joomla.application.component.controller');
class HelloController extends JController{
function display(){
parent::display();
}}
Trang 9Xây dựng Component
Tạo view - lập trình file site/views/hello/view.html.php
<?phpdefined( '_JEXEC' ) or die( 'Restricted access' );
$greeting = "Hello, World!";
$this->assignRef( 'greeting', $greeting );
parent::display($tpl);
}}
<?phpdefined( '_JEXEC' ) or die( 'Restricted access' );
$greeting = "Hello, World!";
$this->assignRef( 'greeting', $greeting );
parent::display($tpl);
}}
Trang 10Xây dựng Component
Tạo Template tại file site/views/hello/tmpl/default.php
<?php defined('_JEXEC') or die('Restricted access'); ?>
<h1><?php echo $this->greeting; ?></h1>
Trang 13Xây dựng Component
Tạo file index.html để bảo mật
<html><body bgcolor="#FFFFFF"></body></html>
Trang 14return 'Hello, World!';
return 'Hello, World!';
Trang 15Xây dựng Component
Sử dụng Model: bằng cách thay đổi tại dòng $greeting =
"Hello World!"; tại file site/views/hello/view.html.php
Trang 18$hello = modHelloWorldHelper::getHello( $params );
require( JModuleHelper::getLayoutPath( 'mod_helloworld' ) );
?>
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
require_once( dirname( FILE ).DS.'helper.php' );
$hello = modHelloWorldHelper::getHello( $params );
require( JModuleHelper::getLayoutPath( 'mod_helloworld' ) );
?>
Trang 19?>
Trang 22Xây dựng Module
Tạo file index.html trong các thư mục của module để bảo mật với nội dung:
<html><body bgcolor="#FFFFFF"></body></html>
Trang 23Tổng kết bài học
• Các component trong Joomla được xây dựng theo mô hình MVC và dựa vào Joomla Framework - thư viện mã nguồn sẵn có trong Joomla CMS.
• Quy trình xây dựng giống nhau đối với tất cả các component hay module.
• Sau khi hoàn thiện lập trình một component hay module, cần đóng gói thành file zip để có thể cài đặt vào Joomla
từ trình cài đặt tháo gỡ tự động của Joomla
• Các component trong Joomla được xây dựng theo mô hình MVC và dựa vào Joomla Framework - thư viện mã nguồn sẵn có trong Joomla CMS.
• Quy trình xây dựng giống nhau đối với tất cả các component hay module.
• Sau khi hoàn thiện lập trình một component hay module, cần đóng gói thành file zip để có thể cài đặt vào Joomla
từ trình cài đặt tháo gỡ tự động của Joomla