i
LỜI MỞ ĐẦU
Trong thời đại công nghệ thông tin phát triển như hiện nay thì các website tin
tức trở nên vô cùng quan trọng, không chỉ những website điện tử lớn mà các tổ
chức, công ty lớn nhỏ và cá nhân cũng có nhu cầu sử dụng website tin tức để quảng
bá các thông tin lên mạng internet. Mọi người ngày càng sử dụng internet nhiều hơn
để phục vụ cho nhu cầu tìm kiếm, nhờ có các công cụ tìm kiếm phát triển như hiện
nay mà việc tìm kiếm thông tin trở nên rất dễ dàng.
Nhu cầu cần có website tin tức là rất lớn, bên cạnh đó một trang web tin tức
cũng phải đảm bảo an toàn thông tin, dễ sử dụng, an toàn bảo mật tốt, quảng bá
thông tin một cách hiệu quả trước các công cụ tìm kiếm và chi phí là rẻ nhất. Để
đáp ứng những nhu cầu trên thì các CMS (Content Management System) mã nguồn
mở là một giải pháp tốt được sử dụng trong thiết kế web.
Các CMS mã nguồn mở được sử dụng để phát triển các trang web miễn phí
hoặc có phí rất thấp, người dùng có thể nhanh chóng xuất bản những thông tin của
họ lên internet với những tuỳ biến cao. Các trang web miễn phí sử dụng CMS
thường được cập nhật thường xuyên.
ii
LỜI CẢM ƠN
Tôi xin chân thành cảm ơn quý thầy cô trong khoa Công nghệ thông tin cũng
như quý thầy cô giảng dạy trong trường Đại học Nha Trang đã truyền đạt những
kiến thức quý báu cho tôi trong những năm học vừa qua.
Đặc biệt, tôi xin chân thành cảm ơn ThS Nguyễn Đình Hoàng Sơn, Thầy
đã trực tiếp hướng dẫn và giúp đỡ tận tình tôi trong suốt thời gian làm đồ án tốt
nghiệp.
Vì trình độ, kinh nghiệm còn kém, kiến thức còn hạn chế và thời gian có hạn
nên việc tìm hiểu chắc chắn còn nhiều thiếu xót, kính mong nhận được sự chỉ bảo,
góp ý của quý thầy cô và các bạn đối với đề tài này.
Nha Trang, ngày 25 tháng 6 năm 2012
Sinh viên thực hiện
Trần Ngọc Cương
iii
MỤC LỤC
LỜI MỞ ĐẦU i
LỜI CẢM ƠN ii
MỤC LỤC iii
PHẦN 1: CƠ SỞ LÝ THUYẾT 1
1.1.
Tổng quan về hệ quản trị nội dung (CMS) 1
1.2.
Giới thiều về Joomla 1
1.2.1.
Khái niệm Joomla 1
1.2.2.
Ứng dụng của Joomla 1
1.2.3.
Kiến trúc của Joomla 2
1.3.
Một số khái niệm trong Joomla 3
1.3.1.
Front-end 3
1.3.2.
Back-end 3
1.3.3.
Template 3
1.3.4.
Component 3
1.3.5.
Module 3
1.3.6.
Plugin 3
PHẦN 2: XÂY DỰNG WEBSITE TIN ĐIỆN TỬ BẰNG JOOMLA CMS 4
2.1.
Giới thiệu website tin tức Joomla 4
2.2.
Thiết kế các thành phần mở rộng của Joomla 4
2.2.1.
Plugin 4
2.2.1.1.
Giới thiệu Plugin 4
2.2.1.2.
Thiết kế Plugin 5
2.2.1.3.
Ứng dụng tạo mới plugin lastnewsarticle 7
iv
2.2.2.
Module 7
2.2.2.1.
Giới thiệu module 7
2.2.2.2.
Thiết kế module 9
2.2.2.3.
Ứng dụng tạo mới module mod_showtopnews 9
2.2.2.4.
Ứng dụng tạo mới module mod_showarticlesection 10
2.2.2.5.
Ứng dụng tạo mới module mod_showarticlelist 11
2.2.3.
Component 11
2.2.3.1.
Giới thiệu component 11
2.2.3.2.
Thiết kế component 12
2.2.3.3.
Ứng dụng tạo mới component com_advertising 13
2.2.3.4.
Ứng dụng tạo mới component com_comment 21
PHẦN 3: CÀI ĐẶT WEBSITE TIN ĐIỆN TỬ 27
3.1.
Cài đặt website trên hosting 27
3.2.
Quản trị trong Joomla 34
3.2.1.
Đăng nhập trang quản trị 34
3.2.2.
Thanh Menu 35
3.2.3.
Thanh công cụ 36
3.2.4.
Chủ đề (Section) 37
3.2.5.
Chủ đề con (Category) 38
3.2.6.
Bài viết (Article) 38
3.2.7.
Các thành phần mở rộng 39
3.2.8.
Phân quyền trong Joomla 41
3.2.9.
Quản lý phương tiện/ quản lý tập tin 41
3.2.10.
Quản lý Menu 42
v
3.2.11.
Quản lý danh mục menu 43
3.2.12.
Quản lý thành viên 44
3.2.13.
Cấu hình chung 46
3.3.
Cài đặt và cấu hình các thành phần mở rộng 46
3.3.1.
Component com_advertising 46
3.2.2.
Component com_comment 48
3.2.3.
Module mod_showtopnews 50
3.2.4.
Module mod_showarticlesection 52
3.2.5.
Module mod_articlelist 55
3.2.6.
Module mod_advertising 60
3.2.7.
Plugin lastnewsarticle 60
3.2.8.
Plugin comment 61
3.2.9.
Template 62
PHẦN 4: KẾT LUẬN 63
4.1.
Kết quả đạt được 63
4.2.
Nhận xét 63
4.2.1.
Ưu điểm 63
4.2.2.
Tồn tại 63
4.3.
Hướng phát triển 64
4.4.
Tài liệu tham khảo 64
Tra cứu hình ảnh 65
1
PHẦN 1: CƠ SỞ LÝ THUYẾT
1.1. Tổng quan về hệ quản trị nội dung (CMS)
CMS (Content Management System) là hệ thống dùng để quản lý nội dung
chương trình bao gồm: văn bản, hình ảnh, video được tổ chức một cách khoa học
và được cấp quyền truy cập với từng cá nhân. Ngoài ra nó còn bao gồm các công cụ
giúp cho việc tìm kiếm, quản lý phiên bản, phát hành và định dạng thông tin một
cách nhanh chóng và dễ dàng.
Trên thế giới, các CMS mã nguồn mở được sử dụng phổ biến để xây dựng
các Website, trong đó Drupal, Joomla, Wordpress,… đều phát hành miễn phí.
Phần mềm mã nguồn mở đang trở thành một xu hướng lớn trên thế giới. Nhờ
dỡ bỏ dần các rào cản về bản quyền, dễ dàng can thiệp, được cung cấp miễn phí
hoặc với giá rẻ, nó được kỳ vọng làm thay đổi diện mạo của ngành công nghệ thông
tin. Điều này đặc biệt có ý nghĩa với các nước nghèo bởi vì có thể tiếp cận được
công nghệ mới với chi phí rất thấp.
1.2. Giới thiều về Joomla
1.2.1. Khái niệm Joomla
Joomla là một hệ quản trị nội dung mã nguồn mở (Content Management
System) viết tắt là CMS. Joomla được viết bằng ngôn ngữ PHP và kết nối tới cơ sở
dữ liệu MySQL, cho phép người sử dụng có thể dễ dàng xuất bản các nội dung của
họ lên Internet hoặc Intranet.
Joomla rất linh hoạt, đơn giản, thanh nhã, tính tuỳ biến rất cao và cực kỳ
mạnh mẽ. Được sử dụng ở trên toàn thế giới từ những trang web đơn giản cho đến
những ứng dụng phức tạp. Việc cài đặt Joomla rất dễ dàng, đơn giản trong việc
quản lý và đáng tin cậy.
1.2.2. Ứng dụng của Joomla
- Các cổng thông tin điện tử hoặc các website doanh nghiệp.
- Thương mại điện tử trực tuyến.
2
- Báo điện tử, tạp chí điện tử.
- Website của các cơ quan, tổ chức phi chính phủ.
- Website các trường học.
- Website của gia đình hay cá nhân.
Sau khi cài đặt Joomla và chạy thử, người sử dụng có thể thêm, chỉnh sửa,
cập nhật nội dung, hình ảnh và quản lý dữ liệu của tổ chức, công ty. Joomla cung
cấp giao diện website trực quan do vậy khá dễ dàng để thêm một nội dung mới hay
một mục mới, quản lý các phòng ban, danh mục nghề nghiệp, ảnh các sản phẩm
và tạo không giới hạn số phần, mục, chuyên mục cũng như các nội dung của
website.
1.2.3. Kiến trúc của Joomla
Joomla gồm có 3 tầng hệ thống:
- Tầng dưới cùng là mức nền tảng, chứa các thư viện và các plugin.
- Tầng thứ hai là mức ứng dụng chứa lớp JApplication. Hiện tại tầng này gồm
3
lớp con: JInstallation, JAdministrator và JSite.
- Tầng thứ ba là mức mở rộng. Tại tầng này có các thành phần (Component),
mô
đun (Module) và giao diện (Template) được thực thi và thể hiện.
Hình 1: Kiến trúc Joomla
3
1.3. Một số khái niệm trong Joomla
1.3.1. Front-end
Phần mặt trước phía trang chủ mà ai cũng có thể xem thấy.
1.3.2. Back-end
Phần quản trị dành cho các thành viên có quyền quản trị hệ thống Joomla.
1.3.3. Template
Template là một gói bao gồm các tập tin PHP, HTML, CSS, JS (Javascript)
và các tấm hình, biểu tượng, video, flash kèm theo tạo nên giao diện (bố cục và hình
hài) của website Joomla.
1.3.4. Component
Component là một trong các thành phần mở rộng của Joomla, thực chất nó
là một ứng dụng trong hệ thống Joomla. Component được sử dụng để thực hiện một
chức năng lớn nào đó, chẳng hạn như: Cung cấp tin tức, quảng cáo, rao vặt, đặt
phòng khách sạn, bất động sản, download
1.3.5. Module
Module là một trong các thành phần mở rộng của Joomla, nó là một ứng
dụng nhỏ được sử dụng chủ yếu để lấy dữ liệu và hiển thị thông tin. Module thường
được dùng kết hợp kèm với các component nhằm mở rộng và thể hiện rõ ràng hơn
các chức năng của component. Module có thể được đặt ở bất kỳ vị trí nào trên
template. Ngoài ra một module có thể được nhân bản, nghĩa là cùng lúc có thể xuất
hiện tại một hoặc các vị trí khác nhau.
1.3.6. Plugin
Plugin là một trong các thành phần mở rộng của Joomla nhằm giúp thực hiện
một cách tự động công việc cụ thể.
4
PHẦN 2: XÂY DỰNG WEBSITE TIN ĐIỆN TỬ BẰNG JOOMLA CMS
2.1. Giới thiệu website tin tức Joomla
Website tin tức là giải pháp cho các tổ chức, doanh nghiệp, cá nhân có một
trang tin tức mang đến cho mọi người những thông tin nhanh nhất, tiện ích nhất và
khả năng tìm kiếm thông tin hiệu quả mang đến cho độc giả những thông tin cần thiết.
Tất cả mọi người có nhu cầu về thông tin đều có thể sử dụng website tin tức.
Trong Joomla phân cấp thành nhiều nhóm người sử dụng, với mỗi nhóm người khác
nhau thì có quyền hạn khác nhau. Quản lý một trang web được thiết kế bằng Joomla
là khá đơn giản và không đòi hỏi phải có trình độ chuyên môn cao.
Một trang web được thiết kế bằng CMS Joomla có thể chạy trên nhiều trình
duyệt khác nhau, khả năng tương thích tốt với các hệ điều hành.
2.2. Thiết kế các thành phần mở rộng của Joomla
2.2.1. Plugin
2.2.1.1. Giới thiệu Plugin
Plugin là một loại thành phần mở rộng của Joomla, nó giống như component
hay module. Cơ chế hoạt động của plugin dựa trên các sự kiện kích hoạt (Trigger
events là một loại hành động được lập trình sẵn nhưng chỉ được kích hoạt khi có
một sự kiện nào đó xảy ra phù hợp với điều kiện mà plugin đang chờ đợi).
Trong phiên bản Joomla 1.5 có tất cả 32 plugin mặc định được cung cấp kèm
theo. Các plugin này được phân thành 8 nhóm khác nhau và đặt trong các thư mục
con tương ứng của thư mục Joomla/plugins.
Danh sách 8 nhóm plugin mặc định của Joomla:
- Authentication: Các plugin chứng thực quyền hạn.
- Content: Các plugin nội dung (bài viết).
5
- Editors: Các plugin về trình soạn thảo.
- Editors-xtd: Các plugin hỗ trợ, mở rộng tính năng cho trình soạn thảo.
- Search: Các plugin về tìm kiếm.
- System: Các plugin của hệ thống.
- User: Các plugin về người dùng.
- Xmlrpc: Các plugin quản trị Joomla.
Trong đề tài này chúng ta chủ yếu làm việc với các plugin thuộc nhóm
content, với các plugin mặc định mà Joomla cung cấp thì không đủ cho việc thiết kế
một website tin điện tử, vì thế chúng ta cần phải định nghĩa thêm các plugin mới, để
phục vụ cho việc thiết kế trang tin điện tử được hoàn thiện.
Joomla cung cấp cho chúng ta component content để thực hiện nhiệm vụ
đăng tin, nhưng trong component này chỉ có các chức năng cơ bản. Để hiển thị
những tin tức có liên quan với bài viết đang được xem thì chúng ta cần phải có một
plugin để thực hiện chức năng này. Chúng ta có thể tìm các plugin miễn phí được
cung cấp trên internet, những trong đề tài này chúng ta sẽ xây dựng một plugin
lastnewarticle để hiển thị những liên kết tới những bài viết có liên quan.
2.2.1.2. Thiết kế Plugin
Trong một plugin thường có hai tập tin: tập tin php chứa mã lệnh thực hiện
công việc chính của plugin và tập tin xml để cấu hình cho plugin.
Tập tin <tên plugin>.php thực hiện những chức năng mà người lập trình muốn.
defined('_JEXEC') or die ('Restricted access'): Đặt ở đầu tập tin php
để tránh trường hợp truy cập trái phép vào tập tin php.
jimport('joomla.plugin.plugin'): Thêm thư viện plugin của Joomla.
Lớp class plgContent<tên plugin> extends Jplugin {} được đặt tên theo quy
định của Joomla, mỗi nhóm có các sự kiện đặc trưng riêng.
Những sự kiên trong nhóm content:
• onAfterDisplay
• onAfterContentSave
• onAfterDisplayTitle
6
• onAfterDisplayContent
• onPrepareContent
• onBeforeDisplay
• onBeforeContentSave
• onBeforeDisplayContent
• onContentPrepareForm
• onContentPrepareData
Tương ứng với mỗi sự kiện thì plugin sẽ được thực thi tại một thời điểm nhất
định, mỗi sự kiện sẽ có vị trí hiển thị nhất định trên template.
Một tập tin <tên plugin>.xml để phục vụ cho việc cài đặt plugin khi chúng ta
đóng gói. Tập tin XML này sẽ mang tất cả các thông số về tên plugin, tên tác giả,
địa chỉ email, license… Mục đích chính của tập tin này là để đặt những tập tin vào
đúng các thư mục front-end và back-end khi cài đặt. Ngoài ra nó còn chứa các đối
tượng hiện thị dữ liệu hoặc các tham số cần sử dụng cho plugin.
Tập tin <tên plugin>.xml thường có các thông tin sau:
<?xml version="1.0" encoding="utf-8"?>
<install version="1.5" type="plugin" group="content">
<name>Tên module</name>
<author>tác giả</author>
<creationDate>ngày tạo</creationDate>
<license>bản quyền</license>
<authorEmail>địa chỉ email</authorEmail>
<authorUrl>liên kết website của tác giả</authorUrl>
<vertion>phiên bản</vertion>
<description>mô tả về module</description>
<files>
……………
</files>
<params >
7
……………
</params>
</install>
Trong tập tin cài đặt thẻ <install> phải chọn thuộc tính type="plugin" là cài
đặt một plugin và group="content" là cài đặt plugin vào nhóm content.
Thẻ <files> khai báo các tập tin có trong một plugin.
Thẻ <params> khai báo các tham số sử dụng trong plugin.
2.2.1.3. Ứng dụng tạo mới plugin lastnewsarticle
Plugin lastnewsarticle được dùng để hiển thị nhưng liên kết đến các tin tức
liên quan tới bài viết đang xem. Plugin này sẽ giúp cho người xem dễ dàng tiếp cận
các thông tin có liên quan tới các vấn đề mà người dùng đang quan tâm.
Plugin lastnewsarticle gồm tập tin lastnewsarticle.php và lastnewsarticle.xml.
Tập tin lastnewsarticle.php trong tập tin này chúng ta sẽ tạo ra một lớp kế
thừa từ lớp Jplugin và đăng kí sự kiện onAfterDisplayContent tương ứng với hàm
onAfterDisplayContent(&$article) trong lớp class plgContentLastNewsArticle
extends JPlugin, sau khi bài viết được hiển thị hoàn tất thì sự kiện sẽ được kích hoạt.
onAfterDisplayContent(&$article): Hàm sẽ trả về một kết quả được
hiển thị tại vị trí của sự kiện onAfterDisplayContent.
$article: Tham số chứa thông tin một bài viết đang được hiển thị chi tiết.
2.2.2. Module
2.2.2.1. Giới thiệu module
Module là một trong các thành phần mở rộng của Joomla. Nó là một đoạn
mã nhỏ thường được dùng để truy vấn các thông tin từ cơ sở dữ liệu và
hiển thị các kếtquả tìm được.
Vị trí của module (module position) là nơi mà module có thể được đặt vào
đó. Mỗi vị trí đều được xác định thông qua một định danh duy nhất (một cái tên),
chẳng hạn như: left, right, top, bottom, user1, user2 Tên và số lượng các vị trí này
được quy định bởi template. Các template khác nhau thì số lượng vị trí module cũng
8
như tên của chúng có thể khác nhau. Ngoài ra, trong quá trình sử dụng người dùng
cũng có thể tự định nghĩa các vị trí mới sao cho phù hợp với yêu cầu của mình.
Chúng ta có thể xem các vị trí của website bằng cách thêm đoạn mã sau vào liên kết
của trang chủ: ?tp=1.
Các module mặc định của Joomla:
- mod_archive: Module hiển thị các bài viết đã được đánh dấu "lưu
trữ".
- mod_banners: Module hiển thị quảng cáo.
- mod_breadcrumbs: Module hiển thị thanh điều hướng.
- mod_custom: Module hiển thị một đoạn mã HTML bất kỳ.
- mod_feed: Module hiển thị tin lấy từ các website khác.
- mod_footer: Module hiển thị dòng bản quyền ở cuối website.
- mod_latestnews: Module hiển thị các bài viết mới nhất.
- mod_login: Module hiển thị form đăng nhập.
- mod_mainmenu: Module hiển thị menu điều khiển.
- mod_mostread: Module hiển thị các bài viết được đọc nhiều nhất.
- mod_newsflash: Module hiển thị tin vắn / tin nhanh.
- mod_poll: Module hiển thị bình chọn.
- mod_random_image: Module hiển thị ảnh ngẫu nhiên.
- mod_related_items: Module hiển thị các bài viết liên quan.
- mod_search: Module hiển thị form tìm kiếm.
- mod_sections: Module hiển thị danh sách các mục của website.
- mod_stats: Module hiển thị các thông số thống kê của website.
- mod_syndicate: Module cấp tin cho các website khác.
- mod_whoisonline: Module hiển thị danh tính và số người trực tuyến.
- mod_wrapper: Module hiển thị một website bất kỳ được nhúng vào
trong website Joomla.
Với các module mặc định của Joomla thì chúng ta có thể thiết kế một trang
tin điện tử khá đơn giản và hạn chế về chức năng, vì thế mà chúng ta phải sử dụng
9
thêm các module bên ngoài. Trong đề tài này có tạo thêm các module hiển thị tin
tức để giúp cho việc hiển thị dữ liệu được thuận tiên hơn.
Kết quả cuối cùng là chúng ta có những module hiển thị tin tức với giao diện
trực quan, có thể đặt được ở các vị trí trên website, việc thiết kế giao diện cho
module sẽ là cho website được đẹp hơn.
2.2.2.2. Thiết kế module
Module thường chứa các tập tin sau:
• Mod_<tên module>.php tập tin này được dùng để gọi các hàm xử lý
dữ liệu và thực thi giao diện của module.
• Helper.php : Chứa các hàm xử lý dữ liệu cho module.
• Thư mục tmpl, trong thư mục này chưa tập tin _<tên module>.php tập
tin này sẽ hiển thị giao diện của module.
• Mod_<tên module>.xml: Tập tin cấu hình của module. Tập tin này
chứa các thông số để thực hiện việc cài đặt module vào Joomla. Trong
tập tin cài đặt của module cũng tương tự như tập tin cài đặt của plugin
nhưng khác ở đây là thẻ <install type="module" version="1.5.0">.
2.2.2.3. Ứng dụng tạo mới module mod_showtopnews
Module hiển thị những tin tức mới nhất giúp người xem dễ dàng tiếp cận đến
tin tức mới đăng, module thường được hiển thị ngay phần đầu của trang chủ,
module sẽ hiển thị một tin tức mới nhất của trang web phía bên trái của module, tin
tức này sẽ được hiển thị nổi bật lên trang chủ, những tin cũ hơn sẽ hiện thị dưới
dạng liên kết nằm về phần bên phải của module. Người dùng có thể tuỳ chỉnh kích
thước hình ảnh, kiểu chữ, cỡ chữ, kích thước chữ.
Tập tin mod_showtopnews.php.
require_once (dirname(__FILE__).DS.'helper.php'): Hằng số DS
trong Joomla có ý nghĩa là dấu “/”. Đăng kí sử dụng các hàm xử lý dữ
liệu trong tập tin helper.php.
10
modshowtopnewsHelper::getArticle($params->get('articles')): Lấy
danh sách bài viết mới nhất từ cơ sở dữ liệu.
$params->get('articles'): Tham số giới hạn số tin tức được hiển thị
trên module. Tham số này đã được thiết lập khi tạo ra module.
require(JModuleHelper::getLayoutPath('mod_showtopnews','_showto
pnews')): Yêu cầu hiển thị dữ liệu lên giao diện của module, câu lệnh
này sẽ sử dụng tập tin _showtopnews.php, tập tin này chứa các đoạn
mã để trình bày giao diện của module.
Tập tin helper.php:
getArticle($params): Hàm thực hiện nhiệm vụ lấy những bài viết mới
nhất từ cơ sở dữ liệu với tham số $params là giới hạn số bài hiển thị.
JFactory::getDBO(): Khởi tạo một đối tượng kết nối với cơ sở dữ liệu.
setQuery($query): Phương thức thiết lập câu truy vấn cơ sở dữ liệu.
loadObjectList(): Phương thức thực hiện câu truy vấn cơ sở dữ liệu,
kết quả trả về một danh sách các bản ghi.
Tập tin _ showtopnews.php có chức năng trình bày giao diện của module.
Trong tập tin này sử dụng các biến được khai báo trong tâp tin
mod_showtopnews.php, vì đoạn mã trong tập tin giao diện sẽ được gắn vào tập tin
mod_showtopnews.php.
2.2.2.4. Ứng dụng tạo mới module mod_showarticlesection
Module mod_showarticlesection sẽ hiển thị nhưng tin tức mới nhất trong một
chủ đề nhất định của trang web. Module này hiển thị tất cả các chủ đề con có liên
kết đến trang chủ đề con đó. Những bài viết được hiển thị trên module sẽ là những
bài viết mới nhất của tất cả các chủ đề con. Sẽ có môt tin tức mới nhất được hiện thị
chính trong module và những tin tức cũ hơn sẽ hiện thị dưới dạng liên kết. Module
này có các tham số thiết lập các định dạng kiểu chữ, màu chữ, kích thước chữ, kích
thước hình ảnh cho tin tức hiển thị chính và những tin tức hiển thị dưới dạng liên kết.
11
2.2.2.5. Ứng dụng tạo mới module mod_showarticlelist
Module mod_showarticlelist hiển thị những tin tức trong một chủ đề hay
một chủ đề con với nhiều giao diện khác nhau, người dùng có thể hiển thị các tin
tức theo thời gian mới nhất hoặc được xem nhiều nhất. Tuỳ vào cách thiết kế
website mà chọn những kiểu hiển thị đã được module cung cấp. Module cho phép
hiển thi tin tức dạng cột, hiển thị dạng tóm tắt, hiển thị dạng chuyên mục. Nếu thiết
lập cho module hiển thị những tin tức trong một chủ đề thì module sẽ hiện thị
những bài viết của tất cả các chủ đề con, nếu thiết lập cho module hiển thị tin tức
trong chủ đề con thì nó chỉ thực hiện câu truy vấn trong chủ đề con đó.
2.2.3. Component
2.2.3.1. Giới thiệu component
Joomla component là một trong các thành phần mở rộng của Joomla.
Component thường được tạo ra để thực hiện một chức năng lớn nào đó trong hệ
thống website Joomla.
Các component mặc định của Joomla:
- com_banners: Quản lý bảng quảng cáo (banner).
- com_contact: Quản lý các đầu mối liên hệ (contact).
- com_content: Quản lý và hiển thị bài viết.
- com_mailto: Quản lý chức năng gửi/nhận email.
- com_media: Quản lý các tệp đa phương tiện (video, flash, mp3, hình).
- com_newsfeeds: Quản lý việc lấy tin từ website khác theo dạng RSS.
- com_poll: Cung cấp chức năng bình chọn.
- com_search: Cung cấp chức năng tìm kiếm.
- com_user: Quản lý thành viên.
- com_weblinks: Quản lý và hiển thị danh mục các website liên kết.
- com_wrapper: Cho phép nhúng một website khác vào trong cửa sổ
của website Joomla.
12
Component com_content không có chức năng cho người dùng bình luận về
bài viết mà họ đang xem, để thêm chức năng bình luận về bài viết thì trong đề tài
này có tạo thêm component com_comment, nó giúp người xem gửi nhận xét của họ
cho người quản trị và giúp người quản lý website có thể tiếp nhận ý kiến của mọi người.
Joomla đã hỗ trợ component quảng cáo (banner) nhưng để quản lý một
quảng cáo là khá phức tạp, khi quảng cáo là một đoạn flash không hỗ trợ liên kết
bên ngoài, bắt buộc đoạn flash phải có chứa liên kết. Vì thế component advertising
được thiết kế để giúp người dùng quản lý quảng cáo dễ dàng hơn.
2.2.3.2. Thiết kế component
Cách đặt tên component được bắt đầu bằng com_<tên component>
Một component sẽ gồm hai phần:
- Phần front-end bao gồm các tập tin được sử dụng để tương tác với
trang người dùng.
- Phần back-end bao gồm các tập tin được sử dụng để tương tác với
trang quản trị.
Hình 2: Cấu trúc thư mục component
13
2.2.3.3. Ứng dụng tạo mới component com_advertising
Component com_advertising giúp người quản trị quản lý những quảng cáo
trên trang web một cách dễ dàng, com_advertising chỉ có phần back-end cho quản
trị viên quản lý mà không có phần front-end. Việc hiển thị những quảng cáo lên
phần front-end sẽ do module hiển thị quảng cáo đảm nhận.
Cấu trúc component com_advertising:
• Thư mục Tables chứa tập tin advertising.php có chức năng khởi tạo
đối tượng đề làm việc với bảng jos_advertising trong cơ sở dữ liệu.
• Thư mục Tables chứa tập tin advertising_menu.php có chức năng
khởi tạo đối tượng đề làm việc với bảng jos_advertising_menu trong
cơ sở dữ liệu.
• admin.advertising.html.php chứa giao diện của component.
• admin.advertising.php điều khiển component theo các sự kiện xảy ra.
• advertising.xml tập tin chứa các thông tin cài đặt của component.
• install.advertising.php hiển thị thông báo khi cài đặt thành công.
• install.mysql.sql tập tin tạo các bảng trong cơ sở dữ liệu.
• toolbar.advertising.html.php tạo thanh công cụ.
• toolbar.advertising.php điều khiển việc hiển thị thanh công cụ.
• uninstall.mysql.php tập tin xoá các bảng đã cài đặt của component.
Tập tin toolbar.advertising.html.php tạo ra thanh công cụ với các chức năng
cần thiết cho com_advertising. Trong Joomla hỗ trợ chúng ta lớp JtoolBarHelper để
tạo ra thanh công cụ.
Một số phương thức chính:
JToolBarHelper::title( JText::_( 'Quảng cáo' ),'generic.png' ): Đặt tên
và ảnh đại diện cho thanh công cụ.
JToolBarHelper::save(): Tạo nút Lưu.
JToolBarHelper::apply(): Tạo nút Áp dụng.
JToolBarHelper::cancel(): Tạo nút Huỷ.
JToolBarHelper::publishList(): Tạo nút Bật.
14
JToolBarHelper::unpublishList(): Tạo nút Tắt.
JToolBarHelper::editList(): Tạo nút Sửa.
JToolBarHelper::deleteList(): Tạo nút Xoá.
JToolBarHelper::addNew(): Tạo nút Thêm mới.
Tập tin toolbar.advertising.html.php thực hiện hiển thị giao diện toolbar thao
các sự kiện của component.
_NEW() {}: Chứa các công cụ trong sự kiện thêm mới.
Hình 3: Thanh công cụ thêm mới của com_advertising
_DEFAULT(){}: Chứa các công cụ mặc định của component.
Hình 4: Thanh công cụ mặc định của com_advertising
Tập tin toolbar.advertising.php hiển thị giao diện thanh công cụ cho đúng với
từng sự kiện bằng cách phân tích biến $task.
require_once(JApplicationHelper::getPath( 'toolbar_html' )): Đăng kí
sử dụng các phương thức trong tập tin toolbar.advertising.html.php.
TOOLBAR_advertising::_NEW(): Gọi hàm _NEW().
TOOLBAR_advertising::_DEFAULT(): Gọi hàm _DEFAULT().
Cơ sở dữ liệu của com_advertising:
Mô hình quan niệm dữ liệu hình 5.
15
Hình 5: Mô hình quan niệm dữ liệu của com_advertising
Trong hinh 5 bảng jos_advertising sẽ chứa các thông tin về quảng cáo, còn
bảng jos_menu và jos_users là bảng của hệ thống Joomla.
Mô hình tổ chức dữ liệu:
Ở phiển bản Joomla 1.5 thì các bảng sẽ bắt đầu bởi tiền tố “jos_”.
Jos_advertising ( id, name, link, phonenumber, email, iduser, image, created,
modified, position, expiration, published).
Jos_advertising_menu (idadv, idmenu).
Mô hình vật lý dữ liệu:
Bảng Jos_advertising:
16
Tên thuộc
tính
Kiểu dữ
liệu
Kích
thước
Ràng buộc toàn vẹn Mô tả
id int 11 Khoá chính
name varchar 255 Tên quảng cáo
link varchar 255 Liên kết
phonenumber varchar 15 Số điện thoại
khách hàng
email varchar 100 Email khách hàng
iduser int 11 Lookup(jos_users) Khoá ngoại bảng
jos_users
image varchar 255 Đường dẫn tới tập
tin ảnh hoặc flash
created datetime Ngày tạo
modified datetime Ngày sửa đổi
position smallint Vị trí quảng cáo
expiration date Ngày hết hạn
published tinyint 1 Bật hoặc tắt
Bảng Jos_advertising:
Tên thuộc
tính
Kiểu dữ
liệu
Kích
thước
Ràng buộc toàn vẹn
idadv int 11 Lookup(jos_menu)
idmenu int 11 Lookup(jos_advertising)
Tạo cơ sở dữ liệu:
Tập tin install.mysql.sql để tạo ra các bảng trong cơ sở dữ liệu. Trong tập tin
này sử dụng các câu lệnh mysql để tạo ra bảng jos_advertising và
jos_advertising_menu. Tập tin này sẽ được sử dụng khi cài đặt component nhằm
mục đích tạo ra các bảng trong cơ sở dữ liệu.
17
Tập tin uninstall.mysql.sql chứa các câu lệnh mysql để xoá bỏ các bảng trong
cơ sở dữ liệu đã được tạo ra khi cài đặt component. Tập tin sẽ được thực thi khi
người dùng gỡ bỏ component.
Để làm việc với các bảng cơ sở dữ liệu trong Joomla đã hỗ trợ lớp Jtable cho
phép tạo các đối tượng tương ứng với các bảng trong cơ sở dữ liệu. Việc thực hiên
các câu truy vấn dữ liệu sẽ nhanh chóng và dễ dàng tránh viết lại mã.
Tập tin advertising.php trong thư mục tables có nhiệm vụ tạo ra các đối
tượng làm việc với bảng dữ liệu jos_advertising.
__construct(&$db): Hàm khởi tạo đối tượng lưu trữ giá trị của bảng
jos_advertising, hàm này sử dụng phương khởi tạo thức kế thừa của
lớp JTable, $db là một thể hiện của lớp JFactory.
Tập tin advertising_menu.php có nhiệm vụ tạo ra đối tượng làm việc với
bảng dữ liệu jos_advertising_menu.
Tập tin admin.advertising.php lập trình các chức năng cho component bằng
việc phân tích tham số $task. Với mỗi chức năng thì tương ứng với một giá trị đã
được mặc định sẵn trong Joomla.
$task = 'add': Sự kiện thêm mới
$task = 'edit': Sự kiện sửa
$task = 'apply': Sự kiện áp dụng
$task = 'save': Sự kiện lưu
$task = 'remove': Sự kiện xoá
$task = 'unpublish': Sự kiện tắt
$task = 'publish': Sự kiện bật
editAdvertising($option){}: Chức năng thêm mới và chỉnh sửa một
quảng cáo. Tham số $option chứa tên component hiện hành, nó được
sử dụng để trả lại giao diện của component hiện hành khi thực hiện
thành công một chức năng nào đó.
getInstance('advertising', 'Table'): Khởi tạo đối tượng của lớp
JTable
18
load($id): Lấy thông tin của quảng cáo có khoá bằng với biến $id.
bind(JRequest::get('post')): Hàm gán những giá trị người dùng
nhập trên giao diện vào đối tượng TableAdvertising.
setQuery($query): Gán câu truy vấn dữ liệu vào đối tương
JFactory.
loadObjectList(): Phương thức thực hiện câu truy vấn của lớp
JFactory và trả về một danh sách các đối tượng thoả mãn.
JRequest::getVar('cid', array(0),'','array'): Phương thức lấy giá trị
của một biến với kiểu dữ liệu xác định.
store(): Hàm lưu thông tin vào cơ sở dữ liệu.
saveAdvertising($option,$task){}: Lưu một quảng cáo vào cơ sở dữ liệu.
JTable::getInstance('advertising','Table'): Khởi tạo đối tượng bảng.
bind(JRequest::get('post')): Gán giá trị người dùng đã nhập trên
giao diện vào cho đối tượng bảng.
JFactory::getUser(): Lấy thông của người dùng hiện tại.
changeAdvertising($state=0){}: Thực hiện bật và tắt một quảng cáo.
JRequest::getVar( 'cid' , array() , '' , 'array' ): Lấy khoá của những
quảng cáo được chọn để bật hay tắt. Nếu tham số $state là 1 thì
thực hiện bật một quảng cáo ngược lại thì thực hiện tắt một quảng cáo.
implode( ',', $cid ): Chuyển đổi mảng $cid thành một chuỗi các
phần tử cách nhau bởi dấu “,”.
showAdvertising($option){}: Lấy thông tin tất cả quảng cáo có trong
cơ sở dữ liệu để hiện thị lên component.
removeAdvertising($option){}: Hàm xoá một quảng cáo trong cơ sở
dữ liệu, hàm này sẽ lấy danh sách khoá của những quảng cáo mà
người dùng chọn để xoá khỏi cơ sở dữ liệu.
JRequest::getVar('cid', array(),'','array'): Trả về những khoá của
những bản ghi cần xoá.
Tạo tập tin admin.advertising.html.php
19
editAdvertising($option,$row,$menus,$advertising_menu){}: Hiển thị
giao diện quản lý chi tiết một quảng cáo.
$rows danh sách bản ghi quảng cáo.
$option chứa giá trị com_advertising.
$pageNav là đối tượng phân trang khi số lượng bản ghi là quá nhiều.
showAdvertising($rows,$option,$pageNav){}: Hiển thị giao diện quản
lý những quảng cáo đang có.
$option: lưu tên component đang thao tác tham số này dùng để tạo
liên kết trả về giao diện chính của component khi thực hiện xong
một chức năng.
$row: lưu giữ giá trị một bản ghi quảng cáo.
$menus: mảng các bản ghi menu.
$advertising_menu: mảng các bản ghi menu mà một quảng cáo
được hiển thị trên đó.
JHTML::_('behavior.calendar'): khởi tạo đối tượng calendar hiển
thị bảng lịch năm và cho phép chọn các giá trị tương ứng giúp cho
người sử dụng có thể chọn ngày tháng năm trên giao diện trực quan.
JHTML::_('grid.id',$i,$row->id): Tạo ra đối tượng checkbox với
value = $row->id.
JHTML::_('grid.published',$row,$i): Tạo đối tượng published có
sẵn sự kiện bật hoặc tắt.
Chúng ta phải đặt đúng tên thuộc tính name="adminForm" của thẻ
<form > do Joomla quy định để thực hiện được các đoạn
javascript().
Giao diện thêm mới một quảng cáo hình 6.
20
Hình 6: Giao diện thêm mới một quảng cáo
Giao diện quản lý quảng cáo hình 7.
Hình 7: Giao diện quản lý danh sách quảng cáo
Sau khi component đã hoàn thành chúng ta nén thư mục com_advertising với
đuôi mở rộng là com_advertising.zip. Người dùng muốn sử dụng chỉ cần thực hiện
việc cài đặt phần mở rộng.
Để hiển thị quảng cáo tại nhưng vị trí khác nhau trên trang web chúng ta cần
có module mod_advertising.
Cấu trúc:
• mod_advertising.php: Tập tin thực hiện module.