1./ Cấu trúc module 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 như sau.
- tên_module.info : tệp tin này chứa những thông tin cơ bản về module
- tên_module.module : tệp tin này chứa code chính của module.
- Ngoài ra module còn có thể có những tệp tin mã nguồn hoặc tài nguyên mở rộng khác.
Ví dụ: Tạo module có tên bongda sẽ có ít nhất hai tệp tin như sau:
- bongda.info
- bongda.module
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.
- 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ý. Tìm hiểu về drupal hook tại đây
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.
Tra cứu danh mục các hook của Drupal 7: http://api.drupal.org/api/group/hooks/7
Ví dụ: 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 ");
}
}
?>
Ví dụ: Bắt sự kiện login / logout, thông báo bằng javascript:alert()
function login_user($op, &$edit, &$account, $category = NULL) {
global $base_url;
if ($op == 'login' ) {
die('<script>alert("Login");window.location.href="'.$base_url.'";</script>');
}
if ($op == 'logout' ) {
die('<script>alert("Logout");window.location.href="'.$base_url.'";</script>');
}
}
Trong đó:
- login: Tên module
- login_user: hook_user
Note:
- Sau khi login / logout drupal sẽ chuyển hướng sang trang mới.
- login : chuyển hướng tới trang user detail có url dạng : user/uid
- logout : chuyển hướng tới trang chủ
- Vì thế để có thể hiển thị được alert khi login/logout, ta phải sử dụng php: die() để hủy bỏ việc chuyển hướng để hiển thị javascript:alert(), sau khi hiển thị alert ta chuyển hướng tới trang mong muốn bằng window.location.href.
Không có nhận xét nào:
Đăng nhận xét