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ướcPhiên bản cuốiPhiên bản sau của cả hai bên | ||
programming4:hook [2021/12/03 15:18] – [Cách chuyển từ plugin sang hook] nguyenchiton | programming4:hook [2023/04/12 17:26] – [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 | ||
- | ===== Về việc đặt tên vị trí của hook: ===== | + | ===== Mô tả về hook ===== |
- | Mặc định | + | |
- | * sector1: | + | {{ : |
- | * sector2: | + | |
- | * sector3: là nơi đặt các hook được thực thi sau khi đã định | + | Ả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) |
- | * sector4: là nơi đặt các hook được | + | |
- | * sector5: là nơi đặt các hook được thực thi sau khi xác đị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 '' |
- | * modify_global_config: | + | |
- | * change_site_buffer: | + | |
- | * check_server: | + | Chi tiết một hook sẽ như sau |
- | * get_qr_code: | + | |
- | * db_slave_connect: là nơi đặt hook mysql_master_slave.php (trong includes/mainfile.php) | + | {{ :programming4: |
- | * get_rewrite_domain: | + | |
- | * zalo_webhook: | + | 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 |
+ | |||
+ | * 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 | ||
+ | * Dữ liệu đầu vào: Đây là dữ liệu | ||
+ | * Nguồn đầu ra: Đây là thông tin của module cần được | ||
+ | |||
+ | Hàm xử lý sẽ sử dụng các tài nguyên hệ thống và các nguồn | ||
+ | |||
+ | ===== 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 '' | ||
+ | |||
+ | < | ||
+ | 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 | ||
+ | |||
+ | |||
+ | < | ||
+ | <?php | ||
+ | |||
+ | /** | ||
+ | * NukeViet Content Management System | ||
+ | * @version 4.x | ||
+ | * @author VINADES.,JSC < | ||
+ | * @copyright (C) 2009-2021 VINADES., | ||
+ | | ||
+ | * @see https://github.com/ | ||
+ | */ | ||
+ | |||
+ | $nv_hook_module = ' | ||
+ | $nv_receive_module = ' | ||
+ | |||
+ | $callback = function($vars, $from_data, $receive_data) { | ||
+ | $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 | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | **'' | ||
+ | |||
+ | Updating | ||
+ | |||
+ | |||
+ | **'' | ||
+ | |||
+ | Updating | ||
+ | |||
+ | |||
+ | **'' | ||
+ | |||
+ | Updating | ||
+ | ===== 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: ===== | ||
Dòng 38: | Dòng 132: | ||
* Còn các code dạng functions thì giữ nguyên, không cho vào nv_add_hook. | * Còn các code dạng functions thì giữ nguyên, không cho vào nv_add_hook. | ||
* Xoá các file .ini của plugins | * Xoá các file .ini của plugins | ||
- | * Vào các chỗ cần gọi hook và gọi <code php> | + | * Vào các chỗ cần gọi hook và gọi <code php> |
* Thêm CSDL theo mẫu, với các dữ liệu insert vào tương ứng các plugins đã chuyển đổi | * Thêm CSDL theo mẫu, với các dữ liệu insert vào tương ứng các plugins đã chuyển đổi | ||
programming4/hook.txt · Sửa đổi lần cuối: 2023/04/13 08:21 bởi hoaquynhtim99