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

Xây dựng website bằng Drupal: Đồ án tốt nghiệp Đại học

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 (1019.19 KB, 38 trang )

PHÁT TRIỂN WEBSITE BẰNG DRUPAL

LỜI NÓI ĐẦU
Hiện nay, xu hướng hội nhập và hợp tác quốc tế là một nhu cầu tất yếu đối với mọi doanh
nghiệp, tổ chức và cá nhân có tham vọng phát triển thị trường, tìm kiếm đối tác mới, mở
rộng sản xuất. Bằng hình thức quảng cáo doanh nghiệp sẽ quảng bá thương hiệu, giới
thiệu sản phẩm dịch vụ của mình tới các Doanh nghiệp khách hàng, đối tác và người tiêu
dùng. Doanh nghiệp có thể quảng cáo theo các hình thức truyền thống như:
- Xây dựng đoạn phim quảng cáo truyền hình: hiệu quả nhưng chi phí cao.
- Quảng cáo báo chí: chi phí không quá cao nhưng không thật sự hiệu quả.
- Quảng cáo thông qua tờ rơi: giới hạn về địa lý.
- Xây dựng các chương trình quảng cáo tại các tụ điểm trung tâm: hiệu quả cao
nhưng chi phí bỏ ra quá lớn không phù hợp với nhiều doanh nghiệp…
Cùng với sự phát triển mạnh mẽ của hạ tầng về viễn thông – thông tin liên lạc, doanh
nghiệp còn có thể dùng website làm công cụ quản lí, quảng bá thương hiệu, phát triển
kinh doanh..
Đề tài “Phát triển website bằng Drupal” nghiên cứu cách phát triển website bằng bộ mã
nguồn mở mạnh mẽ Drupal nhằm cung câp thêm một công cụ phát triển website cho các
Doanh nghiệp.
Đề tài gồm 2 phần chính:
-

Phần 1: Giới thiệu về các ưu điểm, tính năng, cách xử lý của hệ thống Drupal.

-

Phần 2: Mô tả cách xây dựng website cho công ty TNHH Đại Long.

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 1




PHÁT TRIỂN WEBSITE BẰNG DRUPAL

MỤC LỤC

1 CHƯƠNG 1 GIỚI THIỆU DRUPAL....................................................................3
1.1 Khái niệm.........................................................................................................3
1.2 Cách làm việc của Drupal..............................................................................11
1.3 Xử lý một yêu cầu (request)...........................................................................21
2 CHƯƠNG 2: XÂY DỰNG WEBSITE CÔNG TY TNHH ĐẠI LONG.............27
2.1 Xây dựng website với Drupal........................................................................27
2.2 Thiết kế website.............................................................................................32
KẾT LUẬN............................................................................................................36
TÀI LIỆU THAM KHẢO......................................................................................38

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 2


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

1

CHƯƠNG 1 GIỚI THIỆU DRUPAL

1.1 Khái niệm
Drupal là một hệ quản trị nội dung (CMS) mã nguồn mở được sử dụng phổ biến nhất trên
thế giới để xây dựng trang web. Xây dựng trang web với Drupal thì vấn đề cốt lõi là kết

hợp nhiều “khối nội dung” (building block) với nhau để tùy biến website của theo các
chức năng yêu cầu. Website xây dựng bởi Drupal có thể được bảo trì, phát triển bằng
những khung nhập nội dung trực tiếp (online form) mà không phải thay đổi mã nguồn
(code) bằng tay. Drupal hoàn toàn miễn phí, ngay tại trang chủ của Drupal (drupal.org)
có hàng ngàn thư viện để phục vụ cho các nhu cầu đa dạng trong việc xây dựng website.
Nhờ những tính năng mạnh mẽ của mình, Drupal còn được coi là một khung sườn phát
triển phần mềm (Content Management Framework – CMF). Ngoài việc cung cấp cho
những người quản trị trang web (webmasters) một công cụ xây dựng website, nó còn
giúp cho các lập trình viên và nhà phát triển nhiều cách để tùy biến Drupal sử dụng các
mô-đun (plug-in module). Tất cả mọi thành phần của Drupal đều có thể được tùy biến sử
dụng những mô-đun này.
Điều đáng chú ý nhất là cộng đồng phát triển Drupal, vốn được coi là điều thành công và
đáng giá nhất của drupal. Khi Drupal 6 được phát hành tháng 2 năm 2008, có hơn 700
thành viên đã cùng nhau xây dựng nên phần lõi (core) của Drupal. Có hơn 2000 lập trình
viên cùng nhau xây dựng các modules, tham gia trong các quá trình kiểm thử, viết tài
liệu, hỗ trợ người dùng, dịch thuật và các công đoạn quan trọng khác của dự án.
Ngày 5 tháng 1 năm 2011, cộng đồng Drupal trên toàn thế giới cùng với Hiệp hội Drupal
đón chào việc công bố chính thức ra mắt Drupal 7, nền tảng web được đánh giá là mạnh
nhất hiện nay.
Dự án phát triển Drupal 7 kết hợp giữa các chỉ dẫn của các chuyên gia công nghệ, cùng
với phản hồi của cộng đồng, để làm cho việc sử dụng được dễ dàng hơn. Việc cải tiến
cách thức sử dụng bao gồm quản lý dễ dàng hơn, quản lý các cập nhật, truy xuất và tạo
nội dung.
Theo số liệu mới nhất, Drupal là phần mềm mã nguồn mở được sử dụng bởi hơn nửa
triệu người trên 200 quốc gia và 189 ngôn ngữ. Gần 1000 thành viên của cộng đồng
Drupal đã và đang đóng góp trực tiếp phát triển lõi Drupal 7 và các module kèm theo.
LÊ ĐỨC TRÍ 49K - CNTT

TRANG 3



PHÁT TRIỂN WEBSITE BẰNG DRUPAL

1.1.1 Những ai sử dụng Drupal
Những năm gần đây, Drupal ngày càng phát triển mạnh mẽ và trở nên rất phổ biến, điều
này đã làm cho nhiều công ty lớn đặc biệt chú ý. Các công ty về lĩnh vực đa phương tiện
như MTV UK, Lifetime và Sony BMG Records đang sử dụng Drupal để xây dựng cộng
đồng cho các sản phẩm của họ. Các nhà xuất bản như New York Observer, The Onion,
tạp chí Popular Science và tạp chí Fast Company cũng sử dụng drupal để xây dựng báo
điện tử. Ngoài ra còn nhiều tổ chức như tổ chức ân xá quốc tế (Amnesty International),
Liên Hợp Quốc (the United Nations) và hiệp hội công nghiệp điện tử (the Electronic
Frontier Foundation) cũng sử dụng Drupal để xây dựng cổng thông tin (portal). Ubuntu
Linux, Eclipse, Firefox và jQuery là những dự án mã nguồn mở hiện đang sử dụng
Drupal để xây dựng trang cộng đồng phát triển cho dự án. Ngoài ra còn có các trang web
của các blogger nổi tiếng như Tim Berners-Lee, Heather B.Armstrong (Dooce), mạng xã
hội BlogHer, và Merlin Mann cũng sử dụng Drupal để phát triển.

1.1.2 Tư tưởng của Drupal

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 4


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

Một giải pháp xây dựng website hiệu quả cần có sự cân bằng giữa sự đơn giản và sự linh
hoạt. Nếu một hệ thống quá đơn giản, nó chỉ có thể sử dụng được cho một mục đích duy
nhất, nhưng nếu nó quá linh hoạt, nó sẽ khó tiếp cận đối với những người mới.
Drupal cố gắng để dung hòa được sự mâu thuẫn của các mục tiêu đó bằng cách cung cấp

cho người dùng với các công cụ cần thiết để xây dựng một giải pháp Quản trị nội dung
thông tin , Một mặt cung cấp một số thành phần dựng sẵn để giúp họ có thể bắt đầu ngay.
Vì vậy, nó có thể được hiểu như là một hệ thống quản lý nội dung (CMS) và là một
framework quản lý nội dung (CMF) - một hệ thống cố chứa những thế mạnh của cả hai,
và loại bỏ các nhược điểm của nó.
Hầu hết các CMS giống như một chiếc thuyền đồ chơi hoặc chiếc xe tải đồ chơi – Các
chức năng cụ thể đã được triển khai về cách sử dụng của nó, và nó sẽ khó khăn khi bạn
cần thay đổi cho phù hợp với mục đích sử dụng của mình. Framework cung cấp cho bạn
những khối nguyên vật liệu và bạn cần biết một ngôn ngữ lập trình và có một tầm nhìn
thiết kế rõ ràng, để đặt chúng lại với nhau.

Drupal cũng giống như một bộ xếp hình Lego. Các kỹ năng của người phát triển được
LÊ ĐỨC TRÍ 49K - CNTT

TRANG 5


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

đóng thành các khối xây dựng (ở dạng module) mà bạn cần để tạo ra một trang web phù
hợp với nhu cầu của bạn, cho dù đó là một trang web tin tức, cửa hàng trực tuyến, một
mạng xã hội, blog, wiki, hay cái gì khác hoàn toàn.

Để làm rõ hơn sự khác nhau giữa Drupal và các CMS khác, ta lấy ví dụ một trang báo
điện tử. Bạn muốn có khả năng viết bài mới trên site và bạn muốn ở ngoài trang chủ có
một mục hiện thị 5 bài mới nhất mà bạn viết. Tiếp theo bạn muốn có một plugin để theo
dõi những bài viết mới nhất trong blog và đưa ra một danh sách trên trang chủ.
Nếu bạn đang sử dụng một CMS thông thường, đầu tiên bạn sẽ cài đặt một plugin xử lý
tin bài và có thể đặt blurbs ngắn trên trang chủ. Tiếp theo, bạn cài đặt một plugin mà có
thể theo dõi các bài viết blog mới nhất và đặt một danh sách của nó lên trang chủ. Mỗi

plugin sẽ chỉ có trách nhiệm theo dõi và quản lý một loại nội dung cụ thể, và sẽ vẫn còn
tương đối cô lập với cái khác.
Nhưng, điều gì xả ra khi trong đầu bạn xuất hiện ý tưởng muốn kết hợp 2 chức năng này
bằng cách hiện thị một danh sách các bài viết mới nhất trong blog về các bài viết tin tức
và những bài viết nào được xem nhiều hiển thị lên đầu tiên? Nếu bạn đang sử dụng một
xe “toy truck” CMS, bạn có thể giải quyết được nếu nhờ may mắn hoặc bạn phải thuê
một nhà phát triển để tùy biến các plugin ngay từ đầu. Nhưng với sức mạnh về tư tưởng
tiếp cận của Drupal, với cách thức trừu tượng khả năng quản lý, bạn có thể thực hiện nó

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 6


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

với một bộ công cụ đầy đủ và tích hợp môtk cách nhanh chóng. (Gợi ý: Chỉ cần sử dụng
Views Module) Các modules của Drupal làm việc trong một chuẩn thống nhất và với
một giao diện chung của hệ thống, khả năng xây dựng các loại nội dung thông minh và
khả năng tùy biến cao nên vấn đề còn lại là kết hợp các module với nhau.
Tất nhiên, sự linh hoạt này có với một chi phí nhất định. Trong khi với một xe “toy
truck” bạn có thể hiểu biết ngay và sẵn sàng sử dụng mà không cần phải suy nghĩ nhiều,
một bộ công cụ các khối xây dựng sẽ yêu câu bạn đọc sách hướng dẫn sử dụng trước tiên.
Các khối xây dựng này có thể giải quyết được vấn đề nhưng bạn sẽ phải tìm hiểu làm thế
nào chúng phù hợp được với nhau trước khi bạn thiết kế và xây dựng một website đầy đủ
các tính năng.
Với core là Drupal và hàng ngàn module được xây dựng trên nó đòi hỏi phải có sự đầu tư
ban đầu để tìm hiểu, nhưng nếu làm chủ được Drupal sẽ vô cùng bổ ích. Cộng đồng đam
mê Drupal là một minh chứng cho sức mạnh của nó để giải phóng các nhà phát triển web
trong việc xây dựng các website từ đơn giản đến phức tạp.

1.1.3 Nguyên tắc hoạt động của Drupal
Mọi người thường nghĩ một website là một tập hợp các trang tĩnh, với một số tính năng
(như blog, or a news engine) được tách ra riêng biệt. Khi họ quản lý website thì họ lại
nghĩ chúng như thành phần của một cấu trúc hình cây kế thừa các trang mà họ muốn gọi
đến và sửa.
Với Drupal thì khác, xử lý các loại nội dung như là các biến thể trên một khái niệm giống
nhau: Node. Static pages, blog posts, and news items (một số loại node có thể) đều được
lưu trữ cùng một cách là tất cả được lưu trữ trong cùng một cách, và cho phép trình bày
khác nhau bới các menu chỉnh sửa, views và các blocks.
Nó giống như việc bạn xem một file code html, các thẻ html cung cấp thông tin, còn các
thẻ css trình bày nó. Trong Drupal, các Node giữ các thông tin có cấu trúc liên quan đến
một bài viết trên blog (chẳng hạn như tiêu đề, nội dung, ngày viết, tác giả) hoặc một bài
tin tức (Tiêu đề, nội dung, ngày xuất bản, ngày hết hạn), trong khi hệ thống menu, như
cũng như Taxonomy (gắn thẻ phân loại nội dung) và các view, tạo ra các kiến trúc
thông tin. Cuối cùng, hệ thống với các module giống như Panels, điều khiển tất cả những
gì mà người duyệt web nhìn thấy.

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 7


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

Với các lớp được lưu giữ riêng biệt, bạn có thể cung cấp một hướng hoàn toàn khác nhau
và trình bày nội dung của bạn với các người dùng khác nhau dựa trên nhu cầu cụ thể và
vai trò của họ. Các trang có thể được nhóm khác nhau, ưu tiên theo thứ tự khác, và các
chức năng khác nhau và nội dung có thể được hiển thị hoặc ẩn khi cần thiết.
1.1.4 Sơ đồ cấu trúc của Drupal
Sơ đồ cấu trúc Drupal có năm lớp chính:


1. Cơ bản nhất của hệ thống là là tập hợp các Node ( Data pool). Trước thực hiện
bất cứ thứ gì có thể được hiện thị trên website nó phải được nhập vào như là dữ
liệu.

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 8


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

2. Lớp tiếp theo chứa các module. Module là các plugin về một tính năng nào đó và
nó có thể là một phần của core Drupal (tích hợp trong core) hoặc được đóng góp
bởi các thành viên trong công đồng Drupal. Các Module xây dựng dựa trên chức
năng core của Drupal, cho phép bạn tùy biến data items (fields) trên các loại Node
của bạn; thiết lập thương mại điện tử, lập trình phân loại và hiển thị nội dung (tùy
chỉnh đầu ra được kiểm soát bởi các bộ lọc bạn xác định); và nhiều hơn nữa. Có
hàng ngàn modules khác nhau trong các kho lưu trữ đang phát triển nhanh chóng
của Drupal. Đó là những nỗ lực đổi mới và hợp tác của tất cả mọi người từ cá
nhân đến các tập đoàn lớn.
3. Lớp tiếp theo, chúng ta tìm thấy các Blocks và các Menus. Blocks thường cung
cấp các đầu ra từ một module hoặc có thể được tạo ra để hiển thị bất cứ điều gì
bạn muốn, và sau đó có thể được đặt tại các điểm khác nhau trong template layout
(theme) của bạn. Blocks có thể được cấu hình đầu ra theo nhiều cách khác nhau,
cũng như chỉ hiển thị trên các trang nhất định được xác định, hoặc chỉ cho người
dùng nhất định được xác định.
4. Lớp tiếp theo là cấp quyền cho người sử dụng. Đây là nơi mà thiết lập được cấu
hình để xác định những kiểu khác nhau của người dùng được phép thực hiện và
nhìn thấy. Các quyền được quy định cho các vai trò khác nhau, và từng người

dùng được gán các vai trò này theo đúng quy định.

5. Lớp trên cùng là các themes của site (các "Skin"). Nó được tạo thành chủ yếu của
XHTML và CSS, với một số biến PHP trộn lẫn
1.1.5 Sử dụng Drupal khi nào
Drupal là một framework mạnh mẽ và linh hoạt để xây dựng bất kỳ loại trang web nào.
Dưới đây là một số trường hợp,mà Drupal là một lựa chọn đặc biệt thích hợp.
• Bạn cần một trang web đó là đủ linh hoạt để phát triển theo hướng nào. Ví dụ, bạn
có thể bắt đầu với một blog, nhưng muốn tùy chọn thêm tính năng khác như một
wiki, thương mại điện tử, diễn đàn vv
• Bạn cần một trang web có thể dễ dàng được cấu hình để tương tác với các trang
web khác hoặc với các công nghệ khác.

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 9


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

• Bạn cần một trang web có thể dễ dàng xử lý các hình thức phức tạp và quy trình
công việc.
• Bạn cần có khả năng tạo ra các loại nội dung của riêng bạn. Ví dụ, bạn cần phải
thêm một trường tùy biến cho trang web.
• Bạn cần có khả năng để nhanh chóng tổ chức và hiển thị danh sách các thông tin.
• Một hoặc nhiều địa chỉ module Drupal mà bạn cần.
• Bạn cần phải nhanh chóng phát triển các chức năng tùy chỉnh.
Tuy nhiên, nếu chỉ dùng cho một bài toán cụ thể nào đó, Drupal có thể không phải là sự
lựa chọn tốt nhất:
• Nếu yêu cầu duy nhất của bạn là viết một blog cá nhân, bạn cũng có thể muốn

đánh giá một trong những chuyên biệt hơn như nền tảng blog WordPress hoặc một
giải pháp lưu trữ blog như Blogger. Mặc dù Drupal có thể phục vụ như là một nền
tảng blog out-of-the-box, blog phần mềm cụ thể có thể có một giao diện quản trị
đơn giản.
• Tương tự, nếu yêu cầu duy nhất của bạn là tạo ra một wiki, bạn có lẽ nên xem xét
sử dụng phần mềm chuyên dụng wiki như MediaWiki hoặc một giải pháp lưu trữ
trên máy wiki. Bạn chắc chắn có thể cấu hình Drupal để bất cứ ai có thể chỉnh sửa
nội dung (và thậm chí cho phép tính năng nâng cao wiki với sự giúp đỡ của một số
Moduel như wikitools và Diff)), nhưng nó có thể đơn giản để bạn sử dụng một
giải pháp chuyên biệt hơn.
• Nếu yêu cầu duy nhất của bạn là chủ diễn đàn thảo luận, bạn sẽ muốn xem xét một
hệ thống như SimpleMachines hoặc phpBB với tập hợp nhiều tính năng hay của
diễn đàn, hoặc Vanilla có nhiều plug-ins. Nếu bạn cần một diễn đàn riêng, tuy
nhiên, module forum của Drupal với các tính năng nâng cao như diễn đàn có thể
phù hợp hơn để mở rộng.
• Với mỗi bản phát hành, Drupal đang trở nên dễ dàng hơn để sử dụng, nhưng giống
như hầu hết các công cụ mạnh mẽ, nó sẽ luôn luôn cần có một quá trình tìm hiểu.
Nếu bạn hay tổ chức của bạn không được chuẩn bị để dành thời gian tìm hiểu về

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 10


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

Drupal (hoặc nếu bạn không thể thuê chuyên gia Drupal), nó có thể không được
lựa chọn tốt nhất của bạn.
1.1.6 Những đặc tính của Drupal
Drupal cung cấp nhiều tính năng mạnh mẽ, bao gồm:

Hệ thống mô-đun mềm dẻo
Mô-đun là những plug-in có thể được chỉnh sửa và thêm các tính năng cho các site sử
dụng Drupal. Hầu hết những tính năng cần có đều có thể được đáp ứng bởi một mô-đun
để giải quyết bài toán hoặc kết hợp nhiều mô-đun lại với nhau.
Hệ thống giao diện tùy biến
Tất cả các đầu ra trong drupal đều hoàn toàn có thể được tùy biến, vì vậy có thể dễ dàng
thay đổi mọi thành phần giao diện trong website theo yêu cầu.
Hệ thống tạo nội dung mở rộng
Drupal có thể được định nghĩa nhiều loại nội dung mới (ví dụ như blog, sự kiện, bản
tin…) mà không cần phải lập trình. Các mô-đun của Drupal có thể làm các điều này và
chấp nhận cho người quản trị tạo ra các trường tùy biến trong các loại nội dung mới được
tạo.
Tối ưu hóa công cụ tìm kiếm
Drupal đã được hỗ trợ sẵn hệ thống tạo đường dẫn thân thiện (human-readable), và tất cả
đầu ra của Drupal đều đạt chuẩn, những tính năng này làm cho các website được xây
dựng bởi Drupal rất thân thiện với công cụ tìm kiếm.
Hệ thống phân quyền
Các vai trò (role) và hệ thống phân quyền của Drupal rất mạnh mẽ. Quyền có thể được
phân cho các vai trò khác nhau hoặc phân quyền đến tận các mô-đun. Các mô-đun đều có
thể định nghĩa được quyền hạn và phân quyền theo các quyền hạn này.

1.2 Cách làm việc của Drupal
1.2.1 Nền tảng công nghệ
Drupal là một phần của technology stack có chứa một số công nghệ quan trọng:

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 11



PHÁT TRIỂN WEBSITE BẰNG DRUPAL

• Server - Máy chủ là một máy tính cung cấp thông tin, dịch vụ cho các máy tính
khác trên mạng.
• Hệ điều hành - Các phần mềm chạy các máy chủ. Unix, Linux, BSD, OS X và
Windows là một số ví dụ.
• Cơ sở dữ liệu - Drupal sử dụng một cơ sở dữ liệu để lưu trữ nội dung và thiết lập
cấu hình cho trang web của bạn, một số nội dung như các tập tin media thông
thường được lưu trữ trong hệ thống file của máy chủ.
• Web server - Các thành phần phần mềm chịu trách nhiệm phục vụ các trang web.
Ví dụ như Apache và Microsoft IIS.
• PHP - PHP là một ngôn ngữ lập trình cho phép các nhà phát triển web để tạo ra
nội dung động và tương tác với cơ sở dữ liệu.
• Drupal – Một Framework cho việc xây dựng các trang web động cung cấp một
loạt các tính năng và dịch vụ bao gồm quản trị người dùng, luồng xuất bản, khả
năng thảo luận, tập hợp tin tức, các chức năng điều khiển siêu dữ liệu bằng cách sử
dụng từ vựng và xuất bản XML cho các mục đích chia sẻ nội dung. Một cài đặt
Drupal thường bao gồm một kết hợp của core và các Module.

1.2.2 Phần nhân (core)

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 12


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

Phần nhân của Drupal là một khung sườn theo hướng tối giản (lightweight framework).
Đây chính là phần mã mà chúng ta tải về từ drupal.org. Phần lõi cung cấp những chức

năng cơ bản nhất và được sử dụng để hỗ trợ các thành phần khác của hệ thống.
Phần lõi bao gồm mã nguồn giúp cho hệ thống Drupal khởi động (bootstrap) khi nhận 1
yêu cầu (request), một thư viện những hàm chung nhất thường được sử dụng với Drupal
và các mô-đun cung cấp những chức năng cơ bản nhất như là quản trị người dùng, bộ từ
tố (taxonomy), và hệ thống template được chỉ ra trong hình sau:

Hình 1 Cấu trúc phần Core
1.2.3 Giao diện quản trị
Không giống như những CMS khác, Drupal không có giao diện quản trị riêng biệt. Giao
diện trang web và giao diện trang quản trị theo mặc định là một. Người dùng đầu tiên (cài
đặt Drupal) được xem như là người dùng có quyền cao nhất và có toàn quyền với trang
web.
1.2.4 Mô-đun
Drupal là một khung phát triển hướng mô-đun hoàn toàn. Các chức năng được đóng gói
trong các mô-đun. Khi cần, bạn có thể bật hoặc tắt các mô-đun tùy ý. Khi cần một tính
năng mới thì có thể bật các mô-đun có sẵn, cài đặt các mô-đun được viết và chia sẻ trên
trang chủ Drupal hoặc viết một mô-đun mới theo yêu cầu.

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 13


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

Hình 2 Mô hình modular
Bất kỳ tính năng hay sự thay đổi nào cũng có thể được thêm vào thông qua mô-đun.
Drupal làm được điều này nhờ sử dụng mẫu thiết kế điều khiển ngược (inversion of
control design pattern). Các hàm chức năng trong mô-đun sẽ được gọi bởi khung phát
triển trong thời gian thực thi. Điều này trong hệ thống Drupal được gọi là các hooks.

1.2.5 Hooks
Hooks có thể được hiểu như là các sự kiện bên trong Drupal. Chúng cũng có thể được gọi
là callbacks bởi vì các quy ước đặt tên hàm và không cần đăng ký lắng nghe sự kiện
(listener). Hooks cho phép các mô-đun có thể “hook vào” bất kỳ sự kiện nào trong hệ
thống Drupal.

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 14


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

Giả sử một người dùng đăng nhập vào website Drupal. Vào thời điểm người dùng đăng
nhập, Drupal tạo nên một hook người dùng (user hook). Điều này có nghĩa là bất kỳ một
hàm nào được đặt tên theo quy tắc tên mô-đun + tên hook sẽ được gọi.
Cách phổ biến nhất để chỉnh sửa các chức năng trong phần nhân của Drupal là thực thi
thông qua hệ thống hooks trong mô-đun.

Hình 3 Hệ thống hook

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 15


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

1.2.6 Giao diện (theme)
Trong Drupal, lớp giao diện chịu trách nhiệm tạo ra mã HTML (hoặc JSON, XML, .v.v.)

và gửi đến cho trình duyệt. Drupal có thể sử dụng nhiều hệ thống giao diện phổ biến như
là Smarty, PHPTal, hoặc PHPTemplate.

Hình 4 Theme engine
Drupal chấp nhận nhiều cách để tùy biến và viết lại giao diện cho website. Từ cách đơn
giản nhất là viết thêm mã CSS để nạp đè các thuộc tính đã được đính nghĩa sẵn theo class
và ID. Tuy nhiên, nếu muốn hoàn toàn làm chủ và tối ưu việc sinh mã HTML chỉ cần viết
lại các tệp tin giao diện theo quy chuẩn đặt tên của Drupal.

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 16


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

Hình 5 Quá trình xử lý 1 theme

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 17


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

1.2.7 Node
Tất cả các loại nội dung trong Drupal đều được kế thừa từ một loại đơn giản nhất được
gọi là node. Các node có thể là một bài blog, một bản tin, một nhiệm vụ của dự án hay
bất kỳ loại nội dung nào và đều có chung cấu trúc dữ liệu. Chính điều này đã làm nên sự
mềm dẻo, linh hoạt cho hệ thống Drupal. Dựa vào node, hệ thống Drupal hoàn toàn có

thể mở rộng thành các giải pháp như cms, bán hàng trực tuyến, quản lý dự án…

Hình 6 Sự kế thừa của node
1.2.8 Block
Block là các phần hiển thị nội dung được bật hoặc tắt dựa theo vị trí xác định trong giao
diện website. Ví dụ, block hiển thị số người đang online trên website, block chứa đường
dẫn đến các bản tin mới nhất hay một danh sách các sự kiện đang diễn ra. Block được đặt
vào các vùng trên template như sidebar, header, hay footer. Block cũng có thể được thiết
đặt để hiển thị theo loại nội dung, trên trang chủ hay bất kỳ điều kiện nào.
Việc xây dựng website trên Drupal thường xoay quanh việc bố trí các block như thế nào,
vào các vị trí nào.

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 18


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

Hình 7 Mô hình thực thể liên kết của block

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 19


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

1.2.9 Cấu trúc thư mục
Bộ đóng gói Drupal bố trí các tệp tin như sau:


Hình 8 Hệ thống tệp tin của Drupal
Thông tin các thành phần:
-

Thư mục includes chứa các hàm thư viện chung nhất mà Drupal sử dụng.

-

Thư mục misc chứa các tệp tin JavaScript và các biểu tượng, hình ảnh được đóng
gói kèm Drupal.

-

Thư mục modules chứa các mô-đun đóng gói sẵn, mỗi mô-đun nằm trong một thư
mục con.

-

Thư mục profiles chứa các cấu hình cài đặt khác nhau cho một trang web. Nếu
như có bất kỳ cấu hình cài đặt nào khác, Drupal sẽ hỏi nên chọn cấu hình cài đặt
nào trong lần cài đặt đầu tiên của website. Lý do chính của cấu hình cài đặt này hỗ
trợ cho nhà phát triển đóng gói drupal thành các cấu hình khác nhau. Ví dụ: cấu
hình cho thương mại điện tử, cấu hình cho cổng thông tin… Bộ cấu hình xuất sắc
nhất của Drupal là Open Atrium hỗ trợ cho việc phát triển các ứng dụng web.

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 20



PHÁT TRIỂN WEBSITE BẰNG DRUPAL

-

Thư mục scripts chứa các mã nguồn cho việc kiểm tra cú pháp, làm sạch mã
nguồn (cache), chạy Drupal dạng giao diện dòng lệnh, và các thao tác khác với
cron (php).

-

Thư mục sites chứa các thành phần bổ sung cho Drupal như là mô-đun, giao diện.

Hình 9 Cấu trúc thư mục sites
1.3 Xử lý một yêu cầu (request)
Để hiểu tường tận các thao tác xử lý của Drupal khi có một yêu cầu gửi đến có thể cài đặt
các trình debug cho php.

1.3.1 Vai trò của web server
Drupal chạy trên nền web server, thường là apache. Nếu web server này tìm thấy tệp
tin .htaccess, những cấu hình cho php sẽ được khởi tạo. Toàn bộ các yêu cầu đến Drupal
đều thông qua index.php. Ví dụ, khi một yêu cầu có URL là />được gọi, sẽ có các thao tác xử lý sau:
1. Các luật của mod_rewrite trong file .htaccess của Drupal sẽ xem xét đường dẫn và
chia nó ra gồm phần đường dẫn cơ sở và đường dẫn (path). Như ví dụ trên thì
phần path là foo/bar.
2. Path này sẽ được gán cho tham số truyền URL là q.
3. Kết quả URL nhận được sẽ là />4. Drupal sẽ coi foo/bar như là đường dẫn nội bộ và quá trình xử lý bắt đầu trong
index.php

LÊ ĐỨC TRÍ 49K - CNTT


TRANG 21


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

Như kết quả xử lý trên thì Drupal sẽ xem và
là một vì chúng đều có chung một đường dẫn nội bộ.
Điều này đã làm nên khả năng trong suốt đường dẫn tuyệt vời ở Drupal.
Đối với các web server khác, như Microsoft IIS, vẫn có thể sử dụng trong suốt đường
dẫn bằng cách sử dụng mô-đun của Windows Internet Server Application
Programming Interface (ISAPI) là ISAPI Rewrite. IIS phiên bản 7 đã hỗ trợ việc viết
lại URL trực tiếp.
1.3.2 Quá trình khởi động
Drupal tự khởi động mỗi khi có yêu cầu được gửi đến thông qua 1 loạt các giai đoạn khởi
động. Những giai đoạn này được định nghĩa trong bootstrap.inc và quá trình xử lý diễn ra
theo các phần như sau.
Thiết đặt cấu hình
Quá trình này sẽ khởi tạo các mảng cấu hình nội bộ và và thiết lập đường dẫn cơ sở
($base_url) của site.
Bộ đệm đầu cho các trang
Trong những tình huống đòi hỏi khả năng đáp ứng cao của hệ thống, hệ thống bộ đệm có
thể được gọi trước khi tạo kết nối đến cơ sở dữ liệu. Hệ thống này sẽ gọi các tệp tin PHP
có chứa hàm page_cache_fastpath() trong đó có chứa nội dung và trả về cho trình duyệt.
Tính năng này sẽ được bật bằng cách thiết đặt biến page_cache_fastpath thành TRUE, và
tệp tin được nhúng vào sẽ được định nghĩa bằng cách thiết đặt biến cache_inc thành
đường dẫn đến tệp tin.
Khởi tạo cơ sở dữ liệu
Trong quá trình này thì loại cơ sở dữ liệu sẽ được xác định và khởi tạo một kết nối để sử
dụng cho các truy vấn đến cơ sở dữ liệu.

Kiểm soát truy cập thông qua Hostname/IP-Based
Drupal chấp nhận việc cấm các máy chủ dựa theo tên host hoặc địa chỉ IP. Quá trình điều
khiển này sẽ nhanh chóng kiểm tra các yêu cầu được gửi đến có phải từ 1 máy chủ bị cấm
hay không? Nếu đúng, yêu cầu này sẽ bị loại bỏ.
Khởi tạo phiên xử lý (session handling)

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 22


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

Drupal sử dụng các tính năng ưu điểm của session hỗ trợ sẵn của PHP và bổ sung thêm
các tính năng khác. Session được khởi động hoặc tái lập trong giai đoạn này. Biến global
$user chứa thông tin của người dùng hiện tại cũng được khởi tạo tại đây. Tuy nhiên
không phải tất cả các thuộc tính của nó đều được khởi tạo. Để lấy toàn bộ thông tin biến
này, ta có thể gọi hàm user_load() khi cần.
Bộ đệm cuối cho trang
Quá trình này xác định xem trang có cần tải lại hay vẫn sử dụng cache. Nếu phát hiện
không cần phải tải lại trang thì cache sẽ được sử dụng và quá trình này kết thúc.
Xác định ngôn ngữ
Trong giai đoạn này, tính năng hỗ trợ đa ngôn ngữ của Drupal sẽ được khởi tạo và quyết
định loại ngôn ngữ nào sẽ được sử dụng cho trang hiện tại.
Path
Trong giai đoạn này, các đoạn mã xử lý path và tên của path sẽ được gọi. Giai đoạn này
hỗ trợ giải quyết vấn đề trong suốt đường dẫn trong Drupal.
Hoàn tất
Quá trình này hoàn tất toàn bộ quá trình khởi động. Các thư viện sử dụng chung, hỗ trợ
giao diện, hỗ trợ cho gọi các hàm callback, xử lý tệp tin, Unicode, các thư viện xử lý hình

ảnh… được nạp.

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 23


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

Hình 10 Quá trình khởi động của Drupal

1.3.3 Xử lý yêu cầu
Các hàm callback sẽ xác định cần phải gọi và xử lý hàm nào cho một yêu cầu. Ví dụ, đối
với 1 yêu cầu nội dung như nó sẽ gọi hàm
node_page_view() trong node.module. Quá trình này sẽ trả về một dữ liệu của node từ cơ
sở dữ liệu và đặt vào 1 mảng dữ liệu có cấu trúc. Sau đó chuyển sang khởi tạo giao diện
(thememing).

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 24


PHÁT TRIỂN WEBSITE BẰNG DRUPAL

Hình 11 Quá trình xử lý khi có yêu cầu

LÊ ĐỨC TRÍ 49K - CNTT

TRANG 25



×