Trong đã, hệ quản trị nội dung Content Management System - CMS làxu hướng để x©y dựng c¸c web site cã c¸c chức năng kh¸c nhau với c¸c nghiệp vụ xử lý kh¸c nhau, như ứng dụng mạng x· hội,
Trang 1A Trờng Đại học Vinh
-
-đồ án tốt nghiệp đại học
ngành tin học
quản trị mạng doanh nghiệp
Giáo viên hớng dẫn: Th.S Cao Thanh Sơn Sinh viên thực hiện : Đặng Quang Tiến Lớp : 46K1 - CNTT
Vinh - 05/2010 LỜI NóI ĐẦU
PHP đã trở thành ngôn ngữ web số một hiện nay với số lượng website khổng lồ của nó trên internet, từ các ứng dụng cỡ lớn như Portal, thương mại
Trang 2điện tử, mạng x· hội, diễn đàn, giải trÝ Với c¸c hệ thống cã lượng truy cập khổng lồ như Yahoo, Facebook, Wikipedia…C¸c ứng dụng web ngày nay đa dạng về chức năng cũng như yªu cầu khắt khe về hệ thống, đặc biệt sự xuất hiện và ph¸t triển của c¸c hệ thống m· nguồn më tạo xu hướng ph¸t triển web Trong đã, hệ quản trị nội dung (Content Management System - CMS) là
xu hướng để x©y dựng c¸c web site cã c¸c chức năng kh¸c nhau với c¸c nghiệp vụ xử lý kh¸c nhau, như ứng dụng mạng x· hội, quản lý tài nguyªn, blog…
Với số lượng rất lớn c¸c hệ thống như vậy, việc chọn nền tảng để ph¸t triển ứng dụng đßi hỏi rất kỹ lưỡng, đặt ra nhiều tiªu chÝ: khả năng thực thi của hệ thống, khả năng ph¸t triển, mở rộng, bảo mật v.v… Trªn nền web, c¸c
hệ thống CMS phổ biến nhất được đ¸nh gi¸ cao trªn nhiều tiªu chÝ đã là Drupal ( www.drupal.org ), Joomla! ( www.joomla.org ), DotNetNuke ( www.dotnetnuke.com ),…C¸c framework như Zend ( www.zend.com/framework ), Symfony ( www.symfony-project.com ).
Drupal là CMS được đ¸nh gi¸ cao trªn nhiều tiªu chÝ và nhiều năm dẫn đầu trong b×nh chọn Opensouce CMS xuất sắc nhất, với số lượng người ph¸t triển và một cộng đồng lớn với hàng ngàn lập tr×nh viªn và c«ng ty ph¸t triển ứng dụng Với tÝnh năng mạnh mẻ, linh hoạt và cấu tróc th«ng minh, Drupal là nền tảng tốt để x©y dựng c¸c website hiện nay.
Đồ ¸n “Drupal trong x©y dựng Website b¸n điện thoại di động” , trªn
cơ sở nghiªn cứu, trao dồi hiểu biết cïng với sự hướng dẫn, gióp đỡ hết sức tận t×nh của thầy c« trong tổ Khoa học m¸y tÝnh đặc biệt của thầy Th.S Trần Xu©n Hào- Khoa c«ng nghệ th«ng tin- trường Đại học Vinh đ· gióp t«i nghiªn cứu Drupal và x©y dựng hoàn thành việc ứng dụng Drupal trong website b¸n
Trang 3c« trong tổ Khoa học m¸y tÝnh Mặc dï đ· hết søc cố gắng nhng vẫn cã nhiều thiếu sãt mong cã sự đãng gãp ý kiến của c¸c thầy, c« gi¸o và c¸c bạn để hệ thống ngày càng hoàn thiện hơn.
Xin ch©n thành cảm ơn!
Vinh, th¸ng 05 năm 2010
Trang 4Ch ¬ng 1
HỆ THỐNG QUẢN TRỊ NỘI DUNG DRUPAL
Một số Opensource CMS phổ biến:
Drupal (PHP) – Được đ¸nh gi¸ cao nhất hiện nay trªn c¸c tiªu chÝ ổnđịnh (stable), bảo mật (security), khả năng thực thi (performent), linhhoạt (flexible development), tối ưu hãa bộ m¸y t×m kiếm (SearchEngine Optimizer - SEO) …
ộ i dung miễn phÝ và m· ngu ồ n m ở (Opensouce CMS)
Hai năm liªn tục 2008, 2009 Drupal được đ¸nh gi¸ là hệ quản trị nội
Trang 5“Cần g× Drupal cã”, 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· đượcviết, thậm chÝ kh«ng cần hay nãi c¸ch kh¸c chỉ cần đạt mức “Sử dựng Drupal”
mà vẫn x©y dựng được những website mạnh mẽ và nhanh chãng
Thấy được sức mạnh của Drupal và trước nhu cầu thực tế của thời đại
“điện thoại”: Kh¸ch hàng cã quyền lư¹ chọn c¸c điện thoại tốt nhất và nhanhnhất, c¸c phương thức kinh doanh truyền thống (b¸n trực tiếp tại cửa hàng)kh«ng đ¸p ứng được.C¸c Website b¸n điện thoại trực tuyến (thương mại điện tử)
http://www.mua ban dtdd.com/ Đem lại doanh thu rất lớn cho c¸c doanh
nghiệp.Kh¸ch hàng chỉ cần lướt web, đặt mua thế là cã điện thoại m×nh ưng ýnhất
“Website b¸n điện thoại di động” được xây dựng từ yªu cầu đã
1.1.3 Tổng qu¸t về hệ thống.
Website cã đầy đủ c¸c chức năng của một website thương mai điện tử:
- Cho kh¸ch hàng duyệt, t×m kiếm c¸c sản phẩm và đặt mua
- Đăng kÝ làm kh¸ch hàng dài l©u
- Kh¸ch hàng cã quyền b×nh luận, đ¸nh gi¸ c¸c sản phẩm
Giao diện th©n thiện, gần gũi thuận tiện với khả năng điều hướng nộidung cao
1.1.4 Giới thiệu về Drupal
Drupal là một nền tảng ph¸t triển ứng dụng web (web platform), một hệquản trị nội dung (Content Management System) m· nguồn mở và miễn phÝđược ph©n phối theo giấy phÐp của GNU (General Public License) Cũnggiống như c¸c hệ thống quản trị nội dung hiện đại kh¸c, Drupal cho phÐpngườ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ậptr×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ảiquyế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à "khung sườn ph¸t triển ứng dụng web", v× kiến tróc th«ng minh và
Trang 6uyển chuyển của nã Drupal được ứng dụng ph¸t triển c¸c hệ thống websitekh¸c nhau, từ đơn giản đến c¸c website cã nghiệp vụ phức tạp.
Drupal được chạy trªn rất nhiều m«i trường kh¸c nhau, bao gồmWindows, 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 MySQLhoặc PostgreSQL để lưu nội dung và c¸c thiết lập
Cơ sở dữ liệu (Database)
M¸y chủ web (Web
server)
Hệ điều hành (Operating
System)
Trang 7 Ứng dụng nội bộ ( Intranet applications)
Personal web sites or blogs
Ứng dụng thương mại điện tử (E-commerce applications)
Quản lý tài nguyªn (Resource directories)
Một số website tiªu biểu:
Drupal đã được sử dụng x©y dựng hàng ngàn website trªn thế giới, đachức năng, đa ng«n ngữ
- BBC Magazines (www.bbcmagazines.com)
- Chương tr×nh lương thực liªn hợp quốc (United Nations World Food
- …
1.1.5 Kiến tróc của Dupal
Drupal được kiến tróc tu©n theo m« h×nh MVC (Model–view–controller) - MVC là một mẫu ế n trki ó c ph ầ n m ề m trong kỹ thuật k ỹ s ư phầnmềm Khi sử đóng c¸ch, mẫu MVC gióp cho người ph¸t triển phần mềmthành thạo c¸c nguyªn tắc, c¸c thao t¸c trong nghề nghiệp và giao diện ngườidïng một c¸ch râ ràng hơn Phần mềm ph¸t triển theo mẫu MVC tạo nhiềuthuận lợi cho việc bảo tr× v× c¸c nguyªn tắc trong nghề nghiệp và giao diện Ýtliªn quan với nhau
Trong mẫu Model-View-Controller, m« h×nh (model) tượng trưng cho
d
ữ li ệ u của chương tr×nh phần mềm Tầm nh×n hay khung nh×n (view) baogồm c¸c thành phần của giao diện người dïng Bộ kiểm tra hay bộ điều chỉnh(controller) quản lý sự trao đổi giữa dữ liệu và c¸c nguyªn tắc nghề nghiệptrong c¸c thao t¸c liªn quan đến m« h×nh
Trang 8Bộ lâi của Drupal (core)
( Sơ lược về phần lâi của Drupal )
Drupal core bao gồm c¸c phần m· xử lý hệ thống khởi động từ khi nhậnyªu cầu (request), gọi c¸c thư viện, gọi c¸c module cung cấp c¸c chức năng
xö lý và xuất bản nội dung
Trang 9- Định danh URL (Uniform Resouce Locator)
- Địa phương hãa (Xö lý website đa ng«n ngữ)
1.2 C¸c thuật ngữ cơ bản của Drupal.
C¸c Node được mở rộng từ Node cơ bản được gọi là kiểu nội dung, tức
là ngoài c¸c trường ngầm định của Node cơ bản th× kiểu nội dung cßn đượcthªm c¸c trường kh¸c
VÝ dụ: kiểu néi dung cã tªn là “Điện thoại” ngoài c¸c trường ngầmđịnh, cßn cã thªm c¸c trường: Gi¸ b¸n, H·ng,Model, Th«ng số
Trang 10nguyªn tắc làm việc của Node Node thường dïng để lưu trữ c¸c phần nộidung của website.
- Block cã c¸c tïy chọn để điều khiển ai là người được quyền xem nã
và những trang mà nã sẽ xuất hiện
tr×nh bày ở trang điều hành module
+ Version: m· số phiªn bản của module.
+ Dependencies: tªn của module mà module đang thiết kế yªu cầu tới
(trong trường hợp sử dụng hàm từ module kh¸c), nếu cã nhiều module th× c¸cmodule này c¸ch nhau bởi dấu phẩy Module kh«ng thể được kÝch hoạt nếuc¸c module được yªu cầu kh«ng tồn tại hoặc chưa được kÝch hoạt
+ Package: ph©n nhãm chức năng chứa đựng module.
Một điểm hay của Drupal là cho phÐp người ph¸t triển module cã thể sửdụng lại những hàm đã được viết ở c¸c module kh¸c để x©y dựng module chom×nh Module cã thể tự động ngưng hoạt động tạm thời để giảm tải cho m¸ychủ khi cã qu¸ nhiều truy cập bằng c¸ch bật module throttle (quản lý cơ chế
Trang 11Mỗi module phải xử lý được c¸c sự kiện hoặc định nghĩa c¸c sự kiệnriªng của nã Mỗi thao t¸c cần được ph©n quyền râ ràng Việc ph©n quyền nàythuộc về người điều hành Mỗi thao t¸c cần cã một internal path (hay drupalpath) nhất định.
Th«ng tin được khai b¸o râ ràng qua tập tin info, điều đã sẽ làm chongười điều hành dễ quản lý Kh«ng cần quan t©m nhiều đến quyền hạn truycập Module được t¸ch ra một thư mục cụ thể để quản lý một c¸ch dễ dàng Ph¸t triển module kh«ng cần thay đổi phần nh©n của m· nguồn, khi nh©n cãlỗi bảo mật, việc cập nhật trở nªn dễ dàng Việc g¸n c¸c quyền truy cập vớic¸c vai trß thuộc về người điều hành, người điều hành kh«ng bị ràng buộc bởiquyền truy cập nào Mỗi module cã thể định nghĩa cho riªng nã những quyềnhạn truy cập kh¸c nhau
1.2.8 Hook
Hook cã thể hiểu là cơ chế xử lý sự kiện nội bộ trong hệ thống drupal,cßn được gọi là “callback”, th«ng qua cơ chế hook, hệ thống drupal sẽ xử lýc¸c sự kiện tương ứng và module phải cài đặt hook để mở rộng hoặc nạpchồng c¸c xử lý
VÝ dụ: khi một nội dung (node) được gửi lªn hệ thống, th× c¸c sự kiệnđược ph¸t sinh:
hook_validate() : x¸c thực nội dung
hook_insert() (update, delete): xử lý sự kiện khi một node được thªm(sửa, xãa)
hook_submit(): xử lý sau khi một node được xử lý thành c«ng
1.2.9 Taxonomy
Taxonomy là c¸ch để ph©n nhãm nội dung c¸c node trong drupal
VÝ dụ: kiểu nội dung tin_tøc cã thể được ph©n theo nhiều nhãm(taxonomy): Tin thị trường, tin thể thao, tin thế giới… Trong drupal mỗi
Trang 12taxonomy cã thể sử dụng cho nhiều kiểu nội dung kh¸c nhau; cã thể ph©nnhiều cấp; cã c¸c kiểu chọn: đơn, nhiều, hoặc theo thẻ…
1.2.10 Theme
Một theme ( giao diện ) bao gồm c¸c tệp xử lý giao diện ( css ), c¸c tệp
kịch bản ( js ), c¸c tệp template (.tpl.php) định dạng tr×nh bày c¸c kiểu nộidung cung cấp giao diện cho website
1.3 Cài đặt và ph¸t triển Drupal.
Trang 13( KÝch hoạt Module hiện cã)
Việc uninstall một module chỉ cã thể được thực hiện nếu như: ngườiph¸t triển viết hàm uninstall cho module của họ + module cã lưu dữ liệu trongdatabase C¸c module kh«ng sử dụng nªn xãa bỏ khỏi thư mục c à i đặ t drupal
site
1.3.2 KÝch hoạt và cài đặt một theme
Trang 14Sau khi đ· cã c¸c theme cần thiết, chóng ta cần copy theme của chóng
ta vào đóng thư mục cài đặt drupal, cã 3 vị trÝ để đưa theme vào:
Trang 161.3.3 Module Views và CCK
a) Module CCK: Dïng để tạo kiểu nội dung mà kh«ng cần phải code.
Để tạo kiểu nội dung, vào admin/content/types/add.Module CCK cung cấp 1giao diện trực quan để thªm, sửa, xãa, định dạng và sắp xếp thứ tự xuất hiệnc¸c trường.Kh«ng thể xãa c¸c trường ngầm định
(Form khai b¸o tạo kiểu nội dung)
Trang 17(Giao diện quản lý c¸c trường của kiểu nội dung “Điện thoại”)
Chó ý:
- “Type of data to store” là kiểu dữ liệu của trường trong cơ sở dữ liệu.-“ Form elements to edit the data “ là kiểu hiển thị trường trong form thªm, sửa nội dung của kiểu nội dung này
Trang 18- CCK chỉ cung cấp 1 số trường, muốn thªm c¸c trường th× cần phải cài
và kÝch hoạt c¸c trường kh¸c (c¸c trường cũng là Module nhưng là modulephụ thuộc vào module CCK)
CCK cung cấp form cấu h×nh sự hiển thị c¸c trường của kiểu nội dung
“Điện thoại” trong 2 trường hợp nội dung (Node) theo kiểu tãm tắt (Teaser)hoặc đầy đủ (Full Node).C¸c trường kh«ng muốn hiển thị chỉ cần check
Trang 19b) ModuleViews (phiªn bản 2.0- gọi tắt là views 2):cung cấp 1 giao
diện trực quan để người quản trị thªm, sửa và xãa c¸c view.Mỗi View cho
Trang 20phÐp lọc dữ liệu, tr×nh bày để hiển thị, mà người ph¸t triển kh«ng phải canthiệp trực tiếp vào dữ liệu hoặc viết code cho chương tr×nh.
Trong 1 view cã thể định nghĩa nhiều view, mỗi view đều cã những cấuh×nh kh¸c nhau tïy thuộc vào người quản trị, để tr×nh những kết quả kh¸cnhau phï hợp với nhu cầu của thực tế
Để thªm 1 view ta vào trang admin/build/views/add
C¸c thuộc tÝnh của một View:
- Type: Views cã thể lấy nội dung từ nhiều kiểu nội dung kh¸c nhau
Để định nghĩa một view, trước tiªn, chóng ta cần x¸c định, kiểu nội dungchóng ta cần lấy về là gì
- Display: Views cần biết được thuộc tÝnh Display của mỗi view để x¸cđịnh vị trÝ mà kết quả của view tương ứng được hiển thị Mỗi view cã thể cãnhiều display, mỗi display lại cã thể cã những thiết lập riªng để tuú chỉnh kếtquả tr×nh bày Nãi vÒ Display, mặc định, Views cung cấp một số Display typeđược liệt kª như sau
+ Default display:Default display, là display chÝnh của mỗi view, đượcdïng để lưu trữ c¸c thiết lập của view Default display kh«ng thật sự được sửdụng ở bất kỳ nơi nào, ngoại trừ bªn trong hệ thống Views 2
+ Page display:Mỗi page display cã thiết lập path và c¸c tïy chọn thiếtlập về menu Khi tr×nh bày một view ở dạng page display, kết quả của view sẽđược tr×nh bày như nội dung chÝnh của một trang, nghĩa là, kết quả của view
sẽ được tr×nh bày ở khu vực tr×nh bày nội dung chÝnh khi bạn truy cập vàoURL ứng với path đã thiết lập cho page display
Page display, nếu cã c¸c thiết lập về argument, sẽ nạp vào nã c¸c
Trang 21page display sẽ được sử dụng, khi người dïng truy cập vào URL 'node/1/foo',
và tham số đầu tiªn sẽ là '1'
+ Block display:Nếu một view cã định nghĩa một/nhiều block display,
nã đồng thời cũng sẽ định nghĩa c¸c block trong hệ thống Drupal với nội dungtương ứng với c¸c thiết lập của block display
Chó ý: block display kh«ng chấp nhận argument như c¸c dạng viewdisplay kh¸c Trong trường hợp, chóng ta cần sử dụng argument cho c¸c blockdisplay, để mở rộng khả năng tr×nh bày, chóng ta buộc phải truyền argumentvào ở dạng argument mặc định; C¸ch thực hiện: cấu h×nh view tương ứng >chọn display tương ứng > xem mục Arguments > nhấp chän argument tươngứng > xem mục "Action to take if argument is not present" vừa hiện ra > chọn
"Provide default argument" > xem mục "Default argument type" vừa hiện ra.Nếu chọn "PHP Code" cã thể nhập đoạn PHP code tương tự như sau (kh«ngcần cặp thẻ đãng mở PHP):
và sau kết quả của display chính của view Có thể sử dụng attachment display
để trình bày bảng danh mục (glossary) cho các view Xem view"glossary"được cung cấp mặc định bởi view như một thí dụ cho việc sử dụngAttachment display
Trang 22+ Feed display: Feed display cho phÐp chóng ta đÝnh kÌm RSS feed vàomột view.
- Override:
Như đ· biết mỗi view cã thể cã một default display và cã thể định nghĩathªm một hoặc nhiều c¸c display kh¸c, với c¸c dislay type tïy thÝch mà viewcung cấp Theo mặc định, c¸c display, kh¸c default display, sẽ sử dụng c¸cthiết lập của default display cho việc tạo kết quả tr×nh bày của chóng Do đã,nếu chóng ta chỉnh sửa c¸c thiết lập của một display, th× c¸c display kh¸c ởcïng một view cũng sẽ bị ảnh hưởng Giải quyết trở ngại này, views 2 cã đưa
ra khả năng "override", gióp cho c¸c display, ngoài việc sử dụng c¸c thiết lập
từ default display, cã thể cã những thiết lập riªng cho nã, c¸c thiết lập này,nếu được chỉnh sửa, th× kh«ng ảnh hưởng đến c¸c display kh¸c ở cïng view
- Output style (view style)
View ph¸t sinh ra kết
quả, hệ thống style gióp
chóng ta cã thể tuỳ
chỉnh c¸ch tr×nh bày kết
quả được ph¸t sinh đã
Về cơ bản, mỗi output
style là một khu«n mẫu
giao diện th«ng minh,
xử lý kết quả của view
và xuất kết quả đã ra
Tất cả c¸c style trong Views 2 đều cã thể được qu¸ tải bằng c¸ch đặt bản c¸c
Trang 23c¸c khu«n mẫu giao diện cã thể được sử dụng đÓ qu¸ tải lªn c¸c thành phầnkết quả của view.
C¸c output style được views 2 cung cấp sẵn:
Grid: Tr×nh bày kết quả ở dạng «
List: Tr×nh bày kết quả ở dạng danh s¸ch
Table: Tr×nh kết quả ở dạng bảng
Unformatted: Tr×nh bày kết quả ở đơn giản, mỗi dßng kết quả chỉ đượcbao quanh bởi cặp thẻ với một số DOM class, dựa vào c¸c class đơngiản này, quản trị viªn cã thể sử dụng CSS để định dạng lại kết quảtr×nh bày
Trường hợp c¸c output style được cung cấp sẵn này kh«ng đ¸p ứng đủnhu cầu thực tế, chóng ta cã thể x©y dựng module mở rộng views 2 để địnhnghĩa thªm c¸c output style kh¸c
- Field (trường dữ liệu)
Đối với một số output style, thÝ dụ table, chóng ta cần x¸c định cụ thểtrường dữ liệu nào được tr×nh bày trong kết quả tr×nh bày Tïy thuộc vàotrường dữ liệu được x¸c định, chóng ta cã thể cã những thiết lập riªng chochóng
- Sort criteria
C¸c dßng kết quả được ph¸t sinh bởi view cã thể được sắp xếp thứ tựtheo một hoặc nhiều tiªu chÝ Tuỳ thuộc vào view type (và c¸c relationship),mỗi view sẽ cã những tïy chọn sắp xếp thứ tự kết quả tr×nh kh¸c nhau
- Filter
Filter, hay bộ lọc nội dung, là một tÝnh năng chủ chốt của views 2, giópngười điều hành cã thể lọc nội dung theo những tiªu chÝ nhất định Kh«ngnhư c¸c tÝnh năng liệt kª node của nh©n Drupal, /node/, chỉ liệt kª được c¸cnode được thiết lập thuộc tÝnh "promoted to frontpage" (được quảng b¸ ởtrang chủ) là true, /taxonomy/term/x/, chỉ liệt kª được c¸c node cã g¸n từ liệu
Trang 24là x, views với tÝnh năng filter, cung cấp khả năng tr×nh bày nội dung của hệthống rất sinh động Với views 2, b©y giờ, chóng ta cã thể tr×nh bày c¸c nodeđược tạo bởi một người dïng nhất định, ở (c¸c) term nhất định, vào thờikhoảng nhất định,
- Argument
TÝnh năng filter của Views 2 mạnh, tuy nhiªn nã cũng cã mét trở ngạinhỏ: filter kh«ng động theo từng view ThÝ dụ, chóng ta định nghĩa một viewV1 để tr×nh bày c¸c node cã node type là NT1, cã thể truy cập view này quaURL /content/foo Sau một thời gian, theo nhu cầu ph¸t triển của hệ thống,chóng ta lại cần x©y dựng một view V2 rất giống với V1, chỉ kh¸c ở filternode type, thay v× node type là NT1 th× là NT2 Râ ràng, lóc này, chóng taphải lặp lại nhiều thao t¸c đã thực hiện ở V1 vào lại V2 Giả sử, chóng ta cã Nview như vậy, khi chỉnh sửa c¸c view này theo nhu cầu thực tế, c«ng sức củachóng ta sẽ xN
Argument được đặt ra như là một mở rộng của filter Thay v× là tĩnh ởmỗi view, argument cung cấp khả năng lọc néi dung trong view bằng c¸c gi¸trị cã thể thay đổi động Trở lại với thÝ dụ trªn, thay v× định nghĩa một filterclause cho view, chóng ta sẽ định nghĩa một argument: "node type", và ởURL, chóng ta sẽ thay /content/foo thành /content/foo/% Lóc này, khi ngườidïng truy cập URL /content/foo/NT1, view sẽ lọc nội dung và chỉ trả vềnhững node cã node type là NT1,
- Relationships
Là một tÝnh năng mới thªm vào Views 2, cung cấp cho view khả năngtruy vấn kết quả kh¸c từ c¸c kết quả đ· t×m được Một thÝ dụ thực tế tương đối
Trang 25trªn (5.1) Tạo một view; (5.2) Thiết lập output syle thành "table"; (5.3) Ở mục
"relationships", thªm vào 2 node reference đ· tạo ở bước 3; (5.4) Ở mục
"fields", thªm 3 lần field "Node: Title" và "Node: Body", ở node thứ nh×, chọnrelatioship đến 'albumn', và ở node thử ba, chọn relationship đến 'artist' (6)Xem thử kết quả
- Use AJAX
Nếu view/output tương ứng cã thiết lập sử dụng pager và thuộc tÝnh UseAJAX được thiết lập là Yes, khi người dïng click vào c¸c liªn kết ở mục ph©ntrang, thay v× tr×nh duyệt sẽ di chuyển sang trang, th× nội dung mới sẽ đượcnạp theo dạng AJAX
- More link
Thªm liªn kết, vào phÝa dưới kết quả của view, dẫn đến page view.Trường hợp view của chóng ta cung cấp hơn một page display, mục này cầnchỉ định râ page display nào cần được trỏ đến
Trang 26Tr×nh bày c¸c th«ng tin về giao diện gióp người x©y dựng giao diện của
hệ thống cã thể dễ dàng x©y dựng c¸c khu«n mẫu giao diện qu¸ tải
1.4 Ph¸t triÓn, x©y dùng module cho Drupal
Viết module trªn drupal gồm c¸c bước:
- Tạo hệ thống file, gồm 2 file bắt buộc là <ten_module>.info lưu trữ
th«ng tin module và <ten_module>.module chứa code xö lý cho module
- Cài đặt c¸c hook, tïy theo chức năng của module mà cài đặt c¸c hook
kh¸c nhau
- Cài đặt và lưu giữ c¸c thiết lập cho module
- Tạo phần quản trị (backend) riªng cho module
1.4.1 Tạo hệ thống file gồm c¸c file chÝnh
- <ten_module>.info : file dạng ini (PHP INI) lưu c¸c th«ng tin của module, bao gồm:
Trang 27dependencies[] = Tên module lệ thuộc vào 1
dependencies[] = Tên module lệ thuộc vào 2
package = "Tên gói module"
- hook_menu: xử lý khi có một request (yêu cầu) đến hệ thống.
Ví dụ, tạo xử lý khi người dùng truy xuất vào đường dẫn (URL)/mymodule, thì hiển thị ra văn bản ‘Hello world”
đến khi (callback) khi truy cập đến
'access arguments' => array('truy cap noi dung'), //đối số xác định phân quyên truy cập
);
return $items;
Trang 28sự kiện khi xử lý node: thêm mới, sửa, xóa
// Tiền xử lý break
;case 'submit':
// Xử lý khi có node đã đợc lu break;
case 'insert':
// Xử lý khi có node đã đợc thêm case 'update':
// Xử lý khi sửa node break;
// …}
}