MODULE TRONG DRUPAL?Module là một nhóm những chức năng nhất định, gồm những thuộc tính cơ bản:+ Name: tên chính thức của module, ảnh hưởng trực tiếp đến những hàm kết nối với hệ thống.+ Display name: tên gợi nhớ, được trình bày ở trang điều hành module.+ Description: giới thiệu ngắn gọn về các chức năng của module, được trình bày ở trang điều hành module.+ Version: mã số phiên bản của module.+ Dependencies: tên của module mà module đang thiết kế yêu cầu tới (trong trường hợp sử dụng hàm từ module khác), nếu có nhiều module thì các module này cách nhau bởi dấu phẩy. Module không thể được kích hoạt nếu các module được yêu cầu không tồn tại hoặc chưa được kích hoạt.+ Package: phân nhóm chức năng chứa đựng module.Một điểm hay của Drupal là cho phép người phát triển module có thể sử dụng lại những hàm đã được viết ở các module khác để xây dựng module cho mình. Module có thể tự động ngưng hoạt động tạm thời để giảm tải cho máy chủ khi có quá nhiều truy cập bằng cách bật module throttle (quản lý cơ chế tự động điều chế sự tắt nghẽn hệ thống) và chọn sử dụng chức năng điều tiết lưu lượng. Chức năng tự động điều tiết có thể được bật thông qua trang cấu hình throttle sau khi đã bật module throttle.Mỗi module phải xử lý được các sự kiện hoặc định nghĩa các sự kiện riêng của nó. Mỗi thao tác cần được phân quyền rõ ràng. Việc phân quyền này thuộc về người điều hành. Mỗi thao tác cần có một internal path (hay drupal path) nhất định.Thông tin được khai báo rõ ràng qua tập tin .info, điều đó sẽ làm cho người điều hành dễ quản lý. Không cần quan tâm nhiều đến quyền hạn truy cập. Module được tách ra một thư mục cụ thể để quản lý một cách dễ dàng.Phát triển module không cần thay đổi phần nhân của mã nguồn, khi nhân có lỗi bảo mật, việc cập nhật trở nên dễ dàng. Việc gán các quyền truy cập với các vai trò thuộc về người điều hành, người điều hành không bị ràng buộc bởi quyền truy cập nào. Mỗi module có thể định nghĩa cho riêng nó những quyền hạn truy cập khác nhauHOOK 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_menu(), trong đó codepro là tên của module còn menu 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.VIẾT 1 MODULE CHO DRUPAL NHƯ THẾ NÀO?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ớ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 mã: cài đặt các hook mà chúng ta cần xử lý (drupal có khá nhiều hook), ở đây mình lấy ví dụ đơn giản là cài đặt 1 internal path để khi request tới thì nó sẽ in ra một câu chào.Code: Chọn hết t(‘Title of TTP menu’), ‘path’ => ‘ttpmenu’, ‘callback’ => ‘ttpmenu_hello’, ‘access’ => TRUE ); } return $items; } function ttpmenu_hello() { return t(‘Hello CodePro!’); }VẬY INTERNAL PATH TRONG DRUPAL LÀ GÌ?+ Khi một web-browser tạo một request đến Drupal, nó đưa cho Drupal 1 URL, từ thông tin này Drupal “suy nghĩ” để chạy code và giải quyết request. Điều này được gọi là “dispatching”.+ Để làm điều này, drupal thực hiện như sau: yêu cầu các module cung cấp 1 mảng menu các item, đó là đường dẫn và các thông tin về đường dẫn.+ Trong ví dụ trên, hàm hook _menu thật sự sẽ được gọi 2 lần : một lần khi biến $may_cache được set là TRUE và một lần khi biến $may_cache được set là FALSE. Menu mà chúng ta tạo ra trong trường hợp là menu tĩnh. Nó không bào giờ thay đổi vì nó luôn là cachable. Toàn bộ cây menu chỉ được tạo 1 lần cho user, Drupal sẽ lưu cây này trong cache dưới dạng mảng trong bảng cache_menu, nếu bạn muốn tạo một menu động, ta sẽ xử lý nó trong trường hợp biến $may_cache = FALSE.+ NTERNAL PATH chính là những path được định nghĩa trong hook menu và nó gắn với 1 hàm callback, khi chúng ta request tới path này thì nó sẽ được chuyển tới cho hàm callback xử lý.
« Client Side Load Balancing for Web 2.0 Applications Tổng Quan Về Kỹ Thuật Subclass »
