Tải bản đầy đủ (.pdf) (176 trang)

Xây dựng website học tập trực tuyến ngành công nghệ thông tin

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 (4.16 MB, 176 trang )

B giáo dc và đào to
Trng i hc M TP.HCM
Khoa công ngh thông tin
v(w








Khoá lun tt nghip



 tài
Xây dng Website hc tp trc tuyn
ngành công ngh thông tin










GVHD: NINH XUÂN HNG
SVTH: TRNG VNH NGHIP - 10701086


PHM NGC HUY - 10761217









Niên khoá 2007 - 2011



LI CM N






u tiên, chúng em xin gi li cm n chân thành đn quý Thy, Cô khoa Công
Ngh Thông Tin, trng i hc M đã tn tình ging dy, truyn đt nhng kin thc,
kinh nghim quý báu và đã khích l, h tr mi mt cho chúng em trong sut bn nm
đi hc chun b hành trang vào đi.

c bit, chúng em xin cm n Thy Ninh Xuân Hng, ngi luôn sn sàng và
tn tình hng dn, giúp đ, đng viên chúng em trong su
t quá trình thc hin đ án
này.


Chúng em xin cm n tt c bn bè đã và đang luôn đng viên, chia s, giúp đ
chúng tôi tn tình trong sut thi gian hc tp cng nh thc hin đ án.

Cui cùng, chúng con kính gi li cm n sâu sc nht đn toàn th gia đình. Cm
n Cha, M đã khó nhc sinh thành và giáo dng chúng con. Cm n tt c mi ngi
đã tin tng, khích l
, đng viên và to mi điu kin tt nht cho chúng con trong sut
thi gian qua đ chúng con có đc thành qu nh ngày hôm nay.




TPHCM, tháng 2 nm 2011
Nhóm thc hin

Trng Vnh Nghip
Phm Ngc Huy











LI NHN XÉT GIÁO VIÊN HNG DN











































LI NHN XÉT GIÁO VIÊN PHN BIN





































Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




1
MC LC

LI M U 11
PHN I DRUPAL 13
I. TNG QUAN V DRUPAL 13
I.1. Khái nim 13

I.2. Lch s 13
I.3. Nn tng 13
I.4. ng dng 13
I.5. u đim 13
I.6. Nhc đim 14
II. CÁCH HOT NG CA DRUPAL 14
II.1. Technology Stack 14
II.2. Core 15
II.3. Module 15
II.4. Hooks 16
II.5. Themes 16
II.6. Nodes 16
II.7. Blocks 17
III. MODULE CHUN CA DRUPAL 17
III.1. Aggregator 17
III.2. Blog 17
III.3. Blog API 17
III.4. Book 17
III.5. Comment 18
III.6. Contact 18
III.7. Filter 18
III.8. Forum 18
III.9. Help 18
III.10. Legacy 18
III.11. Node 19
IV. CÁC MODULE H TR THÊM 19
IV.1. Views 19
IV.2. Panels 19
IV.3. Content Construction Kit (CCK) 20
IV.4. Ckeditor 20

V. XÂY DNG MODULE CHO DRUPAL 20
V.1. File .info và .module 20
V.1.1. File .info 20
V.1.2. File .module 21
V.2. Mt s hook c bn 21
V.3. nh ngha mt hook mi 24
V.3.1. Cách to mt hook 24
Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




2
V.3.2. S dng hook vào các module khác 24
V.4. jQuery trong Drupal 24
V.5. Form API 25
V.5.1. To form 25
V.5.2. Giao din hóa form 26
V.5.3. Kim tra d liu 26
V.5.4. Gi form lên trang web 26
VI. T CHC LU TR CA DRUPAL 27
VII. TÍNH AN TOÀN CA DRUPAL 29
VII.1. An toàn đi vi ngi dùng 29
VII.2. An toàn đi vi mã ngun 29
VII.3. Tính an toàn đi vi d liu 30
PHN II MOODLE 31
I. TNG QUAN V MOODLE 31
I.1. Khái Nim 31
I.2. Lch s 31
I.3. u đim 31

II. TÀI NGUYÊN MOODLE H TR 31
II.1. Nhãn (Label) 31
II.2. Trang vn bn (Text Page) 31
II.3. Trang web (Web Page) 32
II.4. Liên kt m
t file hay website (URL) 32
II.5. Th mc (Folder) 32
II.6. Gói ni dung (IMS Content Package) 32
III. CÁC HOT NG MOODLE H TR 32
III.1. Nhim v (Assignments) 32
III.1.1. Tùy chn cách upload file (Advance uploading of file) 33
III.1.2. Kim tra trc tuyn (Online Text) 33
III.1.3. Upload mt file (Upload a single file) 34
III.1.4. Hot đng offline (Offline Activity) 34
III.2. Tán gu (Chat) 34
III.3. Din đàn (Forum) 34
III.4. Bài hc (Lesson) 35
III.5. Câu hi (Quiz) 36
III.5.1. To danh mc 37
III.5.2. To câu hi 38
III.6. Bng thut ng (Glossary) 38
III.7. Wiki 39
III.8. La chn (Choice) 40
III.9. Kho sát (Survey) 41
III.10. Gói SCORM (SCORM Package) 42
IV. XÂY DNG MODULE CHO MOODLE 42
IV.1. Cu trúc module 42
Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin





3
IV.2. Vit module mi da trên NEWMODULE Template 42
V. QUN TR 43
V.1. Thông báo (Notification) 43
V.2. Ngi dùng (Users) 43
V.2.1. Chng thc (Authentication) 43
V.2.2. Tài khon (Accounts) 45
V.2.3. Quyn (Permissions) 45
V.3. Khóa hc (Course) 46
V.4. nh v (Location) 49
V.5. Ngôn ng (Languages) 49
V.6. Modules 50
V.7. Bo mt (Security) 51
V.8. Giao din (Apperance) 52
V.9. Trang chính (Front Page) 54
V.10. Server 55
PHN III CHUN SCORM 56
I. KHÁI QUÁT V SCORM 56
I.1. Quá trình phát trin ca SCORM 56
I.2. Li ích kinh doanh ca SCORM 56
II. CÁC KHÁI NIM C BN LIÊN QUAN N SCORM 57
II.1. Asset 57
II.2. SCO (Sharable Content Object) 57
II.3. S khác nhau gia Asset và SCO 57
III. CU TRÚC SCORM 58
III.1. CAM (Content Aggregation Model) 58
III.1.1. Content Model 58
III.1.2. Meta-data 59

III.1.3. Content Package 61
III.2. RTE (Run time Environment) 62
III.2.1. Launch 62
III.2.2. Application Program Interface (API) 62
III.2.3. Data Model 62
PH
N IV XÂY DNG WEBSITE HC TP TRC TUYN NGÀNH CÔNG
NGH THÔNG TIN NG DNG DRUPAL VÀ MOODLE 67
I. PHÂN TÍCH 67
I.1. Mô t bài toán 67
I.2. Yêu cu chc nng 67
I.2.1. Yêu cu lu tr 67
I.2.2. Yêu cu nghip v 67
I.3. Yêu cu phi chc nng 68
I.3.1. Tính tin hoá 68
I.3.2. Tính bo mt 68
I.3.3. Tính tng thích 68
Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




4
I.4. Phng pháp 68
II. THIT K 68
II.1. Thit k tng th 69
II.1.1. Thit k vic trình bày tin tc 69
II.1.2. Thit k khóa hc 69
II.1.3. Bài thi 69
II.1.4. Np bài tp 69

II.1.5. Din đàn tho lun 69
II.1.6. Chm đim 70
II.1.7. Thông báo 70
II.1.8. Qun lý ngi dùng 70
II.1.9. ng nhp 70
II.2. S đ website 70
III. Trin khai 76
III.1. Chun b 76
III.2. Cài đt 76
III.2.1. Cài đt Xampp 76
III.2.2. Cài đt Drupal 78
III.2.3. Cài đt Moodle 82
III.2.4. Cài đt module h tr thêm trong Drupal 85
III.3. Xây dng h th
ng website 86
III.3.1. Drupal 86
III.3.1.1. Xây dng trang “Gii thiu” 86
III.3.1.2. Xây dng trang “Tin tc – Thông báo” 91
III.3.1.3. Hin th tin t website Moodle 95
III.3.1.4. Xây dng trang “nh hot đng” 97
III.3.1.5. To trang “Liên h” 100
III.3.1.6. Xây dng trang ch 101
III.3.1.7. Xây dng menu cho user qun tr 108
III.3.2. Moodle 112
III.3.2.1. Xây dng khóa hc 112
III.3.2.1.1. Tài nguyên khóa hc 121
III.3.2.1.2. Hot đng khóa hc 123
III.3.2.1.3. Các block ca khóa hc 128
III.3.2.2. Xây dng đ thi 129
III.3.2.2.1. To câu hi 129

III.3.2.2.2. Làm bài thi 132
III.3.2.3. im s 133
III.3.2.3.1. Chm đim 133
III.3.2.3.2. Xem đim 136
IV.
ÁNH GIÁ VÀ HNG PHÁT TRIN 139
IV.1. ánh giá 139
IV.2. Hng phát trin 139
Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




5
TÀI LIU THAM KHO 140
PH LC 141
I. Xây dng bài ging 141
I.1. eXe 141
I.1.1. Cài đt 141
I.1.2. Thc hành 141
I.1.2.1. Khi đng mt d án bài ging 141
I.1.2.2. nh ngha thuc tính ( Defining Properties) 141
I.1.2.3. Xác đnh cu trúc bài ging (Defining an outline) 143
I.1.2.4. Ý ngha các thành phn iDevices 144
I.1.3. Minh ho s dng mt s công c iDevice 146
I.2. PPT2Flash Professional 151
I.2.1. Cài đt 151
I.2.2. Thc hành 151
II. To câu hi trc nghim 157
II.1. HotPotato 157

II.1.1. Tng quan 157
II.1.2. Jquiz: 158
II.1.3. Mt s cu hình cn thit chung c
a HotPot6: 160
II.2. QuizCreator 161
II.2.1. Cài đt 161
II.2.2. To câu hi 161
II.2.3. Thit lp 165
Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




6

MC LC HÌNH

Hình 1-1. Drupal’s Technology Stack 14
Hình 1-2. Tng quan v Drupal core (không bao gm tt c chc nng) 15
Hình 1-3. Module có th đc thêm vào đ tng cng các chc nng. 16
Hình 1-4. Kiu node đc bt ngun t mt node c bn và có th thêm các trng. 27
Hình 1-5. Mi quan h gia các bng trong c s d liu ca Drupal. 28

Hình 3-1. Cu trúc gói ni dung 61
Hình 3-2. Mô hình RTE 62
Hình 3-3. C ch giao tip gia LMS và SCO 64
Hình 3-4. SCO gi hàm LMSInittialize() t LMS 65
Hình 3-5. SCO kim tra và truyn cho LMS qun lý 65
Hình 3-6. SCO gi hàm LMSFinish() t LMS đ kt thúc phiên làm vic 66



Hình 4-1. S đ website Drupal 71
Hình 4-2. Thit k Tin tc – Thông báo 72
Hình 4-3. S đ website Moodle 73
Hình 4-4. Các khóa hc 74
Hình 4-5. Thit k khóa hc 75
Hình 4-6. Start Apache và MySql 76
Hình 4-7. Cài đt chy service 77
Hình 4-8. Màn hình web server 78
Hình 4-9. To c s d liu cho website Drupal 79
Hình 4-10. Chn ngôn ng cài đt Drupal 79
Hình 4-11. in thông tin Database 80
Hình 4-12. in thông tin site name, site email 81
Hình 4-13. in thông tin ngi qun tr 81
Hình 4-14. Drupal đã cài đt thành công 82
Hình 4-15. La chn gói ngôn ng cài đt 82
Hình 4-16. ng dn website 83
Hình 4-17. Cu hình c s d li
u 83
Hình 4-18. Kim tra cu hình máy ch 84
Hình 4-19. Màn hình đang cài đt 84
Hình 4-20. Màn hình cài đt thành công Moodle 85
Hình 4-21. Enable module plugin Drupal 86
Hình 4-22. To mt Content Type 87
Hình 4-23. in thông tin Content Type 87
Hình 4-24. Content Type ‘Gioi thieu’ đã to 88
Hình 4-25. To trang Gii thiu 88
Hình 4-26. in tiêu đ và ni dung trang 89
Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin





7
Hình 4-27. Tùy chnh trang Gii thiu 90
Hình 4-28. Menu Gii thiu 90
Hình 4-29. Ni dung trang Gii thiu 91
Hình 4-30. To Vocabulary Taxonomy 92
Hình 4-31. Chn loi content cn phân loi 92
Hình 4-32. Add terms Taxonomy 93
Hình 4-33. Chn loi Tin tc – Thông báo 93
Hình 4-34. Các field sau khi add 94
Hình 4-35. Filter View 94
Hình 4-36. Truyn đi s cho View 95
Hình 4-37. Enable Aggergator 95
Hình 4-38. Add Feed 96
Hình 4-39. Update Item 96
Hình 4-40. Aggregator item 97
Hình 4-41. To ImageCache 98
Hình 4-42. Action ImageCache 98
Hình 4-43. Field cn Rewrite 99
Hình 4-44. Code Rewrite 100
Hình 4-45. Form liên h 101
Hình 4-46. Giao din trang ch Drupal 102
Hình 4-47. To Custom Page Trang ch 103
Hình 4-48. Chn Layout Builder 104
Hình 4-49. Show layout designer 104
Hình 4-50. Giao din tùy chnh Layout Page 105
Hình 4-51. Add Content 106
Hình 4-52. Truyn đi s cho View Tin tc – Thông báo 107

Hình 4-53. Xem Taxonomy Term ID 108
Hình 4-54. Menu cho user qun tr 108
Hình 4-55. View qun tr 109
Hình 4-56. Style Bulk Operation 110
Hình 4-57. Hi
n th theo Bulk Operations 111
Hình 4-58. Menu qun tr 112
Hình 4-59. Thêm/sa các khóa hc 113
Hình 4-60. Thêm mc mi 113
Hình 4-61. Khai báo và mô t mc mi 114
Hình 4-62. Thêm khóa hc mi 115
Hình 4-63. Mt khóa hc theo ch đ 116
Hình 4-64. Activity completion condition 117
Hình 4-65. Mt khóa hc theo tun 118
Hình 4-66. Allow access form 119
Hình 4-67. Mt khóa hc theo chun SCORM 119
Hình 4-68. Bt ch đ chnh sa 120
Hình 4-69. Sau khi bt ch đ chnh sa 121
Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




8
Hình 4-70. Tài nguyên dng Page 122
Hình 4-71. Tài nguyên dng Folder 122
Hình 4-72. Bài tp cho sinh viên 122
Hình 4-73. Gói SCORM 122
Hình 4-74. Din đàn tho lun 123
Hình 4-75. To ch đ tho lun mi 124

Hình 4-76. Hi đáp trc tuyn 125
Hình 4-77. Chat 125
Hình 4-78. Thm dò ý kin 126
Hình 4-79. Kt qu thm dò 126
Hình 4-80. Thit lp thông tin np bài tp 127
Hình 4-81. Upload file bài tp 128
Hình 4-82. Block Tin mi nht 128
Hình 4-83. S kin sp din ra 128
Hình 4-84. Hot đng gn đây 129
Hình 4-85. Thành viên trc tuyn 129
Hình 4-86. Message 129
Hình 4-87. To  thi 130
Hình 4-88. T
o câu hi 130
Hình 4-89. a câu hi vào  thi 131
Hình 4-90. Question Bank 132
Hình 4-91. Thi gia k 132
Hình 4-92. Thi cui k 133
Hình 4-93. Xem bài tp đã np 133
Hình 4-94. Chm đim bài tp 134
Hình 4-95. Cp nht 134
Hình 4-96. Chuyn thành bn nháp 135
Hình 4-97. Cho đim bài tp 135
Hình 4-98. im s 136
Hình 4-99. User Report (Giáo viên) 136
Hình 4-100. Grader Report 137
Hình 4-101. Xem đim Sinh viên 137
Hình 4-102. User report (Sinh viên) 138
Hình 4-103. Overview Report 138



Hình 5-1. M file 141
Hình 5-2. Properties 142
Hình 5-3. Metadate 143
Hình 5-4. Cu trúc bài ging 144
Hình 5-5. Activity (Hot đng) 146
Hình 5-6. Các thao tác khi son tho 147
Hình 5-7. Chnh sa ni dung 147
Hình 5-8. Attachment (Tp gn) 148
Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




9
Hình 5-9. Case Study (Nghiên cu trng hp) 148
Hình 5-10. Free Text Area (Vn bn t do) 149
Hình 5-11. Images Gallery 149
Hình 5-12. Image Manyfier 150
Hình 5-13. Math 151
Hình 5-14. PPT2Flash Professional 151
Hình 5-15. To các slide bài ging 152
Hình 5-16. Thay đi giao din 152
Hình 5-17. Tùy chnh chung cho gói hc (Basic) 153
Hình 5-18. Tùy chnh xut file (Output) 153
Hình 5-19. Tùy chnh cách chi file (Playback) 154
Hình 5-20. Tùy chnh âm thanh (Audio) 154
Hình 5-21. Xut ra gói chun scorm 155
Hình 5-22. Xut ra dng flash 156
Hình 5-23. Xut ra dng Email 156

Hình 5-24. Hot Potato 158
Hình 5-25. Son câu hi 159
Hình 5-26. Thit lp Auto-Response 159
Hình 5-27. Export file 160
Hình 5-28. Cu hình chung HotPotato 161
Hình 5-29. QuizCreator 162
Hình 5-30. Giao din chính ca chng trình 163
Hình 5-31. Các loi câu hi 163
Hình 5-32. S lng câu hi đã có 163
Hình 5-33. To câu h
i 164
Hình 5-34. Chèn âm thanh 164
Hình 5-35. Quiz Properties 165
Hình 5-36. Quiz Information 166
Hình 5-37. Quiz Settings 167
Hình 5-38. Question Settings 168
Hình 5-39. Quiz Result 169
Hình 5-40. Nút Publish 170
Hình 5-41. Xut dng chun SCORM 170
Hình 5-42. Cu hình file xut ra 171
Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




10



MC LC BNG



Bng 2-1. Mô t thông s Wiki 40
Bng 5-1. Ý ngha các thành phn iDevice 144

Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




11


LI M U




Tri qua nhiu nm nay, phng thc qun lý đào to theo kiu truyn thng cho
thy s đóng góp không th chi cãi trong vic ci thin cht lng ging dy và hc tp.
Tuy nhiên, cùng vi xu hng phát trin ca công ngh thông tin và các phng tin
truyn thông, chính phng thc đó cng bc l mt s yu kém nh hng đn vic
truyn
đt và tip thu kin thc, trong đó có th k đn vic qun lý h s không đt hiu
qu cao, ni dung các giáo trình, sách giáo khoa thng khó có th cp nht kp thi, hình
thc bài ging không to nên s hng thú hc tp cho hc viên, vic tra cu các tài liu
tham kho rt hn ch và mt nhiu thi gian…iu đó mang li hiu qu hc tp không
cao mà chi phí cho h
c tp và đào to li ln dn đn s lãng phí không nh c v thi
gian và tin bc.


Do đó, khái nim hc tp trc tuyn ra đi nhm khc phc nhng nhc đim ca
phng pháp hc tp truyn thng cng nh đáp ng nhu cu ngày càng cao ca nhà
trng và hc viên. Cùng vi s phát trin mnh m c
a Công ngh mã ngun m cng
đã phn nào giúp nhà trng gim chi phí trong vic đào to. Trong s đó, Drupal và
Moodle là hai công ngh mã ngun m min phí đc đánh giá cao nht hin nay tr
giúp đc lc trong vic xây dng website hc tp trc tuyn.

ó cng chính là lý do chúng em chn mã ngun m Drupal và Moodle cho đ tài
“Xây dng website hc tp trc tuyn ngành Công ngh thông tin”. Khóa lun bao gm
các ni dung sau:
• Phn 1: Drupal
Trình bày tng quan v Drupal: khái nim, lch s, u đim…, cách t chc hot
đng Drupal, khái nim và ý ngha các Module chun ca Drupal cng nh các
Module cài đt thêm, tìm hiu v cách xây dng module cho Drupal, cách t chc
lu tr và tính an toàn ca Drupal.
• Phn 2: Moodle
Trình bày tng quan v Moodle, ý ngha, cách s dng các tài nguyên và hot
đng Moodle h tr, cng nh cách qun tr trong h thng Moodle
• Phn 3: Chun SCORM
Trình bày khái quát v
 chun SCORM, các khái nim liên quan đn SCORM, cu
trúc ca SCORM.
• Phn 4: Xây dng website hc tp trc tuyn ngành công ngh thông tin ng
dng Drupal và Moodle
Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin





12
ng dng xây dng giao din website da trên Drupal và xây dng h thng hc
tp trc tuyn da trên Moodle
• Ph lc
Hng dn cách s dng các công c son tho bài ging và to câu hi trc
nghim cho khóa hc




Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




13

PHN I DRUPAL

I. TNG QUAN V DRUPAL
I.1. Khái nim
Drupal là mt khung sn phát trin phn mm hng module, mt h thng qun
tr ni dung min phí 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 nh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à
"khung sn phát trin ng dng web", vì kin trúc thông minh và uyn chuyn ca

Drupal.
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.
I.2. Lch s
u tiên, Drupal đc Dries Buytaert và Hans Snijder (đn t đi hc Antwerp),
to ra theo dng mt h thng bng tin (Bulletin board system). n nm 2001, Drupal
tr thành mt công trình ngun m. Drupal, trong ting Anh, đc chuyn ng t ch
"druppel" ca ting Hà Lan, ngha là "git nc". Hin nay, có mt cng đng rng ln
đang giúp đ phát trin Drupal.
I.3. Nn tng
• PHP
• MySQL
• PostgreSQL
• Apache
• Jquery
• XMLRPC
I.4. ng dng
Vi Drupal cùng vi các module cng thêm có th xây dng nhiu ng dng mà
không cn phi b ra nhiu thi gian đ phát trin, các hng ng dng có th phát tri
n
da trên Drupal nh:
− Hng cá nhân/ t chc: Blog, Calendar, Dicussing forum,…
− Hng cng đng: Multi blog site, Organic Groups, Voting,…
− Hng doanh nghip: Webservice, Brochure, Newsletter, News site,…
I.5. u đim
Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin





14
¬ H thng module linh hot
Drupal phát trin theo hng module nên có th d dàng thêm hay g b theo nhu
cu hoc có th kt hp vi module khác hình thành mt ng dng ln hn, đa chc nng
hn.
¬ Tùy chnh Theme h thng
Drupal h tr PHPTemplate cho phép to ra giao din phong phú, linh đng.
¬ To ni dung m rng
Ngoài các kiu ni dung c bn nh Page, Story, Forum, Blog, Drupal cho phép
to thêm cá kiu ni dung mi nh h thng Taxonomy hay bng cách thêm vào các
module
¬ Tùy chnh chc nng tìm kim
Drupal qun lý trang bng s node và có th thay th sao cho URLs tr nên thân
thin vi ngi dùng khi tìm kim
¬ Quyn truy cp theo vai trò
H thng phân quyn, c bn da trên b ba: module + thao tác + vai trò. Do đó d
dàng m rng thêm.
I.6. Nhc đim
Do không tng thích ngc nên module phi đc vit riêng cho tng phiên b
n
4.x, 5.x ,6.x và 7.x ti cùng mt thi đim, Drupal ch h tr 2 phiên bn mi nht. iu
này làm cho ngi s dng bt tin khi phi nâng cp liên tc.
II. CÁCH HOT NG CA DRUPAL
II.1. Technology Stack
Mc đích thit k ca Drupal có th chy tt trên các máy ch web và có th đm
bo v hiu nng và đ an toàn bng vic s dng các công ngh ph

 bin.


Hình 1-1. Drupal’s Technology Stack

Theo hình 1-1, lp thp nht là h điu hành: Drupal có th chy trên đa nn nh
Linux, BSD, Mac OS X, Windows, Solaris. K đn là lp Web Server: Drupal có th
chy trên nhiu máy ch web khác nhau đc s dng ph bin là Apache và còn h tr
c IIS. Lp Database (c s d liu): Drupal h tr MySQL và PostgreSQL (MySQL,
Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




15
PostgreSQL là h qun tr c s d liu). Lp trên cùng là Language (lp ngôn ng):
Drupal s dng ngôn ng PHP có h tr lp c s d liu tru tng (Database
Abstraction Layer). Nh lp này, làm cho PHP có th kt ni và truy vn đn c s d
liu d dàng và an toàn hn.
II.2. Core
Mt khung sn nh đc tích hp thành nhân ca Drupal: Cung cp các chc
nng c bn nh
 qun lý ngi dùng, qun lý ni dung có h tr phân loi kiu ni dung
(taxonomy) và các template (mu giao din). H thng s thc hin các yêu cu ca
ngi dùng và mt th vin dùng chung s đc s dng cùng vi các thành phn
Drupal, nh hình bên di:


Hình 1-2. Tng quan v Drupal core (không bao gm tt c chc nng)
II.3. Module

Module là phn m rng có th cài đt vào Drupal đ thêm các ng dng hay các
chc nng cho Drupal, có th bt hoc tt các module có sn trong Drupal. Ngoài ra
ngi dùng có th tìm các module m rng đ tích hp vào Drupal ti
hoc t vit các module mi cho trang web.

Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




16

Hình 1-3. Module có th đc thêm vào đ tng cng các chc nng.

II.4. Hooks
Hook đc xem nh là các s kin (event) bên trong b nhân Drupal hoc đc
gi là callbacks. H thng hook đa dng giúp ngi lp trình can thip vào mi hot đng
mà không phi sa bt kì dòng lnh nào ca nhân hay các phn khác.
II.5. Themes
Khi to ra mt trang web gi ti trình duyt, nó có 2 phn chính là mt nhóm các
d liu tng ng (n
i dung) và đánh du d liu trên web. Trong Drupal, lp ch đ
chu trách nhim to ra HTML đ cung cp cho trình duyt web.
c bit Drupal khuyn khích tách bit gia ni dung và đánh du ni dung.
Drupal cho phép ngi qun tr giao din có th hiu chnh và thay th giao din cho
trang web, mt cách đn gin nht là dùng CSS (Cascading Style Sheet) đ thay đi các
mu giao din có sn.
II.6. Nodes
Các kiu ni dung trong Drupal đu k tha t ki
u c bn là node. Cng có th

nói ht nhân ca Drupal là node vi cu trúc đn gin.  phát trin các kiu ni dung
phc tp, mi node s đc liên kt vi mt ni dung có kiu khác nhau. Node đc qun
lý nh h thng phân loi kiu ni dung (taxonomy), đây cng là đc trng ca Drupal.
Node cha tt c các mc đ, ni dung, ngày tháng, …
Cách tng tác vi node là m rng chúng. Có th
 thêm vào các node các chc
nng m rng nh: đánh giá bài vit, bình lun, đính kèm file, …
Mi node có mt đa ch URL xác đnh, da vào node_id, cu trúc nh sau:
<đa ch trang web>?q=node/node_id. Nu node_id không đc xác đnh thì h thng s
chuyn v trang ch.
Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




17
II.7. Blocks
Block là thông tin có th kích hot hoc vô hiu hóa trong mt v trí xác đnh trên
mu s dng ca trang web. Các Block thng đc đt  các v trí: leftsidebar, right-
sidebar, header hoc footer.
Thông thng, các Block đc s dng đ mô t thông tin đc điu chnh ti
ngi dùng hin hành. Ví d: Block điu hng (navigation) cha các liên kt ti chc
nng qun tr mà ngi dùng có th truy cp. S sp x
p và vùng hin th các block đc
qun lý thông qua giao din qun tr trang web.
III. MODULE CHUN CA DRUPAL
III.1. Aggregator
RSS là mt đnh dng tp tin thuc h XML dùng trong vic chia s tin tc Web
(Web syndication) đc dùng bi nhiu website tin tc và weblog. nh dng RSS cung
cp ni dung web và tóm lc ni dng web cùng vi các liên kt đn phiên bn đy đ

ca ni dung tin đó, và các siêu-d-liu (meta-data) khác. Thông tin này đc cung cp
di d
ng mt tp tin XML đc gi là mt RSS feed, webfeed, RSS stream, hay RSS
channel. Aggreagator có kh nng đi ly tin RSS t các website khác, lu li trong
CSDL, ri trình bày ra giao din ngi dùng. Các ngun tin RSS có th đc phân mc
theo 'Category'.
III.2. Blog
Drupal là h thng tiên phong trong lnh vc blog đa ngi dùng. Mi user có th
to blog cho riêng mình. Blogger s nhn đc URL ca blog mình. Tính nng này làm
cho drupal tr thành cu ni tuyt vi gia blog cá nhân và cng đng trên mng.
 có th bt đ
u vic to blog entry, ngi qun tr cn ch đnh quyn cho mi
user. Ngoài ra có th to các danh mc cha blog (s dng vi Taxonomy Module), có
th cho phép upload file, lu lch s, bình lun trong blog.
Mi blog có th tùy chnh theme khác nhau bng cách cài đt thêm module Blog
Theme ti đa ch
III.3. Blog API
Ngi dùng website có th dùng mt công c nào đó đ to mt blog entry t xa
(qua Google Docs chng hn). BlogAPI s đng ra đm nhn vai trò trung gian nh
n
d liu, lu vào CSDL.
Blog API h tr nhiu XML-RPC da trên blogging APIs nh là new Blogger
Data API, Meta Weblog API và Movable Type API
III.4. Book
Vi module này, ngi dùng có th to các trang ni dung có đánh ch mc rõ
ràng. Module này rt thích hp đ làm brochure, tài liu hng dn, Hin ti module
này cn đc ci tin nhiu đ đáp ng nhu cu thc t.
iu này rt hu ích cho ngi dùng đóng góp vào vic xây dng các trang sách
nhng không ph
i mi đóng góp đu mang mc đích đúng và tt đp. Vì th đ tránh

Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




18
hành vi chnh sa, xóa b, vit sai ni dung, các trang phi thông qua s chp thun ca
ngi qun tr mi đc biu din trên website.
Module cung cp ba quyn sau: Create Book Pages, Edit Own Book Pages,
Maintain Books.
o Create Book Pages: Cho phép to trang
o Edit Own Book Pages: Cho phép chnh sa các trang do bn thân s hu
o Maintain Books: Cho phép chnh sa toàn b
III.5. Comment
Khi xem mt trang ni dung (node, nh mt blog entry, mt article chng hn),
ngi xem có th gi ý kin phn hi c
a mình. Module này rt cn cho các website cn
tng tác t phía ngi dùng.
III.6. Contact
Ngi dùng có th gi mail cho ngi qun lý website hay cho mt thành viên nào
đó ca website nh chc nng mà module này cung cp.
Module này cung cp 2 hình thc liên h: Personal Contact Form, Sitewide
Contact Form
o Personal Contact Form: User có th cho phép nhng user khác nhìn thy
email ca mình và gi mail thông qua Contact tab
o Sitewide Contact Form: Có th to ra các nhóm ngi liên h qua đó có th
gi mail cho nhiu ngi cùng lúc.
III.7. Filter
Module này cung cp các phng thc trình bày khác nhau trên cùng mt trng
d

 liu. iu này rt hu ích trong vic ngn chn các đon code, script nguy him, li cú
pháp, các th HTML,…
Module này đc bt mt cách t đng và có th cu hình bng cách truy cp
Administer / Input format
III.8. Forum
Module cho phép to din đàn tho lun. Ngòi qun tr cn to các Container
trc khi to các ch đ. iu này giúp cho vic t chc và qun lý d dàng hn.
III.9.
Help
Các module có phn tr giúp ngi dùng, tuy nhiên ch khi bt module Help lên
thì ngi dùng mi có th xem đc phn này.
Chú ý module Help không cung cp mt cách chính xác cng nh chi tit v
hng dn ngi dùng, vì vy đ to thêm cng nh chnh sa có th s dng Help Edit
Module ti v ti đa ch 18031.
III.10. Legacy
Module Legacy cung cp cho vic nâng cp t bn cài đt c. Nhng x lý giúp
các tham chiu t
đng chuyn hng đn các trang t bn cài đt c và ngn chn trang
không tìm thy li trang web
Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




19
Module legacy phân loi x lý kiu cách trang taxonomy, ngun cp d liu phân
loi, và đng dn ngun cp d liu cho blog (blog feed paths). Nó cng x lý nâng cp
URL t Drupal 4.1. Nó ghi đè URL kiu c sang các URL kiu mi (URL rõ ràng).
III.11. Node
Các ni dung mà ngi lu tr đa s đc lu di dng node (blog entry, book

page, forum topic, page content, article, ). Mi mt node có các thuc tính c bn:
− Kiu ni dung (content type): Thuc tính này nhm phân bit node nào là 'forum
topic', node nào là 'book page',
− Quy
n hn: ng vi mi kiu ni dung, webmaster có th gii hn 'quyn to
ra', 'quyn chnh sa' cho mt s nhóm ngi dùng nht đnh.
− Tác gi: Mi mt node s có mt và ch mt tác gi.
− Thi đim to: Thi đim mà node đc to ra
− Thi đim chnh sa cui cùng
− Tiêu đ: Tiêu đ ca node. Thí d, tiêu đ ca mt forum node cng là tiêu đ
ca 'lung tho lun' đó.
− Ni dung chính.
− Workflow: Mi mt node s có mt dòng chy ca nó. Da vào dòng chy ca
mt node, h thng có th bit đc mt node đã đc xut bn hay cha, khi đã
đc xut bn thì có đc trình bày ra trang chính hay không, có đc c đnh 
v trí trên cùng đi v
i các node khác hay không,
IV. CÁC MODULE H TR THÊM
IV.1. Views
Views là mt b lc có vai trò lc và trình bày ni dung.
− Lc ni dung: View giúp lc các kiu ni dung cn theo mt s điu kin đt ra.
Ví d: cn ly ra 6 bài vit mi nht hoc ly ra các bài vit thuc ch đ “tin th
gii’. ó là vai trò chính ca Views. Views giúp ly ra các ni dung mà ngi
dùng cn.
− Hin th n
i dung: Sau khi lc các ni dung ra có đc danh sách các ni dung
cn hin th. Tuy nhiên, ngi dùng mun trình bày các kiu ni dung này theo
các cách khác nhau. Ví d ngi dùng mun trình bày dng bng các ni dung,
hoc danh sách các ni dung. Ngoài ra đ to hiu ng đp có th trình bày theo
kiu slide ngha là c my giây li có mt ni dung xut hin thay th ni dung

đã trình bày. Vai trò th hai ca Views là trình bày các ni dung đã lc ra đc.
IV.2. Panels
Panels giúp chia nh phn ni dung thành các vùng nh
 hn. Drupal trình bày giao
din thành các vùng đ cha các block - block là các phn ni dung. Thng thì mt
theme ca drupal có mt s vùng c bn: header, footer, content, sidebar left, sidebar
right. Các vùng này bao quanh vùng ni dung. Ngoài ra, có th thêm nhiu vùng vào
theme tùy ý đó chính là s uyn chuyn ca Drupal. Tuy nhiên các trang báo chia vùng
nôi dung (vùng content) thành các phn nh hn đ tin trình bày. Ví d chia vùng
Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




20
content thành ct trên đu cha tin nóng, hai ct hai bên cha các block có các bài vit
đc phân loi. Vic chia này ging nh s dng layout trong Word. Layout giúp trình
bày ni dung dng ct báo thì Panels cng làm nhim v này cho phn ni dung(vùng
content) ca theme. Panels giúp chia phn ni dung thành các phn nh hn và trên mi
phn đó cha các block ni dung ca trang.
IV.3. Content Construction Kit (CCK)
Drupal h tr hai loi ni dung c bn là Page và Story nhng c hai kiu ni dung
này tng t nhau gm có 2 field: Title và Body không th
 đáp ng đc vic phát trin
ni dung website. Do đó CCK ra đi giúp cho vic m rng ni dung mt cách d dàng
hn. Ngi qun tr có th thêm các field mi vào kiu ni dung nh Text field, Image
field, File field, Radio button.  có th thêm File field, Image field, Radio cn phi cài
đt thêm module File Field và Image Field dùng chung vi CCK.
Sau khi đã to thêm field mi, CCK t đng lu tr nhng thông tin vào c s d
liu và biu din trong nhng cách khác nhau.

IV.4. Ckeditor
Ckeditor là trình so
n tho mã ngun m theo kiu WYSIWYG (“What You See
Is What You Get”) ngha là ngi dùng không cn có kin thc v HTML vn có th
đnh dng đc đon vn bn mình mun. CCK có giao din thân thin, d s dng chc
nng tng t nh trình son tho word. Tuy nhiên, ngi qun tr cn phi ch đnh
Filter HTML đi vi ngi dùng bình thng đ ngn chn các mã đc hi.
Ngoài ra c
n phi tích hp module IMCE vào Ckeditor đ có th s dng chc
nng tìm và chèn hình nh mt cách d dàng hn.
V. XÂY DNG MODULE CHO DRUPAL
V.1. File .info và .module
Cu trúc ca mt module có th gm nhiu tp tin khác nhau nhng phi có ít nht
mt tp tin <tenmodule>.info và mt tp tin <tenmodule>.module trong đó <tenmodule>
là tên ca th mc cha module đc to, tên này không đc trùng vi các module đã
tn ti trong h thng.
V.1.1. File .info
Trc khi th
c s đi vào vit mã cho mt module phi to ra mt file vn bn
cha các thông tin c bn v module đó. Mt s thành phn ca Drupal s s dng các
thông tin trong file này cho vic qun lý module.
File .info đc vit theo kiu ca file PHP .ini, mt đnh dng file đc xác đnh
cho vic thit lp. Ni dung mt file .info có dng nh sau:
name = “Xem diem”
description = “Xem diem sinh vien”
core = 6.x
php = 5.1
Trng name khai báo tên ca module, tên này s hin th trong danh sách các
module có
 khu vc ngi qun tr. Trng description cha thông tin v module, mô

Khóa lun Xây dng website hc tp trc tuyn ngành công ngh thông tin




21
t chc nng nhim v mà module s thc hin. name và description là hai trng bt
buc phi có trong file .info.
Trng th ba là core. Mc này ch rõ module s hot đng tt trên phiên bn nào
ca Drupal. Giá tri 6.x 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 ca PHP
mà module yêu cu.
Ngoài ra các module phc tp hn còn có thêm mt s trng thông tin trong file
.info nh sau:
o Package: Nhóm các chc nng ca module, nu không khai báo package thì
module đc đa vào nhóm “other”.
o Dependencies: Các module ph thuc, cách nhau bng khong trng. N
u
module đc yêu cu cha đc bt trên h thng thì module này không th
bt đc.
V.1.2. File .module
File .module là file quan trng nht trong mt module, cha các đon mã PHP
thc hin chc nng ca module đó. File này thông thng s đc m rng mt s hàm
hook mà Drupal gi ti các thi đim nht đnh đi vi mt yêu cu.
Cng ging nh file .info, file .module đc đt tên theo quy t

c
<modulename>.module, trong đó <modulename> là tên th mc cha module.
Ni dung file .module bt đu bng th <?php sau đó là mã ngun. Theo quy c
ca Drupal, file này s không cha du đóng ?>. Vic này giúp tránh in nhng ký t
trng trong đu ra ca mã kch bn trong mt s trng hp. Ví d, nu các ký t trng
đc xut ra trc khi phn thông tin header ca HTML gi đi,  trình duyt máy khách
s xut hin thông báo li trên đu c
a trang web.
V.2. Mt s hook c bn
¬ Hook block
Hook này đc s dng đ to mt block hin th thông tin. Khi hook_block đc
gi, Drupal s truyn 3 tham s vào hàm: $op, $delta, $edit.
Tham s $op cha thông tin v loi thao tác mà module s thc hin. Tham s này
có th nhn mt trong 4 giá tr sau:
o list: Giá tr này đc dùng khi module cung cp thông tin v chính nó.
o view: Giá tr này đc truyn vào khi Drupal mun hook block cung cp
thông tin đ hin th cho ng
i dùng.
o configure: Dùng đ điu chnh các thit lp cho block
o save: Giá tr này đc dùng khi thông tin v thit lp ca block ly t form
d liu sinh ra bi configure cn đc lu li.
Tham s $delta đc đt ph thuc vào các thao tác nht đnh ca module. Khi
$op có tr là view thì $delta s đc đt. Tham s này cha các thông tin thêm v ni

×