Xây dựng một website giới thiệu các thông tin về dịch vụ
Trang 1LỜI CẢM ƠN.
Tục ngữ Việt Nam có câu “không thầy đó mày làm nên” Vì lẽ đó, khikhóa luận tốt nghiệp này hoàn thành chúng tôi chân thành biết ơn những cônglao cao quý của thầy cô đã dành cho chúng tôi suốt những năm học qua
Xin chân thành gửi lời cảm ơn đến quý thầy cô khoa Công Nghệ ThôngTin đã tận tình giảng dạy chúng tôi trong hơn bốn năm học vừa qua Đặc biệt,xin gửi lời cảm ơn tới thầy Ths Đặng Nhân Cách vì sự chỉ bảo, góp ý tận tình vàluôn tạo mọi điều kiện thuận lợi nhất để chúng tôi hoàn thành kịp tiến độ
Xin chân thành gửi lời cảm ơn đến các anh em trong công ty TiBi đã nhiệttình hỗ trợ thắc mắc và cung cấp nhiều tài liệu bổ ích để chúng tôi hoàn thành tốtkhóa luận của mình
Cảm ơn những người thân và gia đình đã tạo điều kiện thuận lợi nhất,giúp đỡ trong suốt quá trình nghiên cứu và hoàn thành khóa luận
Cảm ơn tập thể lớp CN07B và tập thể lớp CN07A, nguồn cổ vũ tinh thầncho chúng tôi suốt hơn bốn năm học, cũng như quá trình làm khóa luận
Trang 2NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
NHẬN XÉT CỦA HỘI ĐỒNG PHẢN BIỆN
Trang 3
CHƯƠNG 1: GIỚI THIỆU 6
1.1 Lý do chọn đề tài 6
1.2 Mục tiêu của đề tài 7
1.3 Đối tượng nghiên cứu 7
1.4 Phạm vi nghiên cứu 7
CHƯƠNG 2: TỔNG QUAN MÔ HÌNH GROUPON 7
2.1 Nguồn gốc ra đời 7
2.2 Khái niệm 8
2.3 Bản chất mô hình groupon 8
2.4 Ưu điểm 8
2.5 Khó khăn của mô hình groupon tại Việt Nam 8
2.6 Hướng khắc phục 9
2.7 Lĩnh vực nghiên cứu 9
Trang 4CHƯƠNG 3: CƠ SỞ LÝ THUYẾT 9
3.1 Ngôn ngữ lập trình PHP 9
3.2 MySQL 11
3.3 Framework 12
3.3.1 Khái niệm 12
3.3.2 Ưu điểm của framework 12
3.3.3 Các thành phần của framework 12
3.3.4 Mô hình MVC 12
3.4 Drupal là gì? 14
3.4.1 Khái niệm 14
3.4.2 Cài đặt drupal 15
3.4.3 Các thành phần chính trong drupal 17
3.4.4 Các module 26
3.5 Tính năng của drupal 28
3.5.1 Quản lý thành viên 29
3.5.3 Blogging 29
3.5.4 Nền tảng(platform) 30
3.5.5 Quản trị và phân tích 30
3.5.6 Tính năng cộng đồng 30
3.5.7 Hiệu năng và khả năng mở rộng 30
CHƯƠNG 4: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 31
4.1 Mô tả hệ thống thương mại điện tử mô hình groupon MySQL 31
4.2 Xác định các Actor 33
4.3 Xác định các UseCace 33
4.4 Xây dựng Usecase – Diagram 34
4.5 Mô tả các use case 35
4.5.1 Đăng nhập 35
4.5.2 Gửi bình luận 36
4.5.3 Cập nhật thông tin cá nhân 37
Trang 54.5.4 Xem lịch sử đơn hàng 38
4.5.5 Xem du lịch hôm nay 39
4.5.6 Xem du lịch gần đây 39
4.5.7 Xem chi tiết deal 40
4.5.8 Đăng kí nhận giá tốt 41
4.5.9 Đăng kí thành viên 41
4.5.10 Tạo giỏ hàng 43
4.5.11 Cập nhật giỏ hàng 43
4.5.12 Quản lý nội dung 44
4.5.13 Quản trị thành viên 45
4.5.14 Quản trị email nhận giá tốt 46
4.6 Biểu đồ tuần tự 47
4.6.1 Đăng ký nhận giá tốt 48
4.6.2 Xem thông tin chi tiết deal 49
4.6.3 Tạo giỏ hàng 50
4.6.4 Cập nhật giỏ hàng 50
4.6.5 Đăng ký thành viên 52
4.6.6 Đăng nhập 54
4.6.7 Bình luận 54
4.6.8 Quản trị email 56
CHƯƠNG 5: XÂY DỰNG WEBSITE 58
5.1 Sitemap 58
5.2 Thiết kế giao diện với drupal 58
5.2.1 Cài đặt giao diện 59
5.2.2 Xây dựng giao diện 59
5.3 Giao diện các trang liên kết 64
5.3.1 Du lịch hôm nay 64
5.3.2 Du lịch gần đây 65
5.3.3 Liên hệ 66
Trang 65.3.4 Đăng kí thành viên 67
5.3.5 Thông tin cá nhân 68
5.3.6 Chi tiết deal 69
5.3.7 Giỏ hàng 70
5.3.8 Đơn hàng của tôi 71
CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 72
6.1 Kết luận 72
6.2 Hướng phát triển 73
TÀI LIỆU THAM KHẢO 74
CHƯƠNG 1: GIỚI THIỆU
1.1 Lý do chọn đề tài
Trong những năm gần đây với sự phát triển vượt trội của khoa học kỹ thuật đặt biệt là công nghệ thông tin, cùng với những ứng dụng của nó trong các lĩnh vực đã đáp ứng phần lớn những nhu cầu của con người Trong đó thì lĩnh vực áp dụng quản lý và mua bán bằng máy tính thay cho việc quản lý và mua bán thủ công ở các doanh nghiệp, công ty, cá nhân là thực sự cần thiết
Do đó nhu cầu “giới thiệu thông tin về các sản phẩm, dịch vụ đến với khách hàng” là không thể thiếu được đối với mọi doanh nghiệp và công ty, cửa hàng vừa và nhỏ
Cùng với việc Internet đang nhanh chóng lan rộng khắp toàn cầu thì Website thương mại sẽ trở thành công cụ chủ yếu và đắc lực cho việc kinh doanh mua bán trên phạm vi toàn cầu Đồng thời việc sử dụng mô hình nhiều người tiêu dùng cùng mua hàng hóa, dịch vụ trực tuyến tại cùng một thời điểm để hưởng ưu đãi đã trở thành một trào lưu trong những năm gần đây ở Việt
Trang 7Nam Các công ty đạt được mục tiêu quảng cáo trực tuyến với chi phí thấp,người tiêu dùng thì được mua với giá rẻ
Chương trình xây dựng website chạy trên hệ điều hành WinXp, Winserver,Linux sử dụng ngôn ngữ và xử lý dữ liệu như PHP, HTML, Javascript,XML, CSS và hệ quản trị cơ sở dữ liệu MySQL Bên cạnh việc sử dụngngôn ngữ PHP, sự phát triển của các mã nguồn mở ngày càng phong phúgiúp người lập trình tận dụng những cái có sẵn để phát triển thêm nhờ sửdụng framework như Zend Framework, Codelgniter Framework, CakePHPFramework, Drupal Framework
1.2 Mục tiêu của đề tài
Xây dựng một website giới thiệu các thông tin về dịch vụ, giúp ngườimua chọn lựa những sản phẩm yêu thích với giá cả ưu đãi nhưng chất lượngtốt nhất Đồng thời website hướng khách hàng đến hình thức thanh toán trựctuyến và các biện pháp giao nhận hợp lý, thuận tiện cho khách hàng và cảnhà cung cấp dịch vụ
1.3 Đối tượng nghiên cứu
1.4 Phạm vi nghiên cứu.
Nghiên cứu mô hình Groupon tại Việt Nam
Nghiên cứu ngôn ngữ lập trình PHP
Nắm vững ngôn ngữ lập trình HTML, CSS, Javacript
Sử dụng thành thạo cơ sở dữ liệu My SQL
Cài đặt và sử dụng Drupal
Tìm hiểu mô hình MVC trong Drupal
Thiết kế giao diện (theme) cho Framework Drupal
Tìm hiểu ứng dụng các module mà Drupal hỗ trợ
Nghiên cứu phát triển các module mà Drupal cms không hỗ trợ
Trang 8CHƯƠNG 2: TỔNG QUAN MÔ HÌNH GROUPON
2.3 Bản chất mô hình groupon
Trang 9Bản chất của mô hình Groupon là Win-Win-Win, tức là khách hàng đượclợi (giảm giá), doanh nghiệp đạt được mục tiêu quảng cáo trực tuyến vàGroupon hưởng % doanh thu.
Các nhà cung cấp đồng ý đưa ra các siêu khuyến mãi, siêu giảm giá tới60%-70% thậm chí là trên 90%, mục đích chủ yếu là để quảng cáo, thu hút
sự chú ý, quan tâm của khách hàng Nếu số người mua không đạt được sốngười yêu cầu tối thiểu thì hoạt động mua theo nhóm đó coi như hủy bỏ
2.4 Ưu điểm
Được sự chấp nhận của người mua
Đáp ứng nhu cầu mua hàng giá rẻ trong thời buổi giá cả hàng hóa, dịch
vụ tăng cao
Thúc đẩy sự cạnh tranh về giá cả của nhà cung cấp
Giúp nhà cung cấp đạt được mục tiêu quảng bá sản phẩm với chi phíthấp
Giải phóng lượng hàng tồn
2.5 Khó khăn của mô hình groupon tại Việt Nam
Thanh toán trực tuyến chưa được chú trọng vì thói quen mua sắm củangười dân
Tìm nhà cung cấp để đưa sản phẩm lên trang web
Người dân Việt Nam vẫn chưa thực sự tin tưởng vào việc mua hàng trênmạng, nên vẫn còn tâm lý dè chừng
Khâu quản lý chất lượng dịch vụ cho khách hàng mua phiếu giảm giáchưa được đảm bảo, và khó để quản lý việc cung cấp dịch vụ của các nhàcung cấp
2.6 Hướng khắc phục
Hướng khách hàng chuyển sang sử dụng phương thức thanh toán trựctuyến, đề ra các chương trình giảm giá khuyến mãi nếu sử dụng phươngthức này Đồng thời sử dụng hình thức nạp xu, nạp card điện thoại vào tàikhoản khách hàng tại groupon
Trang 10 Tư vấn cho nhà cung cấp hiểu rõ về những lợi ích khi họ tham gia dịch vụGroupon, đó là cách nhanh và ngắn nhất để họ có thể quảng bá thươnghiệu và sản phẩm của mình đến tận người tiêu dùng với chi phí thấp nhất.Ngoài ra giới thiệu một số nhà cung cấp đã từng thành công khi tham giadịch vụ Groupon.
Không ngừng nâng cao chất lượng thương hiệu để tạo uy tín bằng một sốcách như : Thỏa thuận rõ ràng các điều khoản về đảm bảo chất lượng sảnphẩm và dịch vụ với nhà cung cấp khi kí kết hợp đồng
Treo slogan về chất lượng trên website
Đẩy mạnh quảng cáo dịch vụ trên các mạng xã hội như facebook, zingme,yahoo và các cổng thông tin thương mại lớn khác
Quảng bá thông qua tờ rơi, truyền thông đại chúng
Tạo hộp thư phản hồi từ khách hàng về chính sản phẩm, dịch vụ mà họtham gia để biết rõ phần nào về chất lượng mà nhà cung cấp đưa đến chokhách hàng
PHP là ngôn ngữ tạo script (kịch bản) cấp cao thông dụng được rất nhiều
tổ chức và nhà phát triển sử dụng Ban đầu được Rasmus Lerdurf phát triển
Trang 11dưới dạng một dự án Perl nhỏ vào cuối năm 1995, mục đích là một phươngtiện nhằm hổ trợ phát triển trang chủ của ông nên được đặt tên là PersonalHome Page (PHP) Tools.
Khi dự án nhỏ đã phát triển, ông phân phát những thay đổi của mình lênInternet dưới dạng một Open Source và nhận được những cải tiến Sau đó,ngôn ngữ đã được đổi tên thành từ ghép hiện nay PHP: HypertextPreprocessor bởi Zeev Suraski và Gutmans sau khi họ đã viết lại parser (bộphận phân tích cú pháp) vào năm 1997 Phần mềm tiếp tục phát triển và bâygiờ hình thành nền PHP toàn diện ngày nay
PHP cung cấp một ngôn ngữ lập trình vững chắc và định nghĩa rõ ràng,bao gồm sự hỗ trợ ngôn ngữ hướng đối tượng, các điều kiện, xử lý file, sốhọc và nhiều hơn nữa Ngôn ngữ PHP hình thành có những ngữ nghĩa tương
tự như ngữ nghĩa của một ngôn ngữ tạo script shell kết hợp với những thànhphần dễ dàng hơn của ngôn ngữ C
PHP hỗ trợ rộng rãi nhiều nhu cầu chẳng hạn như cookie, form, session,file include, socket mạng, email, LDAP, IRC và nhiều hơn nữa Sự hổ trợ cơ
sở dữ liệu bao gồm không chỉ MySQL mà còn nhiều ngôn ngữ khác nhưPostgresSQL, Oracle, MS SQL, dBase, Sybase và DB2 Ngoài khả năng làngôn ngữ tạo Script Web, PHP cũng được sử dụng làm ngôn ngữ tạo ScriptShell để quản lý các máy tính cũng như tạo các ứng dụng desktop
Nhúng Code PHP Vào Trong Trang Web
Code php trong HTML nằm trong cú pháp sau: <php …?>
Trang 12Hình 2-1: phiên bản PHP 5.2.0.
3.2 MySQL
SQL (Structured Query Language - ngôn ngữ truy vấn mang tính cấu
trúc) Là một loại ngôn ngữ máy tính phổ biến để tạo, sửa, và lấy dữ liệu từmột hệ quản trị cơ sở dữ liệu quan hệ Ngôn ngữ này phát triển vượt xa sovới mục đích ban đầu là để phục vụ các hệ quản trị cơ sở dữ liệu đối tượng -quan hệ
dữ liệu MySQL.
MySQL là một server cơ sở dữ liệu quan hệ mạnh mẽ và toàn diệnRelational Database Management Systems (RDBMS) được phát triển đầutiên bởi David Axmark, Allan Larsson và Michael “Monty” Widenius
Trang 13MySQL cung cấp phương thức để lưu trữ và truy xuất lượng thông tinlớn và phức tạp MySQL dựa trên cơ sở SQL (Structure Query Language).Ngoài Linux, MySQL cũng chạy trên các hệ điều hành khác, như Windows,Mac OS X hay BSD và những loại hệ điều hành UNIX khác.
MySQL cũng hỗ trợ nhiều số ngôn ngữ lập trình để truy cập và truy vấn
cơ sở dữ liệu bao gồm: PHP, Python, Perl, C, C++ và java Sự hỗ trợ nhiềungôn ngữ chỉ hữu dụng khi viết các module và ứng dụng khác nhau trongtương lai
Cú pháp: SELECT <danh sách các field>
PHP framework thúc đẩy nhanh chóng quá trình phát triển ứngdụng, tiết kiệm được thời gian, tăng sự ổn định cho ứng dụng, và giảmthiểu số lần phải viết lại mã cho lập trình viên Ngoài ra Framework cònxây dựng các ứng dụng ổn định hơn nhờ việc tương tác chính xác giữa cácDatabase, mã (PHP) và giao diện (HTML) 1 cách riêng biệt
PHP Framework hiện nay khá đầy đủ và đáp ứng hầu hết các điều kiện cần và đủ cho việc xây dựng một dự án Nói tới Framework thì nổi bật nhất vẫn là : Zend Framework, Codelgniter Framework, CakePHP Framework, Drupal Framework
3.3.2 Ưu điểm của framework
Tăng tốc quá trình phát triển ứng dụng
Giảm thời gian và sự nỗ lực để có được một dự án
Trang 14 Cung cấp sẵn các module cần thiết để xây dựng một dự án.
Dễ nâng cấp, sửa chữa do có sự phân hóa rõ ràng của mô hình MVC
3.3.3 Các thành phần của framework
Code Library: Thư viện source code giúp các lập trình viên tra cứu
về lập trình Hỗ trợ 30 ngôn ngữ lập trình: C#, Java, VB, PHP,Javascript…
Scripting Language: Sử dụng ngôn ngữ kịch bản
API: Sử dụng các hàm API xây dựng sẵn
Trang 15Model : Được giao nhiệm vụ cung cấp dữ liệu cho cơ sở dữ liệu vàlưu dữ liệu vào các kho chứa dữ liệu Tất cả các nghiệp vụ logic đượcthực thi ở Model Dữ liệu vào từ người dùng sẽ thông qua View đếnController và được kiểm tra ở Model trước khi lưu vào cơ sở dữ liệu Việctruy xuất, xác nhận, và lưu dữ liệu là một phần của Model
View : View hiển thị các thông tin cho người dùng của ứng dụng vàđược giao nhiệm vụ cho việc nhận các dữ liệu vào từ người dùng, gửi đicác yêu cầu đến controller, sau đó là nhận lại các phản hồi từ controller vàhiện kết quả cho người dùng Các trang HTML, JSP, các thư viện thẻ vàcác file nguồn là một phần của thành phần View
Trong các web framework, nó gồm 2 phần chính:
Template file định nghĩa cấu trúc và cách thức trình bày dữliệu cho user Ví dụ như layout, color, windows …
Logic xử lý cách áp dụng dữ liệu vào cấu trúc trình bày.Logic này có thể bao gồm việc kiểm tra định dạng dữ liệu,chuyển đổi định dạng dữ liệu sang một dạng dữ liệu trunggian, lựa chọn một cấu trúc hiển thị phù hợp
Controller : Controller đảm nhiệm việc cập nhật bộ phận hiển thị(View) khi cần thiết Bộ điều khiển này nhận dữ liệu nhập từ người dùng,truy xuất các thông tin cần thiết từ mô hình trong (Model), và cập nhậtthích hợp phần hiển thị (View) Giao diện với người sử dụng phần mềmđược thiết lập nhờ sự tương tác qua lại giữa View và Controller: Hai bộphận này chính là phần trình bày bên ngoài của đối tượng biểu diễn bêntrong
MVC chia nhỏ quá trình xử lý của một ứng dụng, giúp người lập trình làm việc trên từng thành phần riêng lẻ, không ảnh hưởng đến các thành phần khác giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp
3.4 Drupal là gì?
Trang 163.4.1 Khái niệm
Drupal là phần mềm mã nguồn mở dùng để phát triển gầnnhư tất cả các loại website, từ blog và website nhỏ đến mạng xã hội cộngtác lớn, đồng thời lại dễ sử dụng
Drupal là một hệ thống quản trị nội dung (CMS) mã nguồn mở đượcphát triển trên ngôn ngữ lập trình PHP, hệ quản trị cơ sở dữ liệu MySQL
và được phân phối dưới giấy phép GPL Drupal được xây dựng theo môhình thiết kế hướng đối tượng thông minh, cung cấp các tính năng mạnh
mẽ, đáp ứng được nhu cầu xây dựng các hệ thống web từ đơn giản, nhưtạp ghi cá nhân, đến phức tạp, như nhóm thảo luận, thương mại điện tử, tổchức lớp học, …
Dries Buytaert đã cho ra mắt phiên bản Drupal 7 với nhiều cải tiến
về giao diện và tính năng, giúp người dùng tạo ra một website có cấu trúclinh hoạt với khả năng tùy biến cao cho nhiều đối tượng như bài viết, bìnhluận, gán thuộc tính cho cả tag… Drupal với nhiều module như Forum,Blog, Contact, Comment, Menu, Aggregator, vv…
Trang 17Hình 2-4 : Trang drupal.org 3.4.2 Cài đặt drupal
Các bước cài đặt Drupal:
Bước 1: Download tập tin drupal-7.0.zip chép vào thư mục www.
Bước 2 : Giải nén tập tin, đổi tên tập tin thành dulichdeal
Bước 3 : Mở trình duyệt IE,firefox…nhập vào đường dẫn
http://localhost/dulichdeal/install.php
Hình 2-5: giao diện cài đặt Drupal.
Bước 5: Tạo database có tên : dulichdeal
Bước 6: Nhập : database name: dulichdeal Database username:root
Trang 18Hình 2-7: Chọn database
Sau khi cài đặt hoàn tất
Hình 2-8 : Giao diện trang chủ sau khi cài đặt thành công 3.4.3 Các thành phần chính trong drupal
3.4.3.1 Module
Trang 19Module là phần mềm mở rộng các tính năng Drupal
và các chức năng Các module core được tích hợp trong bộ tải vềcủa Drupal, và có thể bật chức năng của nó mà không cần cài đặtphần mềm bổ sung Các module đóng góp được tải về trong mụcdownload các module của drupal.org, và cài đặt trong thư mục càiđặt Drupal Ngoài ra cũng có thể tạo ra các module riêng, điều nàyđòi hỏi một sự hiểu biết thấu đáo về Drupal, lập trình PHP, và cácmodule của Drupal API
Thự mục đặt module gồm các thư mục sau:
Tập tin info thông báo cho Drupal biết một số thông tin cơbản của module
Name= tên của module
Description = mô tả các chức năng của module
Version = phiên bản của module
Package = nhóm chức năng của module
Dependencies = các module phụ thuộc cách nhau bằngkhoảng trống
Một số module được tích hợp sẳn khi cài đặt drupal như :Menu, forum, image, blog, comment, block…
Trang 20Hình 2-9 : Một số module được tích hợp sẳn trong Drupal.
3.4.3.2 User, Permission, Role
Mỗi người truy cập vào trang web, cho dù có tàikhoản và đăng nhập hoặc ghé thăm trang web nặc danh, được xem
là một người sử dụng Drupal Mỗi người sử dụng có số ID, vàngười sử dụng không phải vô danh có tên người dùng và địa chỉemail Các thông tin khác cũng có thể được liên kết với người sửdụng bởi các module Ví dụ nếu sử dụng các module Profile core
để định nghĩa thêm các trường trong profile người dùng Ngườidùng vô danh có ID = 0 Người sử dụng có ID=1 là tài khoảnngười dùng tạo ra khi cài đặt Drupal và là người dùng đặc biệt cóquyền làm mọi thứ trên trang web Những người dùng khác đượcgán quyền thông qua Role
Trang 21Role chỉ vai trò của người dùng Mỗi người dùng có thể cómột hay nhiều vai trò khác nhau Người quản trị website sẽ phânquyền sử dụng các chức năng của hệ thống dựa trên vai trò Drupalxây dựng sẵn 3 vai trò: admin, anonymous, authenticated Ngườiquản trị website có thể xây dựng thêm/ xóa/ sửa một hay nhiều vaitrò mới cho phù hợp với nhu cầu
Hình 2-10: Quản lý người dùng website 3.4.3.3 Node
Một Node trong Drupal là một thuật ngữ chung chomột phần của nội dung trên trang web, là kiểu dữ liệu trung tâmcủa Drupal Một số ví dụ về các Node:
Các trang của các quyển sách (Pages in books)
Các chủ đề thảo luận trong diễn đàn(Discussion topics in
forums)
Các trang trong blog ( Entries in blogs)
Các bài viết tin tức (News article stories)
Trang 22Node là thành phần đơn giản nhất của Website, nếu muốn cómột trang tin tức sẽ bắt đầu xây dựng từ Node, hay muốn website
có một trang hiển thị 1 Video Clip cũng bắt đầu tạo ra trang đó từNode
Mỗi Node trên trang web có một kiểu nội dung (Contenttype) Node cũng có ID, tiêu đề, ngày viết, tác giả (một người dùngtrên trang web), Nội dung… Bằng cách sử dụng Module (CCK) Node có: Tiêu đề là Text field, Nội dung là Text area
Một số chức năng đã được xây dựng sẵn để hỗ trợ cho node:Access control, Alias URL, caching, category, comment, file,search, recision…
Xây dựng các kiểu nội dung dựa trên Node là một trongnhững quy tắc đầu tiên mà các Web Developer cần tuân thủ, bởi tất
cả những Modules của Drupal đều được thiết kế cho Node Nếukhông tuân thủ theo quy tắc này, tức là tạo ra một trang tin khôngdựa trên nền tảng Node thì kể từ đây phải tự làm lấy tất cả mọi việc
có liên quan đến kiểu nội dung ngoại lai này, bao gồm cả việc:Phân Loại (tags), tìm kiếm (search), lên danh sách (list),
Xây dựng trên nền Form API, khả năng viết Plugin dễ dàng,
dễ phát triển node based module dựa trên node API Để xây dựngmột node module, cần phải sử dụng một số Hook mà Drupal cungcấp
3.4.3.4 Comment
Comment cũng là một loại nội dung có trên trangweb (nếu đã kích hoạt module comment ) Mỗi comment gắn vớimột Node cụ thể
Về mặt quản lí, Drupal cho phép hệ thống comment đa cấp("bình luận của bình luận"), cho phép quản lý phiên bản (biết được
ai đã thay đổi bài viết, thay đổi cái gì, lúc nào, phục hồi bài viết)
Trang 233.4.3.5 Taxonomy
Drupal có một hệ thống phân loại nội dung, mà được gọi là
Taxonomy Dùng để định nghĩa từ vựng (vocabularies – groups oftaxonomy terms), và thêm terms cho mỗi từ vựng Từ vựng có thể
là ngang hàng hoặc phân cấp, cho phép lựa chọn một hoặc nhiều,
và cũng được "free tagging" (có nghĩa là khi tạo hoặc chỉnh sửa nộidung, có thể thêm terms mới) Mỗi từ vựng được gắn với một hoặcnhiều loại nội dung, và theo cách này, các Node trên trang webđược nhóm lại thành các loại, được dán nhãn, hoặc được phân loạitrong bất kỳ cách nào
3.4.3.6 Database
Drupal lưu trữ thông tin trong cơ sở dữ liệu, mỗi loại thôngtin có bảng cơ sở dữ liệu riêng Các thông tin cơ bản về các Node trên trang web được lưu trữ trong bảng Node, và nếu sử dụngmodule CCK để thêm các trường vào các Node, nó được lưu trữtrong các bảng riêng biệt
Comment và User cũng có các bảng cơ sở dữ liệu riêng, vàRole, Permission, và các thiết lập khác cũng được lưu trữ trong cácbảng cơ sở dữ liệu
3.4.3.7 Path
Khi truy cập một địa chỉ URL trong trang web của Drupal,
một phần của địa chỉ URL sau địa chỉ cơ bản của trang web đượcgọi là Path
Các module đường dẫn chính cho phép tùy chọn tạo đườngdẫn URL cho các trang Drupal Theo mặc định, Drupal sẽ tự độngtạo các địa chỉ web như http://localhost.drupal.com/?q=node/67 Công cụ tìm kiếm sẽ cung cấp bảng xếp hạng tốt hơn đếncác trang có nhiều đường dẫn URL, đặc biệt là bao gồm các từkhóa có liên quan Một số ví dụ về các đường dẫn URL:
Trang 24 node/11 => sản phẩm / hàng hóa / coffeemakers
Có thể tạo URL như nhiều cấp độ sâu trong cấu trúc thư mục
ảo Mặc dù nó có thể chỉ định cùng một URL nội bộ cho nhiềuđường dẫn, điều này thường không phải là một ý tưởng tốt cho cácbảng xếp hạng công cụ tìm kiếm
Những đường dẫn cũ cần cho phép các đường dẫn module vàgán tên cho nội dung ngay từ đầu, vì vậy không phải đối phó vớinhững hậu quả của công cụ tìm kiếm và các trang web bên ngoài đãđược liên kết đến các trang thông qua / node / xx URL Nếuchuyển đổi một trang web hơn từ một nền tảng (công cụ viết blog,tiêu chuẩn HTML, CSS), tạo ra các đường dẫn để phù hợp với cácURL từ trang web trước đó
Kích hoạt các module đường dẫn trên trang modules
ở Administer > Modules Khi người dùng với sự cho phép quyềntạo ra hoặc chỉnh sửa bài viết, sẽ thấy một lĩnh vực để "thiết lậpđường dẫn URL" Đó là nơi có thể nhập một biệt hiệu của sự lựachọn
Vào trang URL , tại Administer > Configuration > Searchand metadata > URL aliases trong Drupal 7, sẽ thấy một danh sáchtất cả các bí danh URL trên trang web Ở đó có thể chỉnh sửachúng, và thêm những cái mới, có thể gán nhiều hơn một đườngdẫn đến một trang
Trang 25Trên trang Administer > People > Permissions (tab) trongDrupal, có thể quyết định ai có thể tạo ra các đường và nhữngngười có thể quản lý danh sách của họ Các module đường dẫncũng cho phép xác định tên nhiều URL cùng một lúc Điều này rấthữu ích nếu sử dụng thống nhất các URL khác nhau từ nhữngngười được phân công theo mặc định Thiết lập đường dẫn chomột nút cá nhân với các module đường dẫn.
Thêm một đường dẫn URL vào Administer > Configuration
> Search and metadata > URL trong Drupal 7 Quản lý danh sách các đường dẫn URL ở Administer > Configuration > Search and metadata trong Drupal 7
3.4.3.8 Theme
Theme điều khiển các trang web được hiển thị, baogồm giao diện đồ họa, bố trí, và màu sắc Theme bao gồm một haynhiều tập tin PHP để xác định đầu ra HTML của các trang web,cùng với một hoặc nhiều file CSS để xác định bố trí, phông chữ,màu sắc, và phong cách khác
Website sử dụng Drupal có thể có một hoặc nhiều theme.Người quản trị website quyết định bật hay tắt những theme nàotheo nhu cầu Người dùng chọn sử dụng một theme trong nhữngtheme hợp lệ mà người quản trị đã kích hoạt Theme định nghĩamột cách khái quát của website: Site name, Slogan, Mission,Layuot, Css, Block style, Node style…
3.4.3.9 Region, Block, Menu
Các trang trên trang web của Drupal được đặt ra trongRegion, mà bao gồm các header, footer, sidebars, và phần nội dungchính, theme xác định các Region khác Ngăn chặn được các đoạnrời rạc của thông tin được hiển thị ở Region của các trang web.Block có mang hình thức của menu (trong đó có liên quan với điều
Trang 26hướng trang web), nội dung từ các module (ví dụ các chủ đề diễnđàn nóng), hoặc các khối thông tin tĩnh hoặc động đã tạo ra (ví dụ,một danh sách các sự kiện sắp tới).
Block là những khối nội dung bao gồm những thuộc tính
Region: (vị trí trình bày) Được trình bày ở trái/ phải /trên
/dưới/…của website Region được theme định nghĩa
Weight: (thứ tự trình bày) Xác định thứ tự trình bày block
Block có Weight càng nhỏ có độ ưu tiên càng cao
Title: Tiêu đề của block
Body: Nội dung của block
Access: Xác định block có được trình bày hay không đối với
người dùng có những vai trò nhất định
Custom pages: Giới hạn trình bày block ở một số trang xác
định
Trang 27Hình 2-11: các block cơ bản trong Drupal.
Hệ thống có thể có một hay nhiều menu Một khái niệm được
sử dụng, bao gồm những thuộc tính và khả năng Có 3 loại menutrong Drupal: Primary Links, Secondary Links, and Navigation
Menu title: Mỗi menu có một tên phân biệt, có thể chứa
đựng trong nó một hay nhiều menu item Mỗi menu tự tạo ramột block tương ứng, với nội dung là một cây phân nhánhnhững menu item
Menu items: Là một liên kết được định vị trong một menu
Có các thuộc tính:
Status: Được kích hoạt hay không
Title: Tiêu đề của menu item
Trang 28 Expanded: Có được duỗi ra theo mặc định hay không.
Hình 2-12: Hệ thống menu trong Drupal.
3.4.4 Các module
Module là một nhóm những chức năng nhất định, gồm những thuộc tính cơ bản:
Name: Tên chính thức của module, ảnh hưởng trực tiếp đến những hàm kết nối với hệ thống
Display name: Tên gợi nhớ, được trình bày ở trang điều hành
module
Description : Giới thiệu ngắn gọn về các chức năng của module được trình bày ở trang điều hành module
Version: Mã số phiên bản của module
Dependencies: Module không thể kích hoạt khi các module ràng buộc không tồn tại hay chưa kích hoạt
Package: Phân nhóm chức năng chứa đựng module
Trang 29Drupal là một framework hướng module, những nhóm chức năng từ
hệ thống cũng được xây dựng theo hướng này, thích hợp để sử dụng ở hầuhết các site và để tham khảo
Các module của hệ thống:
Aggregator: Lấy tin từ các website khác thông qua RSS
Block: Điều khiển các ô hiển thị xung quanh nội dung chính
Blog: Giúp người dùng tạo các blog entry
Blogapi: Hỗ trợ tạo blog entry từ xa
Book : Hỗ trợ người dùng cộng tác xây dựng những trang sách
Color: Hỗ trợ người dùng thay đổi tông màu của một theme
Comment: Chức năng gửi phản hồi của người dùng trên một trang nội dung
Contact: Cho phép sử dụng cả biểu mẫu liên hệ cá nhân và liên
hệ toàn hệ thống
Filter: Điều khiển lọc nội dung để chuẩn bị cho việc hiển thị
Forum: Diễn đàn thảo luận
Help: Tạo các trang trợ giúp người quản trị website sử dụng các module
Legacy: Hỗ trợ các hàm hệ thống cũ đã bị bỏ đi
Locale: Cho phép dịch giao diện người dùng sang các ngôn ngữ khác ngoài Tiếng Anh
Menu: Cho phép quản trị hệ thống tùy biến menu chính
Node: Cho phép nội dung được gửi đến và hiển thị trên các trang
Path: Cho phép người dùng đổi tên đường dẫn URL
Ping: Nhắn tin đến những site khác khi hệ thống cập nhật
Poll: Chức năng bình chọn trên website
Profile: Tùy biến các thông số người sử dụng
Search: Hỗ trợ tìm kiếm từ khóa trên toàn hệ thống
Trang 30 System: Điều khiển cấu hình chung dành cho quản trị website.
Taxonomy: Hỗ trợ phân luồng nội dung
Throttle: Hỗ trợ xử lý một số thao tác ở các site có lượng truy cập lớn
Tracker: Theo dấu vết nội dung hiện thời của người dùng
Upload: Cho phép người dùng tải hoặc đính kèm tập tin vào nội dung
User : Quản lý hệ thống đăng ký và đăng nhập người dùng
Watchdog: Ghi lại các sự việc đã xảy ra trong hệ thống
Module Admin Menu:
Chức năng chính của module này là hiển thị 1 bản quản lý của admin trêncùng dạng như menu động
Download: http://drupal.org/project/admin_menu
Pathauto & Token:
Chức năng của 2 module này là tối ưu hóa đường link cho website,chức năng tương tự với sh404sef và joomsef bên joomla
CCK (Contents Contruction Kit)
Module này cho phép dễ dàng tạo những loại contents khác nhau mà không cần phải viết một số code Download : http://drupal.org/project/cck
3.5 Tính năng của drupal
Collaborative Book – Giúp thiết lập một “quyển sách” và cho phép nhiềungười cùng đóng góp nội dung, tổ chức dữ liệu
Trang 31 URL thân thiện – Drupal dùng mod_rewrite của Apache để tạo các URLthân thiện với cả các bộ máy tìm kiếm và người dùng.
Module – Các module đóng góp từ cộng đồng mở rộng tính năng củanhân Drupal
Online help – Hệ thống trợ giúp trực tuyến ngay trên site
Open source – Mã nguồn của Drupal hoàn toàn tự do dưới giấy phépGNU/GPL 2
Cá nhân hóa – Có sẵn ngay trong nhân Drupal Cả nội dung lẫn cáchtrình bày đều có thể cá nhân hóa theo các tiêu chuẩn được người dùng đặtra
Hệ thống phân quyền theo vai trò (role based) – Có thể tạo ra các vai tròmang các quyền hạn khác nhau, sau đó gán những vai trò này cho ngườidùng
Tìm kiếm – Mọi nội dung đều được đánh chỉ mục và có thể tìm kiếm bởi module tìm kiếm tích hợp sẵn
3.5.1 Quản lý thành viên
Xác thực người dùng – Người dùng có thể đăng ký và xác thực tại trang web, hoặc thông qua các nguồn xác thực khác như Jabber, Blogger, LiveJournal hoặc một site Drupal khác hoặc máy chủ LDAP
3.5.2 Quản trị nội dung
Bình chọn – Module bầu chọn của Drupal cho phép người dùng tạocác bầu chọn và gắn vào các trang khác nhau
Khuôn mẫu (template) – Hệ thống khuôn mẫu của Drupal phân táchnội dung với cách trình bày Khuôn mẫu được xây dựng trên PHP
và HTML chuẩn, có nghĩa là không cần phải học một ngôn ngữkhuôn mẫu (templating language) nào cả
Bình luận theo luồng – Mô hình bình luận theo luồng mạnh mẽ củaDrupal cho phép bình luận bất cứ nội dung nào Các bình luận cóchia cấp như ở một nhóm tin (newsgroup) hoặc diễn đàn
Trang 32Điều khiển phiên bản – Hệ thống điều khiển phiên bản của Drupal cho phép lưu giữ thông tin của các lần cập nhật (ai, cái gì, khi nào) Có thể dễ dàng quay lại (roll-back) một phiên bản trước đó.
3.5.3 Blogging
Hệ thống blog đa người dùng – Mỗi người dùng đã ghi danh trong
hệ thống đều có thể viết blog
Hỗ trợ Blog API – Cho phép cập nhật nội dung bằng nhiều công cụ khácnhau, thậm chí không cần dùng đến trình duyệt web
Content syndication – Xuất nội dung theo dạng RDF/RSS
News aggregator – Giúp đọc thông tin từ các website khác
Permalink – Tất cả các nội dung trong Drupal đều có một URL cố định, giúp người dùng có thể dễ dàng liên kết đến mà không sợ nó thay đổi về sau
3.5.4 Nền tảng(platform)
Apache hoặc IIS, Unix / Linux / BSD / Solaris / Windows / Mac
OS X đều được hỗ trợ – Drupal ngay từ đầu đã được xây dựng để tươngthích nhiều nền tảng
Độc lập với cơ sở dữ liệu – Mặc dù đa số dùng MySQL, nhưngkhông phải tất cả Drupal được xây dựng trên lớp CSDL trừu tượng(database abstraction layer – DAL), hỗ trợ cả MySQL lẫn PostgreSQL
Để hỗ trợ các CSDL riêng của mình, người dùng chỉ việc viết phần end hiện thực hóa 14 hàm của DAL
back-Đa ngôn ngữ – Nền tảng Drupal sẵn sàng cho việc xây dựng một website đa ngôn ngữ
3.5.5 Quản trị và phân tích
Phân tích, Theo dõi và Thống kêGhi nhật kí và báo cáo – Các hoạt động quan trọng trên hệ thốngđều được ghi lại, giúp người quản trị có thể xem lại sau đó
Hệ thống quản trị trên web – Tất cả có thể được quản lí thông qua trình duyệt web
Trang 333.5.6 Tính năng cộng đồng
Diễn đàn – Diễn đàn thảo luận
Blog – Hệ thống blog đa người dùng
3.5.7 Hiệu năng và khả năng mở rộng
Caching – Cơ chế đệm dữ liệu giúp giảm số truy vấn CSDL, tănghiệu năng và giảm tải server Hệ thống này đã từng được thử nghiệm chothấy chúng hoạt động rất tốt dưới hiệu ứng “slashdot” (lưu lượng tăng độtbiến do trang web được giới thiệu ở một website lớn)
Nén CSS – Drupal hỗ trợ chức năng gom nhóm các tập tin CSS lạithành một tập tin nhất, đồng thời cũng loại bỏ các ghi chú bên trong Khitrình duyệt thực hiện chỉ cần thực hiện một yêu cầu để lấy về một tập tinCSS duy nhất
Nén Javascript – Từ phiên bản 6.x Drupal còn cho phép gom nhóm
và nén các tập tin Javascript
CHƯƠNG 4: PHÂN TÍCH THIẾT KẾ HỆ THỐNG
4.1 Mô tả hệ thống thương mại điện tử mô hình groupon MySQL
Qua khảo sát, chúng tôi thấy việc xậy dựng hệ thống gồm các yêu cầu sau:
Trang 34 Về phía khách hàng: Hệ thống phải cung cấp các gói dịch vụ du lịch(du
lịch hôm nay, du lịch gần đây) khuyến mãi giảm giá (30% trở lên) từ các nhà cung cấp dịch vụ và thể hiện trên website Du Lịch deal để khách hàng(thành viên hoặc người tham gia lướt web) tham gia có thể tham khảo về sản phẩm, biết được thông tin nhà cung cấp và có thể đặt mua dịch vu du lịch tại website, ngoài ra khách hàng có thể tạo giỏ hàng, cập nhật giỏ hàng, thanh toán, xem lại đơn hàng, mua hàng, đăng kí thành viên, đăng nhập, gửi bình luận tới các tin du lịch deal, tham gia nhận giá tốt, liên hệ đến ban quản tri website
Gói du lịch hôm nay : Là gói dịch vụ chứa các tin du lịch deal khuyến mãi đang còn trong thời gian bán và sô lượng mua của khách hàng vẫn còn
Gói du lịch gần đây : Là gói dịch vụ chứa các tin du lịch deal khuyến mãi đã hết thời gian mua của khách hàng hoặc dịch vụ này đã hết số lượng mua
Việc đặt mua dịch vụ du lich : Bất cứ ai cũng có thể đặt mua dịch vụ
du lịch, không ràng buộc phải là thành viên website Chỉ mua được các dịch vụ du lịch đang trong thời gian bán
Cập nhật giỏ hàng: Ở đây khách hàng có thể thêm deal vào giỏ hàng, xóa từng deal du lịch có trong giỏ hàng và cập nhật số lượng trong giới hạn số lượng cho phép của từng deal
Thanh toán: Để có thể thanh toán thì giỏ hàng, khách hàng phải tồn tạisản phẩm, để thực hiện thanh toán buộc khách hàng phải điền thông tin thanh toán và chọn phương thức thanh toán Ngoài ra khách hàng thanh toán có thể để lại tin nhắn cho đơn hàng này Nếu là thành viên thì sẽ hiện email của thành viên(để khi hoàn thành đơn hàng hệ thống
sẽ tự động gửi đơn hàng đến thành viên đặt hàng), ngược lại nếu chưa
là thành viên thì khách hàng có thể đăng kí thành viên tại đây
Trang 35 Xem đơn hàng: Nhằm xác nhận lại thông tin đơn hàng của khách hànghoặc thành viên đặt hàng.
Mua hàng: Nhằm xác nhận việc mua hàng và kết thúc quá trình mua hàng của thành viên hoặc khách hàng
Đăng kí thành viên/đăng nhập: Việc đăng kí thành viên nhằm giúp cho khách hàng có thể lưu lại thông tin đơn hàng mà mình đã đặt, có thể cập nhật thông tin cá nhân, có thể gửi và xem bình luận tới deal
Gửi bình luận: Chỉ có thành viên mới có thể gửi bình luận tới các deal
và có thể gửi bình luận của bình luận
Nhận giá tốt: Bất cứ khách hàng hoặc thành viên đều có thể tham gia nhận giá tốt, giá mới nhất từ hệ thống của các deal du lịch Mỗi email chỉ tham gia được 1 lần duy nhất
Gửi liên hệ: Bất cứ khách hàng hoặc thành viên đều có thể gửi thông tin liên hệ về bất cứ các ý kiến cũng như các vấn đề thắc mắt của đối với dịch vụ Thông tin liên hệ sẽ được gửi vào email của hệ thống
Về phía quản trị viên: Hệ thống phải đáp ứng nhu cầu cho người quản
trị có thể quản lý(thêm, xóa, sửa) tất cả các các hiển thị và các thao tác trên trên giao diện website Du Lich deal của khách hàng, với các yêu cầu sau: Quản trị thông tin các deal, quản trị đơn hàng, quản trị khách hàng, quản trị email nhận giá tốt, quản trị nhà cung cấp dịch vụ, quản trị bình luận
Hệ thống buộc phải cung cấp và đảm bảo quy trình thêm, xóa sửa các đối với các dữ liệu hiện có của website và với giao diện thân thiện dễ
sử dụng nhất để đảm bảo về mặt quản trị dữ liệu an toàn và thời gian làm việc
Ngoài ra, hệ thống có thể gửi thông tin về bảng giá tốt nhất và mới nhất theo từng thời kì do quản trị viên quy định
4.2 Xác định các Actor
Trang 36 Khách hàng: Là người trực tiếp mua hàng và thao tác các chức năng hiện
có mà giới hạn cho phép bởi người quản trị website
Thành viên: Cũng như khách hàng nhưng ngoài ra thành viên còn có thể
gửi hoặc xem bình luận đến các deal, có thể lưu hoặc xem các đơn hàng
mà mình đã từng mua, có thể cập nhật thông tin cá nhân
Quản trị viên: Là người nắm bắt các tình hình diễn biến hoạt động của hệ
thống, thống kê toàn bộ dữ liệu mà hệ thống đang và đã có.Quản trị có thể thêm, xóa, sữa với tất cả các dữ liệu hiện có của hệ thống
4.3 Xác định các UseCace
Khách hàng, Thành viên
1 Xem du lịch hôm nay - Xem chi tiết deal
- Xóa deal trong giỏ hàng
9 Thêm deal vào giỏ hàng
10 Cập nhật deal trong giỏ
hàng
11 Xóa deal trong giỏ hàng
Thành viên ST
Trang 37Quản trị ST
T
1 Quản trị nội dung
2 Quản trị đơn hàng
3 Quản trị thành viên
4 Quản trị email nhận giá tốt
4.4 Xây dựng Usecase – Diagram
Trang 384.5 Mô tả các use case
4.5.1 Đăng nhập
Tác nhân chính: Thành viên tham gia mua deal(thành viên).
Tóm tắc: Use case này cho phép thành viên có thể đăng nhập hệ thống
để có thể lưu lại đơn hàng, bình luận và cập nhật thông tin cá nhân của họ
Dòng sự kiện:
Dòng sự kiện chính:
Trang 39- Use case này bắt đầu khi thành viên tham gia website chọn chức năng đăng nhập.
- Hệ thống yêu cầu thành viên nhập tên đăng nhập và mật khẩu
- Hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu đã được lưu trong csdl, nếu tên đăng nhập hoặc mật khẩu không đúng thì sẽ hiển thị thông báo
- Sau khi hệ thống kiểm tra thông tin đăng nhập thỏa, hệ thống sẽ lấy thông tin cá nhân gồm: tên đăng nhập, hóa đơn(nếu có), bình luận(nếu có) Sau đó hiển thị kết quả trên giao diện website kết thúc use case
Các yêu cầu đặc biệt Không có
Điều kiện tiên quyết Phải là thành viên của hệ thống
Hậu điều kiện Hệ thống trả lại đúng thông tin cá nhân
của thành viên đăng nhập, các đơn hàng
đã mua(nếu có) và các bình luận(nếu có)
4.5.2 Gửi bình luận
Tác nhân chính: Thành viên đã đăng nhập và đang theo dõi deal
Tóm tắt: Use case này cho phép thành viên có thể tham gia bình luận
về các deal sau khi đã đăng nhập vào hệ thống
Dòng sự kiện
Dòng sự kiện chính: