Thứ Bảy, 7 tháng 2, 2009

Cách viết Module, Hook trong Drupal

1. Module trong Drupal :

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 tên_module.info và một tập tin tên_module.module, tên này không được trùng với các module đã tồn tại trong hệ thống.
Tạo file *.info:
Cấu trúc của một tập tin *.info có dạng:
- Name = tên của module, bắt buộc phải có.
- Description = mô tả các chức năng của module, bắt buộc phải có.
- Version = phiên bản của module.
- 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”.

- 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.

Tạo file *.module:
+ Bắt đầu và kết thúc với thẻ <?php ?>
+ Chúng ta có thể ghi chú thích cho nhiều dòng sau dấu ‘/*’ và kết thúc ghi chú dùng dấu ‘*/’, chú thích cho một dòng dùng dấu ‘//’.
+ Viết code: viết các hook mà chúng ta cần xử lý.

2. Hook trong Drupal :

Hook được xem như là các sự kiện (event) bên trong bộ nhân Drupal. Hook được gọi là các hàm callbacks, đây là cách phổ biến nhất để tương tác với nhân Drupal. Module sử dụng hook để tương tác với hệ thống. Mỗi hook có tham số và giá trị trả về nhất định. Một hook là một hàm PHP được đặt tên theo dạng: codepro_user(), trong đó codepro là tên của module còn user là tên của hook. Mỗi hook sẽ có những thông số đầu vào khác nhau và trả về các kết quả khác nhau.
Tùy theo chức năng và mức độ phức tạp của module mà người thiết kế có thể sử dụng các hook thích hợp.

http://api.drupal.org/api/group/hooks/6

VD: Tạo module demo, viết hook bắt sự kiện login, logout .

- Tạo folder demo trong folder modules.

-  Tạo 2 file demo.info, demo.module.

-  Viết function hook_user() trong demo.module.
<?php
function hook_user($op, &$edit, &$account, $category = NULL)
{
if ($op == 'login' )
{
die("hook user login");
}
if ($op == 'logout' )
{
die("hook user logout ");
}
}
?>

3 nhận xét:

  1. đang tính học drupal vì chán joomla quá -> quá nặng và chậm . bạn có thể viết thêm chi tiết nữa đc ko về cấu trúc của 1 mod drupal để mình có thể học hỏi đi . Viết thế nào đọc xong cảm thấy còn hoa mắt quá ....

    Thanks

    Trả lờiXóa
  2. Ban co the vao thang trang http://drupal.org de hoc vi doc qua bai viet nay toi biet chu nhan bai viet khong biet ve drupal.

    Trả lờiXóa
  3. Tớ thấy chủ topic hiểu rất rõ về drupal đấy chứ .
    Ít ra là giỏi hơn tớ :))

    Trả lờiXóa