Tuesday, August 3, 2010

Tản mạn về Joomla - TAG là gì?

Nguồn: http://luyenkim.net/home9/component/option,com_fireboard/func,view/catid,66/id,1886/Itemid,88889169/
Thời gian quan, thỉnh thoảng ngó bên diễn đàn JV thấy anh em trao đổi bàn tán nhiều về TAG trong Joomla (cả 1.0.x và 1.5.x).

http://www.joomlaviet.org/forum/index.php/topic,5634.0.html

Và TGPM có đưa 1 ví dụ các ứng dụng đôi với nó: http://extensions.joomla.org/compon...ts/cat_id,1761/Itemid,35/

Trong bài viết có 1 số thành viên có nêu ứng dụng rất đơn giản với Drupal. thực ra việc lựa chọn giữa Joomla hay Drupal cũng như bạn sử dụng lập trình C với Pascal, cả 2 đều sẽ cho cùng 1 kết quả. Tuy nhiên cách thực hiện (implementation) thì có khác. Hoặc như 1 người chỉ biết sử dụng lập trình C bị 1 người biết Visual C nói, ứng dụng của mày tao chỉ cần 5 thao tác là xong, trong khi với C bạn mất cả mấy tháng để viết giao diện và cài đặt ứng dụng chỉ với thao tác nhập 2 số trên màn hình và kết xuất tổng giá trị của 2 số đó .

Tôi cũng như các bạn đã quen với Joomla thì ta sẽ chỉ sử dụng Joomla cho ứng dụng của mình cho dù có những khó khăn trong việc cài đặt và thực thi 1 số ứng dụng.

Vậy TAG là gì. TAG về cơ bản là mở rộng quan hệ cho các bài viết bằng việc cung cấp các từ khóa liên quan (relative keywords). Nghĩa là các bài viết có trùng từ khóa sẽ được hiển thị khi từ khóa này được triệu gọi.

Vậy trong Joomla hệ thống nội dung được quản lý thế nào.
Trong Joomla, hệ thống nội dung được phân cấp theo dạng:
+ Section -> Categories -> articles
Nghĩa là hệ thống tổ chức theo các Section. Là lớp cao nhất có chứa các lớp con là Category, mỗi Section có vô số Category và mỗi Category có chứa vô số các article hay bài viết.
Như vậy, mỗi bài viết chỉ thuộc duy nhất 1 Sec và lớp con category thuộc Sec này. Hay nói 1 cách khác, không thể có 1 bài viết nào đó có thể thuộc nhiều hơn 1 category.
Chẳng hạn:
Sect 1 - Cat 1 - a1, a2, a3,....an
Sect 1 - Cat 2 - c1, c2,..., cm
Sect 1 - Cat 3 - d1, d2, d3, ... dz

Sect 2 - Cat 4 - e1, e2, e3
Sect 2 - Cat 7 - g0, g1, g2,...gn

nghĩa là bài viết a2 sẽ chỉ nằm trong Category Cat 1 và đương nhiên thuộc Sect 1. Cũng như vậy, bài viết e3 sẽ chỉ nằm trong Cat 4 và thuộc Sect 2. Và bài viết e3 không thể nằm trong cat Cat 1 được, cũng như thế a2 không thể nằm trong Cat 4 được.

Nhưng thực tế cho thấy, 1 bài viết có thể nằm trong nhiều Category. Chẳng hạn tôi có bài viết "Yahoo Messenger 9.0 hỗ trợ tiếng Việt" hiện đang nằm trong category Tin CNTT, nhưng tôi cũng muốn nó nằm trong category Kinh nghiệm - thủ thuật. Lý do là nội dung 1 bài viết có thể bao trùm nhiều nội dung. Nghĩa là nó vừa bao hàm nội dung thông tin về CNTT - Tin CNTTKinh nghiệm - thủ thuật, hoặc ta muốn nó nằm cả trong Giới thiệu phần mềm nữa chẳng hạn.

Qua ví dụ trên, chúng ta mong muốn mở rộng 1 bài viết đối với nhiều Categories. hay nói 1 cách khác, 1 bài viết có thể bao trùm trong nhiều nhóm nội dung Category.

Thử xem Wordpress.com sử dụng TAG thế nào: Ví dụ trong ứng dụng của Wordpress - lấy ví dụ với http://luyenkim.wordpress.com/ . Với cách này họ sẽ k0 có khái niệm Sect nữa mà thay vào đó, mỗi TAG sẽ trở thành 1 Category (nhóm tin). Bất kì 1 tin nào cũng có thể nằm trong các TAG sẵn có (hay các Category), người gửi bài căn cứ vào nội dung để chọn các category nhất định.

Ví dụng bài viết "Phong thủy đầu giường và những điều cấm kỵ" sẽ nằm trong các category Giải trí, Life Style, Thủ thuật. Bạn có thể thấy ở cuối mỗi bài viết có nội dung là Posted in Giải trí, Life Style, Thủ thuật. Như vậy khi bạn chọn Category Giải trí hay Life Style hay Thủ thuật bạn đều thấy xuất hiện bài viết "Phong thủy đầu giường và những điều cấm kỵ".


Bây giờ quay trở lại với Joomla, rõ ràng là với hệ thống phân cấp Section -> Categories -> Articles sẽ làm cho hệ thống thông tin có cấu trúc sáng sủa và rõ ràng hơn. Các hệ thống sử dụng cấu trúc tin này được áp dụng ở hầu hết các báo điện tử lớn như:
VNExpress.net, tuoitre.com.vn, thongtincongnghe.com, ... vietbao.vn .

Và website áp dụng thành công về mở rộng cho Joomla là vietbao.vn khi họ sử dụng thêm khái niệm TAG. Trong vietbao.vn, TAG được hiểu như 1 từ khóa quan trọng - từ khóa nêu bật được nội dung bài viết và có tần xuất xuất hiện nhiều. Như vậy, khi 1 TAG được chọn, tất cả các bài viết có cùng TAG sẽ xuất hiện.

Về nguyên tắc chung cách hành xử như trên giống như bạn sử dụng trường meta related item trong Joomla. Tất nhiên cách cài đặt sẽ khác nhau, chẳng hạn sử dụng từ khóa trực tiếp đối với website nhỏ và sử dụng bảng ánh xạ "từ khóa TAG' <-> bộ mã rút gọn đối với các website lớn.

Như vậy có thể quan niệm TAG là mở rộng:
+ category - mỗi bài viết có thể nằm trong nhiều category.
+ từ khóa chính - chuỗi bài viết có cùng từ khóa sẽ được gom chung.

Cho dù là mở rộng category hay từ khóa chính. Việc mở rộng quan hệ trong hệ thống cấu trúc bài viết của Joomla là cần thiết để đáp ứng cho nhu cầu thể hiện nội dung thông tin của bạn. Và điều này cho thấy, cho dù mỗi hệ thống đều có những ưu nhược điểm riêng, Joomla vẫn luôn đem lại cho bạn 1 cấu trúc hệ thống nội dung thông tin đầy đủ và sẵn sàng trước những đòi hỏi về mở rộng cấu trúc nội dung thông tin.



Và chắc chắn rằng, với Joomla 1.5.x được xây dựng mới trên 1 cấu trúc quan hệ dữ liệu VMC đã đem lại cho giới lập trình 1 quan niệm lập trình có tính hệ thống, sáng sủa, rút ngắn qua trình xây dựng & phát triển hệ thống sẽ đem lại những diện mạo mới trong ứng dụng Joomla 1.5.x. Và chúng ta sẽ mong chờ những ý tưởng mới về ứng dụng trong môi trường Joomla 1.5.x trong thời gian sắp tới.

Dù rằng, vẫn sẽ có nhiều CMS cùng song hành với Joomla như Mambo, Drupal,... bạn có thể thích Joomla hay không không quan trọng, quan trọng ở chỗ với mỗi công cụ đó bạn có thể là gì và làm thế nào để đáp ứng nhu cầu của mình!

Chúc 1 ngày đầu tuần vui vẻ!

No comments:

Router Packet Networking

Đây là video ngắn khá hay, mô tả đường đi của một gói tin trên Mạng Internet.