Hướng dẫn sử dụng Hook trong drupal cho người mới bắt đầu

Nếu bạn có ý định theo học drupal để làm web thì cần biết cách sử dụng hook. Trong drupal, hook đóng vai trò then chốt. Làm chủ cách sử dụng hook, bạn sẽ dễ dàng tùy chỉnh các chức năng theo ý muốn của mình. Việc sử dụng hook trong drupal cũng rất đơn giản. Ở trang drupal đã có đầy đủ, chi tiết các hướng dẫn sử dụng hook. Tuy nhiên, toàn là tiếng Anh. Bài này, mình sẽ hướng dẫn các bạn bằng tiếng Việt. Đọc xong, bạn sẽ sử dụng hook trong drupal một cách ngon lành.

Hook trong drupal thực chất là các hàm. Khi chúng ta cài đặt drupal để làm web. Nguyên tắc của drupal hay của bất kỳ CMS nào cũng thế. Làm gì thì làm nhưng bạn không được tác động vào bất kỳ module có sẵn của hệ thống. Nếu bạn chỉnh sửa trong các module có sẵn của Drupal, điều này sẽ rất nguy hiểm cho việc update và phát triển sau này. Chính vì vậy, khái niệm hook ra đởi. Hook cho phép bạn tương tác với nhân - các module có sẵn của drupal mà không cần tác động vào nó. Bài viết mình thực hiện với drupal 7. Nhưng bạn có thể áp dụng cho tất cả các phiên bản drupal khác nhau: drupal 6, drupal 7, drupal 8 đều được

Bài viết gồm 2 phần;

  • Các hook thường dùng trong drupal
  • Các sử dụng hook trong drupal

1. Các hook thường dùng trong drupal

Trong drupal có rất nhiều hook, tùy vào website của bạn cần những chức năng gì mà sử dụng hook cho thích hợp. Một thời gian dài làm web với drupal, mình nhận thấy một số hook thường dùng nhất:

  • hook menu: Để bạn tạo các đường dẫn. Để tạo ra đường dẫn mới trong drupal thì chúng ta có thể dùng view, dùng panel rồi vào phần tạo page. Tuy nhiên, nếu sử dụng lâu ngày, bạn sẽ cảm nhận cách dùng hook_menu để tạo đường dẫn là thích hợp nhất
  • Các loại hook node: Hook_node_insert, hook_node_delete, hook_node_prepare ...Được dùng trong quá trình bạn tác động tới node. Ví dụ: bạn tạo node mới, cập nhật node, xóa node...
  • Hook_block_info, hook_block_view : dùng để khai báo và tạo ra các block. Để tạo ra block, bạn có thể dùng các thông thường để tạo thêm 1 block mới. Nhưng khi cần các block có chức năng cao hơn, bạn không thể dùng cách thông thường. Lúc đó, bạn phải code để tạo ra các block.
  • Các loại hook về user: hook_user_delete, hook_user_insert, hook_user_login.... Các loại hook này dùng để tương tác trong quá trình bạn tác động tới user. Ví dụ, bạn muốn tác động đến quá trình tạo ra user mới thì dùng hook_user_insert, tác động vào quá trình xóa 1 user thì dùng hook_user_delete..... Tùy vào chức năng của bạn muốn gì mà dùng hook thích hợp
  • Các loại hook form: hay dùng nhất là hook_form_alter. Hook này dùng để custom các form đã có sẵn của drupal. Bạn muốn làm gì với form đã có sẵn thì dùng hook này. Ví dụ: ở form tạo node mới, bạn muốn ẩn đi phần nhập title chẳng hạn. Lúc đó bạn dùng hook_form_alter
  • hook_init: dùng để thêm file js, css. Bình thường chúng ta có thể thêm js, css ở trong theme. Tuy nhiên, chúng ta còn cách nữa là dùng hook_init để thêm. Nếu bạn để ý, một số module sẽ có các file js, css ở trong đó.

Thế thôi, trên đây là những hook thường dùng nhất. Để biết đầy đủ các hook có trong drupal thì bạn xem ở đây. https://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/7

 

2. Hướng dẫn cách sử dụng hook trong drupal

Mình nhắc lại lần nữa, khi viết code với drupal, bạn không được chỉnh sửa trong bất kỳ module có sẵn nào của drupal. Muốn thực hiện chức năng của bạn thì bạn cần tạo ra 1 module mới do chính bạn viết. Sau đó, mới viết code vào module do bạn tạo đó.

Như vậy, để sử dụng hook: bước đầu tiên bạn phải tạo ra 1 module. Cách tạo ra 1 module trong drupal thì rất đơn giản. Bạn tạo ra 1 folder trong thư mực sites/all/modules. Trong thư mục đó, bạn cần tạo ra 2 file bắt buộc: file .info và file .module.

Bạn vào file .module để viết hook. Ví dụ mình tạo ra 1 module tên là: custom. Cách sử dụng hook sẽ là như sau: mình vào file custom.module. Sau đó muốn sử dụng hook nào thì chỉ cần viết: custom_tên hook bạn muốn sử dụng. Muốn sử dụng hook_form_alter thì mình viết là: custom_form_alter.

Rất đơn giản phải không? Đến đây, mình xin kết thúc bài viết

 

Kết luận: Từ những ngày đầu hook drupal, mình loay hoay mãi với cách sử dụng hook. Đọc thì toàn tiếng anh mà chẳng hiểu gì. Tìm thì cả có tài liệu tiếng Việt nào hướng dẫn. Lên các diễn đàn hỏi thì cứ được chỉ dẫn 1 cách tổng quát. Nhiều lúc nản lắm, nhưng dần dần, qua việc thực tế do yêu cầu chức năng website đề ra. Mình đã lần lượt biết cách sử dụng các hook. Với bài viết này, mình hi vọng các bạn đi sau sẽ nhanh chóng tiếp cận và làm chủ hook trong drupal một cách dễ dàng.