programming4:hook
Khác biệt
Đây là những khác biệt giữa hai phiên bản của trang.
Phiên bản trước của cả hai bênPhiên bản trướcPhiên bản sau | Phiên bản trước | ||
programming4:hook [2023/04/12 16:28] – [Về việc đặt tên vị trí của hook:] hoaquynhtim99 | programming4:hook [2023/04/13 08:21] (hiện tại) – [Lập trình hook] hoaquynhtim99 | ||
---|---|---|---|
Dòng 3: | Dòng 3: | ||
Hook chỉ có từ NukeViet 4.6 trở đi, thay thế cho plugin | Hook chỉ có từ NukeViet 4.6 trở đi, thay thế cho plugin | ||
- | ===== Danh sách các hook ===== | + | ===== Mô tả về hook ===== |
- | [[nukeviet4:codex:hooks-reference|Xem danh sách các hook trong NukeViet 4]] | + | {{ :programming4:hook_nukeviet_4.6.jpg? |
+ | Ảnh bên trên mô tả về hook của NukeViet 4. Trong một luồng xử lý (hoặc hiểu là một truy vấn) hệ thống sẽ gặp các vị trí mà code có khai báo một thẻ nào đó (có thể hiểu là event-name). Tại các vị trí đó hệ thống sẽ tìm trong thiết lập các hook (có thể hiểu là các hàm, các đoạn code) để xử lý sau đó mới quay lại luồng chính. | ||
+ | |||
+ | Có thể bắt gặp các vị trí đó bằng cách tìm kiếm trong code những chỗ có sử dụng hàm '' | ||
+ | |||
+ | |||
+ | Chi tiết một hook sẽ như sau | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Hook bản chất là một hàm xử lý và có thể trả kết quả về hoặc không tùy theo nhu cầu của lập trình viên. Trong đó ngoài việc có thể sử dụng các biến global, các hằng, class của hệ thống để xử lý thì có một số dữ liệu cố định tùy thuộc vào khai báo trước đó có thể sử dụng: | ||
+ | |||
+ | * Nguồn đầu vào: Đây là thông tin của module tại luồng xử lý mà gặp các hook-tag (xem ảnh 1). Trống thì nguồn đầu vào xuất phát từ hệ thống | ||
+ | * Dữ liệu đầu vào: Đây là dữ liệu được hàm nv_apply_hook truyền vào, tùy thuộc người lập trình. Bên dưới sẽ mô tả kỹ hơn | ||
+ | * Nguồn đầu ra: Đây là thông tin của module cần được thao tác dữ liệu vào nó tại hàm xử lý. Có thể trống nếu không chỉ ra. | ||
+ | |||
+ | Hàm xử lý sẽ sử dụng các tài nguyên hệ thống và các nguồn cố định bên trên để làm việc gì đó tùy người lập trình quyết định. | ||
+ | |||
+ | ===== Lập trình hook ===== | ||
+ | |||
+ | ==== Đăng ký hook-tag mới ==== | ||
+ | |||
+ | Lập trình viên tìm vị trí trong code mà mình muốn, sau đó sử dụng hàm '' | ||
+ | |||
+ | <code php> | ||
+ | nv_apply_hook('', | ||
+ | $db_slave = nv_apply_hook('', | ||
+ | list($contents, | ||
+ | </ | ||
+ | |||
+ | Cú pháp hàm nv_apply_hook như sau: | ||
+ | |||
+ | <code php> | ||
+ | nv_apply_hook($module, | ||
+ | </ | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ==== Lập trình hook ==== | ||
+ | |||
+ | Tạo file PHP đặt vào thư mục includes/ | ||
+ | |||
+ | |||
+ | <code php> | ||
+ | <?php | ||
+ | |||
+ | /** | ||
+ | * NukeViet Content Management System | ||
+ | * @version 4.x | ||
+ | * @author VINADES., | ||
+ | * @copyright (C) 2009-2021 VINADES., | ||
+ | * @license GNU/GPL version 2 or any later version | ||
+ | * @see https:// | ||
+ | */ | ||
+ | |||
+ | $nv_hook_module = ' | ||
+ | $nv_receive_module = ' | ||
+ | |||
+ | $callback = function($vars, | ||
+ | $module_name = $receive_data[' | ||
+ | $module_info = $receive_data[' | ||
+ | $module_data = $module_info[' | ||
+ | |||
+ | $credential = $vars[0]; | ||
+ | |||
+ | // FIXME code here | ||
+ | | ||
+ | return ' | ||
+ | }; | ||
+ | nv_add_hook($module_name, | ||
+ | |||
+ | </ | ||
+ | |||
+ | Khai báo biến '' | ||
+ | |||
+ | Khai báo biến '' | ||
+ | |||
+ | Thay tham số '' | ||
+ | |||
+ | Trong hàm xử lý có 3 biến tương ứng với các dữ liệu cố định mô tả ở ảnh 2 | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | **'' | ||
+ | |||
+ | Đây là giá trị của nguồn đầu vào mô tả trong ảnh 2. Hay là giá trị của '' | ||
+ | |||
+ | Chú ý '' | ||
+ | |||
+ | **'' | ||
+ | |||
+ | Nếu nguồn đầu vào rỗng thì '' | ||
+ | |||
+ | <code php> | ||
+ | $from_data[' | ||
+ | $from_data[' | ||
+ | </ | ||
+ | |||
+ | **'' | ||
+ | |||
+ | Nếu nguồn đầu ra rỗng thì '' | ||
+ | |||
+ | <code php> | ||
+ | $receive_data[' | ||
+ | $receive_data[' | ||
+ | </ | ||
+ | ===== Danh sách các hook có sẵn ===== | ||
+ | |||
+ | [[nukeviet4: | ||
===== Lưu ý khi đặt tên vị trí mới của hook: ===== | ===== Lưu ý khi đặt tên vị trí mới của hook: ===== |
programming4/hook.txt · Sửa đổi lần cuối: 2023/04/13 08:21 bởi hoaquynhtim99