Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 58 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
58
Dung lượng
1,23 MB
Nội dung
TRƯỜNG ………………….
KHOA……………………….
[\[\
Báo cáo tốt nghiệp
Đề tài:
PHÁT TRIỂNỨNGDỤNGDỊCHVỤ
HƯỚNG VỊTRÍTRÊNNỀN DRUPAL
Lời cảm ơn
Trước tiên, tôi muốn gửi lời cảm ơn sâu sắc đến T.S Nguyễn Hải Châu, người đã
hết lòng hướng dẫn tôi trong suốt quá trình thực hiện khóa luận tốt nghiệp.
Tôi xin chân thành cảm ơn các thầy, các cô của trường đại học Công Nghệ đã
cung cấp cho tôi nền tảng kiến thức quý báu và sự giúp đỡ tận tình để tôi có thể hoàn
thành khóa luận của mình.
Tôi cũng muốn cảm ơn các bạn tôi, những người đã giúp đỡ tôi đưa ra giải pháp
lập trình hiệu quả khi thực hiện các thử nghiệm liên quan đến khóa luận này.
Cuối cùng, tôi xin gửi lời cảm ơn đến gia đình và người thân của tôi, những
người đã luôn động viên và giúp đỡ tôi trong suốt quá trình học tập và thực hiện khóa
luận.
Hà Nội, ngày 20 tháng 5 năm 2010
Sinh viên
Đặng Vĩnh Thiêm
i
Tóm tắt khóa luận
Drupal là một hệ quản trị nội dung được sử dụng khá phổ biến trên Internet trong
thời gian gần đây. Với thiết kế mang tính module, Drupal cho phép mở rộng các tính
năng một cách linh hoạt thông qua các module được thêm vào mà không phải thay đổi
mã nguồn của hệ thống.
Trong khoá luận này, chúng tôi tập trung tìm hiểu các kiến thức liên quan đến
việc xây dựng module cho Drupal bao gồm triển khai các hook, làm việc với cơ sở dữ
liệu, thực thi mã JavaScript, xử lý form v v. Đi vào thực nghiệm, chúng tôi đã thiết kế
và cài đặt thành công một module có chức năng tích hợp bản đồ số Google Maps vào
trang web bằng cách sử dụng API do Google cung cấp. Module này hướng tới các đối
tượng website liên quan đến địa danh, địa điểm như website du lịch, tra cứu địa điểm
trên bản đồ
ii
Mục lục
Lời cảm ơn i
Tóm tắt khóa luận ii
Mục lục iii
Mở đầu 1
Chương 1: Tổng quan về Drupal 2
1.1 Giới thiệu về Drupal 2
1.2 Kiến trúc của Drupal 2
1.2.1 Kiến trúc module 3
1.2.2 Các module lõi 4
1.2.3 Hook 5
1.2.4 Giao diện 6
1.3 Các khái niệm cơ bản trong Drupal 6
1.3.1 Node 6
1.3.2 Người dùng (User) 8
1.3.3 Khối và cách thể hiện trang 9
1.3.4 Thực đơn – Menu 10
1.3.5 Form 10
1.3.6 API cơ sở dữ liệu và lược đồ 11
1.4 Hệ thống tệp tin và thư mục của Drupal 11
1.5. Drupal xử lý yêu cầu như thế nào? 13
1.5.1 Vai trò của Web server 13
1.5.2 Quá trình khởi động 13
1.5.3 Xử lý yêu cầu 14
1.5.4 Giao diện hoá nội dung 15
1.6 Công cụ dành cho người pháttriển 15
1.6.1 Module Devel 15
1.6.2 Module Coder 15
iii
Chương 2 - Xây dựng module cho Drupal 17
2.1 File .info và .module 17
2.1.1 File .info 17
2.1.2 File .module 19
2.2 Chú thích trong mã nguồn 19
2.3 Một số hook cơ bản 20
2.4 Định nghĩa một hook mới 24
2.4.1 Cách tạo một hook 24
2.4.2 Sử dụng hook vào các module khác 26
2.5 Một số hàm quan trọng trong thư viện hàm của Drupal 26
2.6 Sử dụng Javascript và AJAX/JSON 28
2.6.1 Giới thiệu về jQuery 28
2.6.2 jQuery hoạt động như thế nào 28
2.6.2.1 Sử dụng bộ lọc ID của CSS 29
2.6.2.2 Sử dụng XPath 29
2.6.3 jQuery trong Drupal 30
2.7 Form API 30
2.7.1 Quá trình thao tác với form 31
2.7.2 Một số thao tác cơ bản 34
2.7.2.1 Tạo form 34
2.7.2.2 Giao diện hoá form 35
2.7.2.3 Kiểm tra dữ liệu 35
2.7.2.4 Gửi form lên trang web 36
2.8 Làm việc với cơ sở dữ liệu 36
2.8.1 Định nghĩa các tham số trong CSDL 36
2.8.2 Một số truy vấn đơn giản 37
2.8.3 Lấy kết quả truy vấn 38
Chương 3: Xây dựng module tích hợp 40
Google Maps vào Drupal 40
iv
3.1 Giới thiệu về Google Maps 40
3.2 Nhúng bản đồ vào trang web 40
3.2.1 Tạo một bản đồ đơn giản 41
3.2.2 Dịchvụ Geocoder - Chuyển đổi giữa địa chỉ và toạ độ 42
3.3 Xây dựng module Google Maps cho Drupal 42
3.3.1 Module Google Maps 42
3.3.1.1 File .info 42
3.3.1.2 File .module 43
3.3.1.3 Tạo thêm trường thông tin cho bài viết 43
45
Kết luận 46
Tài liệu tham khảo 47
Phụ lục A 48
A.1 Cài đặt module Google Maps 48
A.2 Chạy thử chương trình 50
v
Bảng từ viết tắt
Từ viết tắt Cụm từ đầy đủ
URI Uniform Resource Identifier
CVS Concurrent Version System
API Application Programming Interface
CSDL Cơ sở dữ liệu
CMS Content Management System
vi
Mở đầu
Trong thời đại Công nghệ thông tin ngày nay, các dịch vụ và ứng dụng web ngày
càng phát triển. Việc một cá nhân hay tổ chức sở hữu một website, một cổng thông tin
là điều dễ thấy trên Internet. Để thiết kế một trang web phục vụ mục đích riêng, người
dùng có nhiều lựa chọn. Một trong số đó là sử dụng hệ quản trị nội dung sẵn có để tổ
chức và xây dựng các trang thông tin.
Với mục đích đó, chúng tôi đã chọn Drupal, một trong các CMS phổ biến nhất,
để thực hiện nghiên cứu. Sở dĩ chúng tôi chọn CMS này vì đây là một hệ mã nguồn
mở miễn phí, được sử dụng rộng rãi và được cộng đồng mạng pháttriển ngày càng
hoàn thiện.
Drupal có thể được sử dụng trong nhiều mục đích như xây dựng cổng thông tin
trực tuyến, website cá nhân, tổ chức, website thương mại, báo điện tử, thư viện hình
ảnh
Hệ thống Drupal được thiết kế để có thể tuỳ biến theo mong muốn của người
dùng và việc tuỳ biến chỉ được thực hiện bằng cách thêm các module để làm tăng khả
năng của hệ thống mà không thay đổi bộ nhân. Do đó, trong khoá luận này chúng tôi
chú trọng tìm hiểu cách xây dựng module cho Drupal và các vấn đề liên quan.
Chúng tôi hi vọng phần kiến thức tìm hiểu được trong khóa luận sẽ mạng lại
những ý nghĩa tích cực trong thực tiễn.
Ngoài phần mở đầu, bố cục của khóa luận gồm 3 chương sau:
• Chương 1: Trình bày các kiến thức cơ bản về hệ thống Drupal và cách hoạt
động.
• Chương 2: Tìm hiểu cách viết một module trong Drupal.
• Chương 3: Đưa lý thuyết đã trình bày vào thực tế để thiết kế một module cụ
thể.
• Cuối cùng là phần kết luận và hướngpháttriển trong tương lai.
1
Chương 1: Tổng quan về Drupal
1.1 Giới thiệu về Drupal
Drupal là một framework dùng cho pháttriển phần mềm hướng module, một hệ
thống quản trị nội dung miễn phí và mã nguồn mở.
Cũng giống như các hệ thống quản trị nội dung hiện đại khác, 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 lý 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ó thể được giải quyết với rất ít đoạn mã được
viết, thậm chí không cần. Đôi khi, Drupal cũng được gọi là "Framework cho ứngdụng
Web" vì kiến trúc thông minh và uyển chuyển của nó.
Drupal được chạy trên rất nhiều môi trường khác nhau, bao gồm 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 (phiên bản 4.3.3+).
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.
Hình 1.1. Các dịchvụ được sử dụng trong Drupal.
1.2 Kiến trúc của Drupal
Nói một cách ngắn gọn thì Drupal là một hệ quản trị nội dung được viết bằng
ngôn ngữ PHP và sử dụng cơ sở dữ liệu quan hệ để lưu trữ (thông thường là MySQL).
Mặc dù Drupal được viết bằng PHP nhưng lại không sử dụnghướng đối tượng mà sử
dụng kiểu lập trình thủ tục truyền thống. Một trong số lý do đó là khi Drupal ra đời thì
PHP chưa hỗ trợ mạnh về hướng đối tượng. Tuy nhiên, nhìn một cách tổng quát thì
2
Drupal vẫn áp dụng những nguyên lý trong lập trình hướng đối tượng: tính đóng gói,
kế thừa, đa hình
Kiến trúc của Drupal có thể mô tả như biểu đồ dưới đây:
Hình 1.2. Kiến trúc Drupal
Ở trung tâm của kiến trúc là phần nhân gồm một tập các file chứa các đoạn mã
nạp chương trình và các thư viện quan trọng. Thư viện nhân Drupal đóng vai trò như
lớp kết nối các modules. Phần này cung cấp các dịchvụ như kết nối và quản lý cơ sở
dữ liệu, quản lý bộ khung hook, thư viện trừu tượng phục vụ mail và hình ảnh, hỗ trợ
Unicode Mặc dù những thư viện này cung cấp các tính năng quan trọng nhưng sức
mạnh thực sự của Drupal nằm ở kiến trúc kiểu module.
1.2.1 Kiến trúc module
Module là một bộ gồm mã PHP và các file hỗ trợ sử dụng API và kiến trúc của
Drupal tích hợp các thành phần mới vào trong framework của Drupal.
Cơ chế module của Drupal được thiết kế để cung cấp một cách thức đồng nhất
giúp người pháttriển mở rộng khả năng của hệ thống.
Những file tạo nên module được gộp vào một vítrí nhất định trong cấu trúc thư
mục của Drupal. Khi Drupal cần thông tin về module nào đó, nó sẽ tìm trong những
thư mục này. Mỗi module nằm ở một thư mục riêng và có ít nhất là 2 file - một file
cung cấp thông tin về module và một hay nhiều file khác chứa mã PHP thực hiện chức
3
[...]... chất là chuyển dữ liệu mà Drupal nhận được, dữ liệu thông qua xử lý hay dữ liệu tự tạo ra sang dạng HTML Drupal sẽ sử dụng giao diện mà người quản trị chọn trước để thiết kế trang web đúng với yêu cầu và chuyển kết quả HTML cho trình duyệt để hiển thị tới người dùng 1.6 Công cụ dành cho người pháttriểnDrupal đưa ra một số công cụ đặc thù dành cho người pháttriển module Drupal Những công cụ này được... phương thức ảo Giống như giao diện trong lập trình hướng đối tượng, bản triển khai (bao gồm tên, các tham số và giá trị trả về) phải khớp với phần khai báo của hook Khác với giao diện, người pháttriển module có thể chọn những hook nào sẽ sử dụng và những hook nào được bỏ qua Drupal không yêu cầu tất cả các hook đã định nghĩa phải được triển khai và sử dụng Module có thể định nghĩa các hook riêng và module... Block editor để chỉ định vịtrí đặt các khối trong một trang giao diện: 9 Hình 1.3.3 Các vịtrí đặt Blocks Những phần được đánh dấu màu vàng ở hình trên cho thấy các vịtrí mà khối có thể được đặt Việc định nghĩa một block thực chất là chọn nội dung để hiển thị và chuyển đến công cụ định dạng phù hợp 1.3.4 Thực đơn – Menu Một khái niệm liên quan chặt chẽ đến khối là Thực đơn Drupal có một hệ thống thực... biệt trong kiến trúc của Drupal là các module có thể tác động với nhau một cách dễ dàng Bằng cách sử dụng cơ chế hook, dịchvụ mà các module khác nhau cung cấp có thể kết hợp với nhau để tạo nên các tính năng mạnh hơn mà không cần phải viết lại một lượng lớn mã nguồn 4 1.2.3 Hook Cơ chế hook là một khái niệm rất quan trọng trong việc pháttriển module cho Drupal Cơ chế này giúp Drupal biết được phải gọi... to access !url.’ và muốn hàm t() dịch nghĩa xâu này, đồng thời thay thế URL tương ứng vào vịtrí của !url Lúc đó, hàm t() được sử dụng như sau: t(‘Trying to access !url.’, array(‘!url’=>’http:///example.com’)); Trong ví dụ trên, t() nhận 2 tham số: xâu cần dịch nghĩa, và một mảng liên hợp ánh xạ cờ giữ chỗ và giá trị thay thế Nếu ngôn ngữ lựa chọn là tiếng Anh, hàm trên sẽ cho ra kết quả: Trying to... phức tạp được sử dụng với mục đích chính là xây dựng điều hướng cho trang web Ví dụ, hình trên thể hiện thực đơn chính với các mục Code review, My account, Create content Thực đơn này được khởi tạo động bởi hệ thống thực đơn của Drupal Hệ thống này còn thực hiện chức năng như một công cụ dùng để ánh xạ các URL tới chương trình điều khiển riêng Bằng cách sử dụng API thực đơn, người pháttriển có thể liên... cách toàn diện và người pháttriển có thể can thiệp sâu hơn vào hệ thống Mặc định, cấu trúc thư mục của Drupal được sắp xếp như sau: Hình 1.4.a Hệ thống tệp tin và thư mục của Drupal Thư mục files sử dụng cho các logo tuỳ biến, hình ảnh đại diện người dùng hoặc chứa các file đa phương tiện được tải lên website Thư mục này phải được đặt quyền đọc và ghi bởi web server phục vụDrupal 11 Thư mục includes... ra bởi một vài file - một file định nghĩa cách trình bày, một file thông tin về giao diện và một vài hình ảnh Bằng cách sử dụng mẫu có sẵn của Drupal, người phát triển có thể tạo ra một giao diện tùy chỉnh mà không tốn nhiều thời gian Một giao diện cũng có thể phát triển để đáp ứng những nhu cầu cao hơn Những khuôn mẫu tùy biến, thường được viết bằng ngôn ngữ PHP dành cho mẫu, có thể tái cấu trúc các... module chủ yếu, có thể lấy từ trang web của Drupal, là module Devel và module Coder 1.6.1 Module Devel Module này cung cấp một số công cụ đặc biệt hữu dụng cho việc phát triển Drupal, gồm có quản lý bộ nhớ cache, công cụ dò lỗi SQL, công cụ thăm dò, công cụ tham chiếu API Thông tin chi tiết về module này có ở: http:/ /drupal. org/project/devel Các công cụ trên được hiển thị dưới dạng các mục trong một... cho biết module này yêu cầu phiên bản Drupal 6, bao gồm các phiên bản nâng cấp từ bản 6 Trong nhiều trường hợp, Drupal sẽ tự động đặt giá trị này một cách hợp lý, nhưng những người phát triển làm việc với CVS (Concurrent Version System - hệ thống quản lý phiên bản ứng dụng) được khuyến cáo nên tự mình đặt giá trị cho trường core Chỉ dẫn cuối cùng trong file info trên là php, cho biết phiên bản tối thiểu .
[[
Báo cáo tốt nghiệp
Đề tài:
PHÁT TRIỂN ỨNG DỤNG DỊCH VỤ
HƯỚNG VỊ TRÍ TRÊN NỀN DRUPAL
Lời cảm ơn
Trước tiên, tôi muốn. và hướng phát triển trong tương lai.
1
Chương 1: Tổng quan về Drupal
1.1 Giới thiệu về Drupal
Drupal là một framework dùng cho phát triển phần mềm hướng