MÃ ngành : 05115 ĐỀ TÀI : TÌm hiểu cms joomla



tải về 4.39 Mb.
trang31/36
Chuyển đổi dữ liệu07.06.2018
Kích4.39 Mb.
1   ...   28   29   30   31   32   33   34   35   36

Component

  1. Cấu trúc chung của một component


Một component thường có các thành phần cơ bản sau:: Phần hiển thị ở trang chủ, Phần quản lý trong Joomla! Administrator và các bảng dữ liệu trong cơ sở dữ liệu.Các bước cơ bản để làm một component như sau:

a. Backend thông thường sẽ gồm những file cơ bản sau: 1 file admin.yourcom.php, 1 file admin.yourcom.html.php, 1 file toolbar.yourcom.php, 1 file toolbar.yourcom.html.php.

b. Frontend sẽ gồm 2 file cơ bản (thông thường): 1 file yourcom.php, 1 file yourcom.html.php

Chú ý: không nhất thiết một com của bạn phải hoặc chỉ bao gồm các file trên, các file bắt buộc là admin.yourcom.php và yourcom.php (folder chứa com cả trong frontend và backend sẽ là com_yourcom). Ngoài ra bạn có thể có các file khác (vd yourcom.class.php chẳng hạn), các folder, các file .js, file ảnh... tùy thuộc vào mức độ bạn cần ở com này và mức độ bạn hiểu.

c. Một file .XML để phục vụ cho việc cài đặt khi bạn đóng gói. File XML này sẽ mang tất cả các thông số về Tên com; tên tác giả, địa chỉ email, license ... (optional). Mục đích chính của file này là khai báo các file trong frontend và backend (đường dãn đầy đủ của các file này) để upload khi cài đặt, khai báo các query tạo và insert database (nếu bạn phải thêm database) và các query uninstall (nếu có)..

Một điểm quan trọng là phải hiểu các object, class, function... cơ bản trong joomla thì mới sử dụng được chúng để viết (ví dụ như object về database...). Khi đóng gói thì nhớ đóng gói ở dạng .zip, .tar nếu ở dạng .zar thì joomla ko hiểu đc. Nếu chưa đóng gói được thì làm manual bằng cách insert trong database và copy các file vào các folder tương úng (không khuyến cáo sd cách này).

Để đảm bảo khỏi các lộn xộn khi viết mã php và html , thông thường người ta thường phân tách phần hiển thị thành 2 phần : một phần chứa các mã logic php

(thường .php) một phần chứa các đoạn mã html được định dạng để hiển thị (thường là .html.php).

Để thuận tiện cho việc học hỏi trong quá trình trình bày lý thuyết phần này ta sẽ xét ví dụ cụ thể là module quản lý thời khóa biểu .


      1. yourcom.php và yourcom.html.php


yourcom.php chứa phần mã logic bằng php như các mã kết nối ,xử lý cơ sở dữ liệu, xử lý chuỗi, mảng …. Thông thường một file này thường có 4 phần:

  • Phần 1: phần này sẽ đảm bảo rằng file này không thể truy nhập trực tiêp được và các lớp html được sử dụng cho việc hiển thị sẽ được load.

defined( '_VALID_MOS' ) or die( 'Direct access of this file is prohibited.' );

require_once( $mainframe->getPath( 'front_html' ) );

  • Phần 2: Xác định thông tin hiển thị trên Title của trình duyệt khi component này được sử dụng.

$mainframe->setPageTitle( "Thoi khoa bieu" );

  • Phần 3: bao gồm các lựa chọn khác nhau, bạn có thể mở các component với các tham số khác nhau và trình diễn chúng ở đây.

switch( $task ) {

case 'free':

// more display possibilities

break;

default:

tkb_shows();

break;

}

  • Phần 4: là nơi thực thi các mã logic, ở đây các truy vấn cơ sở dữ liệu được thực hiện, các mảng được tạo, thủ tục hiển thị được gọi và các lớp được tham chiếu, các lớp này được chứa trong file yourcom.html.php

function tkb_shows( ) {

global $database;

/* SQL query of all published entries */

$query="SELECT * FROM #__tkb WHERE published='1'" ;

$database->setQuery( $query );

$rows = $database->loadObjectList();

HTML_tkb::showtable($rows );



}

yourcom.html.php có chứa các lớp để hiển thị, ở đây các mảng là kết quả của các truy vấn cơ sở dữ liệu được xử lý và hiển thị các bản ghi.

Một mảng sẽ được nhận thông qua thủ tục showtable($rows );. Danh sách các bản ghi sẽ được trình diễn thông qua các mã html và để truy xuất chúng một vòng lặp foreach loop được sử dụng đến khi không còn thành phần nào trong mảng.



…..

Foreach ($rows as $row) {

…..

Theo nguyên tắc các thủ tục được đề nghị được sử dụng trong lớp như việc hiển thị bảng. ví dụ việc sử dụng hàm trong lớp để hiển thị bảng.



HTML_tkb::showtable($rows );

Đây là một lớp tĩnh (HTML_tkb) phương thức showtable($rows)có thể được gọi trực tiếp, tên lớp và tên thủ tục được ngăn cách bởi hai đấu hai chấm.
      1. admin.yourcom.php và file admin.yourcom.html.php


Giống như các file trong phần front-end , file admin.yourcom.php cũng chứa phần logic xử lý còn file admin.yourcom.html.php sẽ chứa các thủ tục dùng để hiển thị dữ liệu, nhập dữ liệu hay sửa dữ liệu đã có.
      1. toolbar.yourcom.php và toolbar.yourcom.html.php


Đây là nơi thanh công cụ được tập hợp như danh sách dưới, ở đây các hàm cũng được gọi để xử lý các sự kiện. Các biểu tượng của thanh công cụ được cung cấp sẵn của Joomla.

Hình 44 : Thanh công cụ của Joomla



toolbar.yourcom.php

defined( '_VALID_MOS' ) or die( 'Restricted access' );

require_once( $mainframe->getPath( 'toolbar_html' ) );

switch ( $task )

{

case "new":

case "edit":

menuAutolinks::EDIT_MENU();

break;

default:

menuAutolinks::DEFAULT_MENU();

break;

}

toolbar.yourcom.html.php

defined( '_VALID_MOS' ) or die( 'Restricted access' );

class menuAutolinks {

function EDIT_MENU()

{

mosMenuBar::startTable();

mosMenuBar::save();

mosMenuBar::cancel();

mosMenuBar::spacer();

mosMenuBar::endTable();

}

function DEFAULT_MENU()

{

mosMenuBar::startTable();

mosMenuBar::addNew();

mosMenuBar::editList();

mosMenuBar::publish();

mosMenuBar::unpublish();

mosMenuBar::deleteList();

mosMenuBar::spacer();

mosMenuBar::endTable();

}
      1. file.xml


Đây là file dùng để cài đặt cho component , nội dung của file là các mã xml xác định các file sẽ được cài đặt, các mã tạo cơ sở dữ liệu ban đầu, các mã cài đặt, gỡ bỏ component. Sau đây là một ví dụ:





tkb

May 2007

Anh Dai

GPL

info@nekkarcity.de

antirealist.nekkarcity.de

1.0.0

component quan ly thoi khoa bieu



tkb.php

tkb.html.php







DROP TABLE IF EXISTS `#__tkb`

CREATE TABLE IF NOT EXISTS `#__tkb` (

`id` int(4) NOT NULL auto_increment,

`name` varchar(100) NOT NULL default '',

`malop` varchar(10) NOT NULL default '',

`ngayhoc` varchar(100) NOT NULL default '',

`giohoc` varchar(100) NOT NULL default '',

`giaovien` varchar(100) NOT NULL default '',

`published` int(1) NOT NULL default 0,

PRIMARY KEY (`id`),

UNIQUE KEY `name` (`name`)

) TYPE=MyISAM;









DROP TABLE IF EXISTS `#__tkb`







Thoi khoa bieu



admin.tkb.html.php

admin.tkb.php

tkb.class.php

tkb.xml

toolbar.tkb.php

toolbar.tkb.html.php









1   ...   28   29   30   31   32   33   34   35   36


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2019
được sử dụng cho việc quản lý

    Quê hương