Posted by Mr.vantri on February 29, 2012 at 10:15am
Mình có điều này chưa hiểu. Trong site của chúng sẽ có rất nhiều module dùng 1 hook. hook_nodeapi chẳng hạn. Khi insert module A dùng hook_nodeapi để in ra 1 message1, module chúng ta lại dùng hook_nodeapi để in ra message2(giả sử là như vậy). Thế thì khi insert xong nó sẽ in ra message1 và message2 vì site sẽ lần lượt thực hiện tất cả các hook_nodeapi. Vấn đề ở đây là mình muốn chỉ in ra message2 thì phải làm sao? hay nói cách khác làm thế nào để ngăn hook_nodeapi ở module A không thực thi.(tất nhiên không phải là disable module đó).
Mong nhận được chia sẻ của mọi người!

Comments
anh thử dùng hàm drupal_get_messages()
http://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/drupa..., em không rành drupal lắm nên có sai gì xin đc chỉ thêm
TQN
Nó chỉ là function in ra
Nó chỉ là function in ra message thôi. :(. Cái mình cần không phải vậy. Mà cần là chặn 1 hook không cho nó thực thi.
https://tech12h.com/
Bạn debug xem
Bạn debug xem hook bạn cần làm việc được chạy sau hay chạy trước hook cần chặn.
Nếu chạy sau bạn có thể dùng drupal_get_messages() trong body code mà bạn đang làm việc. Vì hàm trên Return all messages that have been set. mình nghỉ bạn có thể unset các messages khác rồi sau đó set message của bạn.
TQN
Khi đặt câu hỏi liên quan đến code thì nên upload code lên
Theo tôi để giải quyết vấn đề của bạn thì trước tiên bạn phải làm được một việc: Đó là làm sao cho hook_nodeapi trong module của bạn được gọi đầu tiên. Khi được gọi đến đầu tiên thì bạn viết hết những code cần xử lí xong rồi thì cho nó redirect đi là xong.
* Làm sao để hook_nodeapi của bạn được gọi đầu tiên ?
- Bạn kéo trọng số (weight) module của bạn về giá trị nhỏ nhất thì dĩ nhiên module của bạn sẽ được gọi trước tiên.
* Làm sao tôi có thể kéo trọng số (weight) module của tôi về giá trị nhỏ nhất ?
_ Bạn có thể viết một hook_update_n() để update weight module của bạn
_ Hoặc bạn có thể cài module : http://drupal.org/project/weight này lên rồi kéo module của bạn lên.
Chúc bạn thành công!
Hi anh An.^_^.(Rất vui). Em
Hi anh An.^_^.(Rất vui).
Em chưa rõ lắm về "redirect" anh nói. Nó hoạt động như thế nào ạ? Anh có thể nói rõ hơn được không? Còn về phần thứ tự thực hiện có nhiều cách. Em đề xuất 1 cách nữa đó là mình dùng hook_install (hoặc hook_enable cũng được)trong file my_module.install. Cũng rất tường minh và dễ hiểu.
https://tech12h.com/
redirect đi là xong
Làm sao tôi có thể redirect đi được ?
Bạn có thể sử dụng hàm: drupal_goto()
Cám ơn về đề xuất hook_install, hook_enable để thực hiện công việc sắp xếp weight. Nhưng những hook này thường chỉ có tác dụng một lần một:
** hook_install : có tác dụng khi bạn install module
** hook_enable: chỉ có tác dụng khi module ở trạng thái disabled chuyển sang enable thôi
** hook_update_n: Nó có tác dụng n lần
Nói chung tùy vào trường hợp mình chọn sử dụng cách nào cho hợp lý là được. Không nhất thiết phải logic khoa học máy móc quá mà làm cho khả năng sáng tạo bị lu mờ :) .
Bài tiếng việt sử dụng hook trong drupal
Bài tiếng việt sử dụng hook trong drupal
http://www.tech12h.com/cong-nghe/huong-dan-su-dung-hook-trong-drupal-cho...
https://tech12h.com/