Thứ Hai, 15 tháng 7, 2013

Cấu trúc module drupal

Keywords: Drupal, module, cấu trúc, cách tạo module drupal, cách viết module drupal.

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.
Tên module không được trùng với các module đã tồn tại trong hệ thống.

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.
Cấu trúc của một tập tin *.module: thực chất nội dung là mã php

  • 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

Học lập trình web căn bản với PHP

Bài 1: Các kiến thức căn bản Part 1:  https://jimmyvan88.blogspot.com/2012/05/can-ban-lap-trinh-web-voi-php-bai-1-cac.html Part 2:  https://...