Tải bản đầy đủ (.doc) (55 trang)

Tìm hiểu và xây dựng ứng dụng với drupal

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (700.22 KB, 55 trang )

Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal

Lời cảm ơn

Để có thể hòan thành đồ án cơ sở này, bản thân xin gửi lời
tri ơn sâu sắc đến thầy Hồng, người đã tận tình hướng
dẫn và tạo cơ hội cho bản thân khi tìm hiểu và xây dựng
ứng dụng với drupal.
Gửi lời cảm ơn người bạn, anh Hồng đã giúp đỡ về tài
liệu cũng như những khúc mắc về drupal trong q trình
làm bài.

TP.HCM tháng 2 năm 2010

GVHD: Th.S Văn Thiên Hoàng

Trang 1


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal

Phần I : TÌM HIỂU DRUPAL
1. Lòch sử ra đời
1.1 Giới thiệu?
- Drupal là một khung sườn phát triển phần mềm hướng module, một hệ thống quản trò nội
dung miễn phí.
- Drupal cho phép người quản trò hệ thống tạo và tổ chức dữ liệu, tùy chỉnh cách trình bày, tự
động hóa các tác vụ điều hành và quản trò hệ thống.
- Drupal có cấu trúc lập trình rất tinh vi, dựa trên đó, hầu hết các tác vụ phức tạp được giải
quyết với rất ít đọan code.
- Drupal còn đựơc gọi là “Khung sườn phát triển ứng dụng web’ vì kiến trúc thông minh và


uyển chuyển của nó.
- Được chạy trên rất nhiều môi trường khác nhau như : Windows, Mac OS X, Linux,
FreeBSD,OpenBSD và các môi trường hổ trợ máy phục vụ web Apache (Phiên bản 1.3+)
hoặc IIS(phiên bản 5+) có hổ trợ ngôn ngữ PHP (4.4.4+)
- Drupal kết nối với cơ sở dữ liệu MySQL hoặc postgreSQL để lưu nội dung và các thiết lập.
1.2 Lịch sử ra đời

-

Đầu tiên, nó được Dries Buytaert, một lập trình viên mã nguồn mở, tạo ra theo dạng một
hệ thống bảng tin. Đến năm 2001, Drupal trở thành một cơng trình nguồn mở. Drupal,
trong tiếng Anh, được chuyển ngữ từ từ "druppel" của tiếng Hà Lan là "giọt nước".

-

Từ tháng bảy 2007 đến tháng sáu năm 2008, mã nguồn Drupal đã được tải về từ website
drupal.org hơn 1,4 triệu lần. Hiện nay, có một cộng đồng rộng lớn đang giúp đỡ phát triển
Drupal.

-

Tháng giêng năm 2009, Drupal 6.9, phiên bản mới nhất, đã được cơng bố.

-

Hiện nay đã có phiên bản 7.x

1.3.Tính năng
-


Hạt nhân của Drupal là node với cấu trúc đơn giản. Để phát triển các kiểu nội dung phức
tạp, mỗi node sẽ được liên kết với một nội dung có kiểu khác nhau. Node được quản lí
nhờ hệ thống taxonomy cực mạnh, đây cũng là đặc trưng của Drupal. Người dùng Gmail,
Flickr, Wordpress, Yahoo! 360°... ắt hẳn quen với khái niệm “tag” (đơi khi gọi là label),
và khái niệm rất hiện đại này đã có trong Drupal ! Khái niệm tag được gọi là “term” trong
Drupal, được tổ chức có cấu trúc (chia nhiều cấp). Ngồi ra, trong taxonomy còn có khái
niệm “vocabulary” cho phép chia term thành các lớp khơng giao nhau. Thí dụ một node
được gắn một term thuộc vocabulary "Tháng" (gồm 12 term) và các term thuộc
vocabulary "Chủ đề".

GVHD: Th.S Văn Thiên Hoàng

Trang 2


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal
-

Drupal được xây dựng để giúp đỡ cho nhà phát triển. Hệ thống hook đa dạng giúp người
lập trình can thiệp vào mọi hoạt động mà khơng phải sửa bất kì dòng lệnh nào của nhân
hay các phần khác - điều này trái ngược với Joomla!.

-

Ngồi ra, cơng nghệ của Drupal thường mới hơn Joomla!, thí dụ như thiết kế của Drupal
khơng dùng bảng (table) trong khi ở Joomla! thì bảng xuất hiện ở mọi nơi (những viên
gạch đầu tiên của Joomla! được xây dựng khi các chuẩn Web chưa ra đời).

-


Triết lí “khơng tương thích ngược” của Drupal làm cho module phải được viết riêng cho
từng phiên bản 4.x, 5.x và 6.x (tại cùng một thời điểm, Drupal chỉ hỗ trợ 2 phiên bản mới
nhất). Điều này cũng có mặt trái: nhiều người e ngại phải nâng cấp liên tục khi dùng
Drupal.

-

Ở Việt Nam hiện nay Drupal ít được phổ biến vì nó tương đối khó sử dụng. Cộng đồng
Drupal Việt Nam chỉ mới manh nha những bước đi đầu tiên sau khi Drupal vượt qua
Joomla! trong cuộc thi CMS nguồn mở tốt nhất do Packt tổ chức.

2.Cài đặt
Bứơc 1: Tạo Sql Database

. Đường dẫn của phpmyadmin thường là http://localhost/phpmyadmin/
Trong ơ Creat new database, ta nhập tên bất kỳ SQL database bạn muốn khởi tạo. Ở đây tơi đặt
tên là drupalblog

Bước 2:
GVHD: Th.S Văn Thiên Hoàng

Trang 3


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal



Copy file default.settings.php ra 1 file có tên là settings.php. File này sẽ ghi lại các thơng
số thiết lập trong q trình cài đặt tiếp theo đây.

Tiếp theo truy cập vào đường dẫn http://localhost/drupalblog để tiến hành các bước cấu
hình cho website Drupal. Màn hình giao diện có dạng như sau:

Click chọn Install Drupal In English để sang bước tiếp theo.

GVHD: Th.S Văn Thiên Hoàng

Trang 4


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal


Màn hình cài đặt có dạng như sau:

. Với Database name là tên SQL database
Bước 3:
Tiếp theo ta chờ Script của Drupal ghi các dữ liệu mặc định lên Database(mất chừng vài giây).
Sau đó phần cài đặ sẽ tự động đến với phần cấu hình các thơng tin ban đầu của Site.

GVHD: Th.S Văn Thiên Hoàng

Trang 5


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal

Ở phần này, cần chú ý đến phần thơng tin Username là tên tài khoản quản trị chính. Và phần
password là mật khẩu của tài khoản quản trị chính. Các phần thơng tin khác có thể điền tùy ý, và


GVHD: Th.S Văn Thiên Hoàng

Trang 6


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal
thay đổi dễ dàng trong phần quản trị Drupal sau này. Click vào nút Save and Continue để đến
bước tiếp theo
Nếu q trính cài đặt thành cơng, Drupal sẽ hiện lên dòng thơng báo:
Drupal installation complete
Congratulations, Drupal has been successfully installed.

3.Giới thiệu một số module hệ thống
3.1 Aggreagator
-

Aggreagator có khả năng đi lấy tin RSS từ các website khác, lưu lại trong CSDL, rồi trình bày ra giao
diện người dùng. Các nguồn tin RSS có thể được phân mục theo 'Category'.

3.2 Block
-

Khi module này được kích họat. Người sử dụng website có thể tạo các blog entry cho mình.Ví dụ:
thì ( Với 1 là mã số thành viên)

-

Mỗi Block là một khối nội dung bao gồm các thuộc tính:








Tên
Tiêu đề
Nội dung (Có thể sử dụng uyển chuyển với HTML,PHP code..)
Vò trí
Độ nặng
Các dạng trình bày.

3.3 Blog API
-

Khi người dùng website dùng 1 công cụ nào đó để tạo blog entry(ví dụ Google Docs). Blog API
s ẽ đứng ra đảm nhận vai trò trung gian, nhận dữ liệu, lưu vào CSDL.

3.4 Book
-

Khi người dùng website dùng 1 công cụ nào đó để tạo blog entry(ví dụ Google Docs). Blog API
s ẽ đứng ra đảm nhận vai trò trung gian, nhận dữ liệu, lưu vào CSDL.

-

Với module này, người dùng có thể tạo các trang nội dung được đánh chỉ mục rõ ràng.Module
này rất thích hợp để làm tài liệu hướng dẫn

GVHD: Th.S Văn Thiên Hoàng


Trang 7


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal
3.5 Contact
-

Người dùng có thể dùng chức năng của module này để gửi mail cho quản lý hay 1 thành viên nào
đó của website
3.6 Locale
-

Module này giúp người dùng cài đặt nhiều ngôn ngữ khác ngòai bản tiếng anh mà drupal cung
cấp.
- Cách cài đặt
a. Tải file ngôn ngữ mà mình cần “*.po”
b. Bật module Locale lên
c. Vào configuration -> Localzation, vào tab Import và import ngôn ngữ mình cần .
3.7 Drupal
-

Module này cung cấp tính năng đăng nhập liên website. Thành viên ở website 1 có thể đăng
nhập vào website nếu cả 2 cùng sử dụng module drupal .
3.8 User
- Module xử lý các chức năng liên quan đền người dùng như đăng ký, đăng nhập …
3.9 Forum
-

Tạo diễn đàn thảo luận.

Ngòai ra drupal còn có rất nhiều module được chia sẽ ở trang chủ drupal.org, tùy theo nhu cầu và
mục đích ta có thể sử dụng.

3.10

-

Node

Các nội dung mà người lưu trữ đa số được lưu dưới dạng node (blog entry, book page, forum
topic, page content, article, ...). Mỗi một node có các thuộc tính cơ bản mà bạn nên nắm:
Kiểu nội dung (content type): thuộc tính này nhằm phân biệt node nào là 'forum topic', node
nào là 'book page', ...
Quyền hạn: Ứng với mỗi kiểu nội dung, webmaster có thể giới 'quyền tạo ra', 'quyền chỉnh
sửa' cho một số nhóm người dùng nhất định.
Tác giả: Mỗi một node sẽ có một và chỉ một tác giả.
Thời điểm tạo: thời điểm mà node được tạo ra
Thởi điểm chỉnh sửa cuối cùng
Tiêu đề: Tiêu đề của node. Thí dụ, tiêu đề của một forum node cũng là tiêu đề của 'luồng thảo
luận' đó.
Nội dung chính.
Workflow: Mỗi một node sẽ có một dòng chảy của nó. Dựa vào dòng chảy của một node, hệ
thống có thể biết được một node đã được xuất bản hay chưa, khi đã được xuất bản thì có

GVHD: Th.S Văn Thiên Hoàng

Trang 8


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal

được trình bày ra trang chính hay khơng, có được cố định ở vị trí trên cùng đối với các node
khác hay khơng, ...

4.So sánh Joomla và drupal
Joomla

Drupal

Tiền thân của Joomla! là Mambo, một sản phẩm của

Drupal xuất phát từ một diễn đàn viết bởi Dries
Buytaert (hiện đang là Nghiên cứu sinh tại Bỉ), được
chuyển thành sản phẩm nguồn mở năm 2001. Cho đến
nay, Buytaert vẫn lãnh đạo việc phát triển của dự án.

Miro. Năm 2002, song song với bản thương mại
hóa, Miro cho phát hành Mambo Open Source (gọi
tắt là MOS, chữ thường thấy trong mã nguồn
Mambo và cả Joomla! cho đến tận năm 2008 này).
Đến năm 2005, Mambo bước vào giai đoạn chín mùi
và giành nhiều giải thưởng lớn như là "Giải pháp
nguồn mở tốt nhất" và "Giải pháp hồn hảo cho
cơng nghiệp" tại LinuxWorld. Tuy nhiên, đến cuối
tháng 8/2005, do bất đồng với Miro, tất cả thành
viên trong nhóm phát triển Mambo đồng loạt rời
cơng ty, lập ra nhóm “Open Source Matters”. Họ xây
dựng thương hiệu mới “Joomla!” dựa trên Mambo
và phát hành lại vào gần một tháng sau. Joomla! 1.0
ra đời
Joomla! thực sự dễ dùng. Giao diện quản trị (back

end) bắt mắt, việc cài đặt các phần mở rộng chỉ đơn
giản là tải lên và chạy chương trình cài đặt. Theo
triết lí của Joomla!, đơn vị dữ liệu cơ bản là content
item (ở bản 1.5 đổi thành article) chứa trong
category, bản thân category được chứa trong
section. Như vậy dữ liệu trong Joomla! tổ chức
thành 3 cấp.
Cách tổ chức này rất logic và khơng gây rắc rối cho
người dùng mới

GVHD: Th.S Văn Thiên Hoàng

Hạt nhân của Drupal là node với cấu trúc đơn giản. Để
phát triển các kiểu nội dung phức tạp, mỗi node sẽ
được liên kết với một nội dung có kiểu khác nhau.
Node được quản lí nhờ hệ thống taxonomy cực mạnh,
đây cũng là đặc trưng của Drupal. Người dùng Gmail,
Flickr, Wordpress, Yahoo! 360°... ắt hẳn quen với khái
niệm “tag” (đơi khi gọi là label), và khái niệm rất hiện
đại này đã có trong Drupal ! Khái niệm tag được gọi là
“term” trong Drupal, được tổ chức có cấu trúc (chia
nhiều cấp). Ngồi ra, trong taxonomy còn có khái niệm
“vocabulary” cho phép chia term thành các lớp khơng
giao nhau. Thí dụ một node được gắn một term thuộc
vocabulary "Tháng" (gồm 12 term) và các term thuộc
vocabulary "Chủ đề".

Trang 9



Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal

Joomla! hiện đang rất phổ biến ở Việt Nam bởi tính
dễ dùng của nó. Ngồi ra, Joomla! đáp ứng được u
cầu quan trọng nhất để xây dựng nhanh một
website: có rất nhiều template (giao diện) có sẵn, cả
miễn phí lẫn thương mại, nhiều template có chất
lượng rất tốt.

Drupal được xây dựng để giúp đỡ cho nhà phát triển.
Hệ thống hook đa dạng giúp người lập trình can thiệp
vào mọi hoạt động mà khơng phải sửa bất kì dòng lệnh
nào của nhân hay các phần khác - điều này trái ngược
với Joomla!. Ngồi ra, cơng nghệ của Drupal thường
mới hơn Joomla!, thí dụ như thiết kế của Drupal
khơng dùng bảng (table) trong khi ở Joomla! thì bảng
xuất hiện ở mọi nơi (những viên gạch đầu tiên của
Joomla! được xây dựng khi các chuẩn Web chưa ra
đời)

Joomla! khơng có nền tảng để hỗ trợ các kiểu dữ
liệu phức tạp hơn. Một nhược điểm khác là Joomla!
được thiết kế dành cho người dùng cuối, nên khơng
cung cấp nhiều phương tiện can thiệp vào hoạt
động bên trong.

Triết lí “khơng tương thích ngược” của Drupal làm
cho module phải được viết riêng cho từng phiên bản
4.x, 5.x và 6.x (tại cùng một thời điểm, Drupal chỉ hỗ
trợ 2 phiên bản mới nhất). Điều này cũng có mặt trái:

nhiều người e ngại phải nâng cấp liên tục khi dùng
Drupal.
Ở Việt Nam hiện nay Drupal ít được phổ biến vì nó
tương đối khó sử dụng. Cộng đồng Drupal Việt Nam
chỉ mới manh nha những bước đi đầu tiên sau khi
Drupal vượt qua Joomla! trong cuộc thi CMS nguồn mở
tốt nhất do Packt tổ chức.

GVHD: Th.S Văn Thiên Hoàng

Trang 10


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal

GVHD: Th.S Văn Thiên Hoàng

Trang 11


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal

Phần II: ỨNG DỤNG
1. Tính năng chính website
u cầu:
a) Đối với Khách hàng
 Khách hàng có thể xem và tìm kiếm các sp. Xem sản phẩm, Nhấn “Add to Cart” để mua sản
phẩm.Sau đó vẫn có thể chỉnh sửa và cập nhật lại sản phẩm.

Hình 1: Sản phẩm demo trên website

 Mua và thanh tốn sản phẩm.

Hình 2: Giỏ hàng
 Thay đổi thơng tin cá nhân
GVHD: Th.S Văn Thiên Hoàng

Trang 12


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal

Hình 3: Thay đổi thông tin cá nhân

GVHD: Th.S Văn Thiên Hoàng

Trang 13


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal

 Xem lại thông tin và hòan tất đơn hàng

Hình 4: Xem lại và hoàn tất đơn hàng
b) Đối với người quản trị
 Người quản trị có thể quản lý sp.
 Quản lý user.

GVHD: Th.S Văn Thiên Hoàng

Trang 14



Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal

Hình 5: Quản lý user

GVHD: Th.S Văn Thiên Hoàng

Trang 15


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal

 Quản lý và xử lý đơn hàng.

Hình 6: Quản lý và xử lý đơn hàng
 Xây dựng module cộng thêm tùy chỉnh baner.
 Quản lý các lọai hình thức thanh tốn.

GVHD: Th.S Văn Thiên Hoàng

Trang 16


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal

GVHD: Th.S Văn Thiên Hoàng

Trang 17



Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal

2.Usecase Diagram
2.1 Usecase Diagram: cho customer

2.2 Usecase Diagram: cho manager

GVHD: Th.S Văn Thiên Hoàng

Trang 18


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal

3. Giới thiệu các module tiêu biểu trong website
3.1 CCK
-

CCK giúp kiến tạo ra các nội dung khác nhau mà khơng phải code. Và ta thấy trong
Drupal các CCK có rất nhiều. Ví dụ: trường ảnh, trường video, trường link, …

-

Có rất nhiều các loại CCK giúp ta tạo ra đủ các loại nội dung khác nhau theo ý thích. Ta
chỉ cần vào Drupal.org tải về mà thơi!

3.2 Vies: Giúp lọc & hiển thị nội dung

-


Views là một module rất mạnh mẽ của Drupal, chức năng của nó là liệt kê các node theo
nhiều cách, theo nhiều tùy chọn khác nhau. Với Views, bạn có thể liệt kê các node theo
những cách mà nhân Drupal bó tay:

-

Liệt kê các node có kiểu nội dung là 'Story', đã được tạo bởi người dùng có mã số '9',
trong năm 2005 đến 2006

-

Liệt kê các node có lượt đọc dưới 50 và có ít nhất 1 phản hồi, sắp xếp theo: ngày được
tạo hoặc theo tiêu đề, ...

-

Liệt kê các node có/khơng có từ khóa "abc" trong tiêu đề

GVHD: Th.S Văn Thiên Hoàng

Trang 19


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal
-

Liệt kê 20 node nổi bật trong ngày (trong 20 node được đọc nhiều nhất trong ngày)
3.3 Admin Menu


-

Giúp quản lý Menu một cách dễ nhìn hơn
3.4 E-Comerce

-

Một gói các module hỗ trợ thương mại điện tử trên Drupal.Với E-Commerce ta có thể cung cấp
cho ta đa phần các chứng năng mà 1 website TMĐT cần.
3.5 Panels

-

-

Panels giúp chia nhỏ phần nội dung thành các vùng bé hơn
Drupal trình bày giao diện thành các vùng để chứa các block - block là các phần nội
dung.
Thường thì một theme của drupal có một số vùng cơ bản: header, footer, content, sidebar
left, sidebar right. Các vùng này bao quanh vùng nội dung. Ngồi ra ta có thể thêm nhiều
vùng vào theme tùy ý đó chính là sự uyển chuyển của Drupal. Tuy nhiên ta thấy như các
trang báo họ chia vùng nơi dung (vùng content) thành các phần nhỏ hơn để tiện trình bày.
Ví dụ : chia vùng content thành cột trên đầu chứa tin nóng, hai cột hai bên chứa các
block có các bài viết được phân loại. Việc chia này giống như ta sử dụng layout vậy.
Layout giúp bạn trình bầy nội dung dạng cột báo thì Panels cũng làm nhiệm vụ này cho
phần nội dung(vùng content) của theme. Panels giúp chia phần nội dung thành các phần
nhỏ hơn và trên mỗi phần đó chứa các block nội dung.

4.Cách xây dựng 1 module
Module trong Drupal được xây dựng theo hướng modular và extensbile. Nghĩa là các người

lập trình sẽ phát triển mà khơng thay đổi bộ nhân drupal. Chúng ta sẽ tương tác với nó bằng
cách mở rộng thêm thơng qua xử lý các Events do nhân Drupal phát ra (HOOK).
4.1. Thư mục đặt Module
Người phát triển có thể đặt Module của mình vào một trong các thư mục sau:
../modules/
../site/all/modules/
../site/default/modules/
../site/domain_name/modules/
4.2. Cấu trúc một Module
Cấu trúc của một module có thể gồm nhiều tập tin khác nhau, nhưng phải có ít nhất một tập
GVHD: Th.S Văn Thiên Hoàng

Trang 20


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal
tin tên_module.info và một tập tin tên_module.module, tên này khơng được trùng với các
module đã tồn tại trong hệ thống.
- MyModule.info //Khai báo với Drupal một số thơng tin cơ bản về MyModule
- MyModule.module //Cài đặt cho Module
Ngồi ra còn có thể có thêm các file .INC, .JS, .CSS tùy theo bạn.
4.3. Cấu trúc file .INFO có dạng
name = Tên module.
description = Mơ tả chức năng của module
version = Phiên bản của module
package = Nhóm các chức năng của module. Nếu khơng khai thì mặc định là other.
dependencies = các module phụ thuộc, cách nhau bằng khoảng trống. Nếu module được u
cầu chưa được bật trên hệ thống thì module này khơng thể bật được.

Thí dụ xây dựng file my_module.info như sau:

; $Id: my_module.info,v 1.0 2008/18/9 05:50:55 dries Exp $
name = My_module
description = Display hello string Hello world.
package = Core - optional
version = VERSION
core = 1.x
version = "1.0"
project = "drupal"
4.4. Định nghĩa quyền truy cập
- Việc gán quyền truy cập với các vai trò thuộc về người điều hành site
- Người điều hành có ID = 1 khơng bị ràng buộc bởi quyền truy cập nào
- Mỗi Module có thể định nghĩa cho riêng nó những quyền hạn truy cập khác nhau thơng qua
hàm hook_perm(), kết quả trả về là một mảng, từng phần tử của mảng là một chuổi.
Ví dụ:
/*
* Tên Module là MyModule
* Khai báo 2 quyền truy cập:
* MyModule_View và MyModule_Manage
*/
function MyModule_perm()
{
return array(
'MyModule_View','MyModule_Manage'
GVHD: Th.S Văn Thiên Hoàng

Trang 21


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal
);

}
4.5. Định nghĩa các thao tác
- Mỗi Module phải xử lý được các sự kiện hoặc định nghĩa các sự kiện của riêng nó
- Mỗi thao tác (Sự kiện) cần được phân quyền rỏ ràng
- Việc phân quyền phụ thuộc vào người điều hành
- Mỗi thao tác cần có một URl (path) nhất định. Thí dụ: Khi người duyệt web u cầu trang
Module thực hiện kịch bản.
Thí dụ:
+ Xử lý u cầu: /?q=MyModule/A1
+ Quyền truy cập: MyModule_A1
+ Hàm xử lý sự kiện: MyModule_A1()
+ Tiêu đề trang web lúc này là MyModule-A1
Thí dụ : Tạo file my_module.module như sau:
/**
* Implementation of hook_menu().
*/
function my_module_perm()
{
return array('my_module_menu');
}
function my_module_menu($may_cache) {
// Create an array to hold the menu items we'll define.
$items = array();
if ($may_cache) {
// Define a static menu item.
$items[] = array(
'title' => t('Title of my_module menu'),
'path' => 'my_module_menu',
'callback' => 'my_module_hello',

'access' => TRUE
);
}
return $items;
}

GVHD: Th.S Văn Thiên Hoàng

Trang 22


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal
function my_module_hello() {
return t('Hello World!');
}

5.Xây dựng module + thêm cho website
-

Xây dựng module đảm bảo các chức năng sau: Unload image, Flasg,video banners ...

-

Module hổ trợ cho việc đặt các banner quảng cáo, trình chiếu flash, video quảng bá doanh nghiệp.
-

Module xây dựng với version 5.x-4.x

5.1/ qcbanner.Info
name = q.c.Banner

version = 5.x-4.x-dev
description = Upload image, flash, video banners and displaying theme as system block
dependencies = imagecache
package = @DoAn

5.2/qcbanner.install
/**
* Implementation of hook_install
*/
function acbanner_install () {
db_query ("
CREATE TABLE {acbanner_block} (
delta tinyint(4) NOT NULL,
type varchar(32) NOT NULL,
title varchar(64) NOT NULL,
pid int(10) unsigned NOT NULL,
GVHD: Th.S Văn Thiên Hoàng

Trang 23


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal
data text NOT NULL,
PRIMARY KEY (delta),
KEY type (type)
);
");

db_query ("

CREATE TABLE {qcbanner_item} (
bid int(10) unsigned NOT NULL auto_increment,
type VARCHAR(32) NOT NULL,
title varchar(64) collate utf8_unicode_ci NOT NULL,
status tinyint(1) NOT NULL,
click int(10) NOT NULL,
data text NOT NULL,
weight tinyint(4) NOT NULL,
PRIMARY KEY (bid),
KEY type (type)
)
");

db_query ("
CREATE TABLE {qcbanner_block_items} (
delta int(10) unsigned NOT NULL auto_increment,
bid int(10) unsigned NOT NULL default 0,
PRIMARY KEY (delta, bid),
GVHD: Th.S Văn Thiên Hoàng

Trang 24


Đồ án cơ sở – Tìm hiểu và xây dựng ứng dụng với Drupal
KEY delta (delta),
KEY bid (bid)
)
");

db_query ("

CREATE TABLE {qcbanner_click} (
cid int(10) unsigned NOT NULL auto_increment,
bid int(10) unsigned NOT NULL default '0',
hostname varchar(128) NOT NULL,
timestamp int(11) NOT NULL,
PRIMARY KEY (cid),
KEY bid (bid)
);
");
drupal_set_message ("Created table {qcbanner_click}");

db_query ("
CREATE TABLE {qcbanner_profile} (
pid int(10) unsigned NOT NULL auto_increment,
name varchar(128) NOT NULL,
data text NOT NULL,
PRIMARY KEY (pid),
KEY name (name)
) ENGINE=MyISAM;"
GVHD: Th.S Văn Thiên Hoàng

Trang 25


×