Tuzoro
New Member
Đầu tiên xin giới thiệu với các bạn 1 Tut Video - V[/COLOR]ideo này sẽ hướng dẫn các bạn cách thức code 1 MOD khá đơn giản cho vbb,từ đó các bạn biết được cách code MOD cơ bản,sẽ có khả năng làm nhiều MOD khác
[/LEFT]
Video hướng dẫn code 1 MOD My News,(MOD add thông báo).
Video rất rõ nét
Nếu ko thấy được video bạn hãy download K-Lite Media Codec về máy và cài đặt
Download: http://www.mediafire.com/?nvxjmin4emm
Download: http://www.mediafire.com/?nvxjmin4emm
Xem qua cái Video thấy khá là chi tiết và cụ thể, đảm bảo newbie xem xong cũng có thể tự viết đc 1 mod đơn giản (mặc dù bằng tiếng anh nhưng ai ko rành tiếng anh cũng đừng lo, vì xem hình ko thôi cũng dư sức hiểu để làm rồi. Chỉ cần biết chút ít PHP để code là oke)
Lúc trước ko biết, nên khi mới vọc code mod cho vbb, mình toàn lấy 1 số mod đơn giản của các coder khác ra để xem cấu trúc XML + cách viết rồi bắt đầu viết. Các bước tạo sườn cơ bản (option, title, version .v.vv.) toàn thực hiện trực tiếp trên file XML rồi mới import vào database, sau đó mới viết code cho các hook
Sau 1 thời gian nghịch VBB (vài tháng), nắm đc cũng kha khá về code của VBB, thấy nhiều bạn cũng đang muốn tìm tòi + học cách viết Mod nên mình viết cái tút này để ai thích tìm hiểu về vbb thì có thể xem và tham khảo.
Lúc trước ko biết, nên khi mới vọc code mod cho vbb, mình toàn lấy 1 số mod đơn giản của các coder khác ra để xem cấu trúc XML + cách viết rồi bắt đầu viết. Các bước tạo sườn cơ bản (option, title, version .v.vv.) toàn thực hiện trực tiếp trên file XML rồi mới import vào database, sau đó mới viết code cho các hook
Sau 1 thời gian nghịch VBB (vài tháng), nắm đc cũng kha khá về code của VBB, thấy nhiều bạn cũng đang muốn tìm tòi + học cách viết Mod nên mình viết cái tút này để ai thích tìm hiểu về vbb thì có thể xem và tham khảo.
Nếu kinh nghiệm code PHP của bạn kha khá + chăm nghịch vbb vài tháng là có thể nắm vững các thứ về VBB, các ý tưởng hay thích gì là có thể làm cái đó trên VBB ngay đc mà ko cần phải thuê mưọn ai cả
( tiết kiệm tiền
!)
Trước khi đọc tiếp phần này thì các bạn nên down cái video ở trên về xem qua 1 lượt đi đã, vì đoạn dưới này mình viết để bổ sung cho video trên và để chia sẻ 1 số mẹo khi viết mod
Mẹo chọn Hook và test code khi viết plugin:
- Trong vbb có rất nhiều hook, mỗi hook đc đặt ở 1 vị trí làm việc khác nhau và cho phép coder có thể thêm các đoạn code xử lý của mình chen vào đó. VD để nick của thành viên có màu mè, icon thì vbb xài qua hàm fetch_musername. Trong hàm này có hook vBulletinHook::fetch_hook('fetch_musername'); Nếu mình ko thích cho 1 nick nào đó có màu mè thì có thể xử lý tại hook này
(Hình minh họa khi chọn hook trong Plugins & Products -> Add New Plugin)
- Đối với mỗi script (index.php, forumdisplay.php, showthread.php .v.v) lại có các hook khác nhau, làm những công việc khác nhau. Để thay đổi nội dung hiển thị của trang nào thì các bạn cần tìm các hook đc sử dụng khi script đó chạy và test thử tại đó.
- Cách chọn hook liên quan cũng ko khó, các hook đc chạy tại trang nào thì thường đc bắt đầu bằng tên của file đó.
- VD: các hook đc bắt đầu bằng từ member_ thì sẽ được gọi khi các bạn xem tại trang member.php hay các hook bắt đầu bằng từ newthread_ sẽ đc gọi khi các bạn đang ở trang gửi bài mới (newthread.php)
- Để test các hook cần sử dụng thì các bạn có thể vào Add New Plugin, thêm 1 plugin tại hook đó và có thể echo hay print_r cái gì đó đang muốn xử lý ra. Nếu echo nó ra thì hook đó có thể xử lý đc cái mà mình cần.
- VD: tại trang forumdisplay.php, bạn muốn thêm chữ abcccccccc vào đằng trước tất cả các tiêu đề thì bạn có thể test thử tại hook threadbit_display, nội dung code thì có thể print_r($thread); để test thử
Nếu khi chạy thử trang nó có hiển thị ra cái gì đó khác bình thường (cái mà muốn hiển thị) như bên dưới thì tức là hook đó có thể xử lý đc cái mình cần xử lý
Dưới này là forumdisplay hiển thị như bình thường
Bây giờ thử edit cái tiêu đề như ở trên nói, là thêm 1 đoạn abccccccc vào trước tiêu đề xem
khi chạy lại nó có thay đổi thía tức là Okie
!
Để biết tại sao tôi lại print_r ra cái $thread thì các bạn có thể mở code của vbb lên (file forumdisplay.php, rồi lần mò dần theo cái nó xử lý, xem cái title đó nó xử lý ở đâu thì vào đó. Khi thấy cái chỗ xử lý rồi thì tìm cái hook ở bên trên nó và "hành động" ở cái hook đấy (gợi ý VD ở trên màn hình - view-source cần xử lý đoạn nào, thì tìm cái chỗ HTML gần đấy rồi tìm xem nó ở trong template nào. Xong dùng DW để tìm xem file php nào nó fetch_template đó ở trong code php là nhanh nhất)
Cách làm việc với template:
- Sau khi đã xong phần chọn hook + test code, 1 số mod đơn giản, chỉ cần edit, sửa xóa nội dung có sẵn của VBB thì ko sao, nhưng nhiều mod cần làm 1 trang hiển thị riêng hay thêm html nhiều thì ko thể cứ viết html vào plugin đc. Cái này gây bất tiện cho người sử dụng khi muốn thêm sửa xóa giao diện
- Để tìm hiểu cái này, các bạn có thể dow tạm cái Mod View more thread same category của mình để coi, vì mod này là mod đầu tiên khi mình code mod cho vbb ( bản 1.0 hoặc 1.0.2 ý nhé, vì bản mới đầu code kiểu newbie nên xem dễ hiểu hơn) Link download tại đây. Sau khi download về, các bạn có thể xem trực tiếp trên file XML hoặc import product vào để xem (nên xem trên xml thì dễ hơn)
- Ai thích tìm hiểu template engine của vbb thì có thể xem qua hàm eval tại PHP: eval - Manual
Trước khi đọc tiếp phần này thì các bạn nên down cái video ở trên về xem qua 1 lượt đi đã, vì đoạn dưới này mình viết để bổ sung cho video trên và để chia sẻ 1 số mẹo khi viết mod
Mẹo chọn Hook và test code khi viết plugin:
- Trong vbb có rất nhiều hook, mỗi hook đc đặt ở 1 vị trí làm việc khác nhau và cho phép coder có thể thêm các đoạn code xử lý của mình chen vào đó. VD để nick của thành viên có màu mè, icon thì vbb xài qua hàm fetch_musername. Trong hàm này có hook vBulletinHook::fetch_hook('fetch_musername'); Nếu mình ko thích cho 1 nick nào đó có màu mè thì có thể xử lý tại hook này
(Hình minh họa khi chọn hook trong Plugins & Products -> Add New Plugin)
- Đối với mỗi script (index.php, forumdisplay.php, showthread.php .v.v) lại có các hook khác nhau, làm những công việc khác nhau. Để thay đổi nội dung hiển thị của trang nào thì các bạn cần tìm các hook đc sử dụng khi script đó chạy và test thử tại đó.
- Cách chọn hook liên quan cũng ko khó, các hook đc chạy tại trang nào thì thường đc bắt đầu bằng tên của file đó.
- VD: các hook đc bắt đầu bằng từ member_ thì sẽ được gọi khi các bạn xem tại trang member.php hay các hook bắt đầu bằng từ newthread_ sẽ đc gọi khi các bạn đang ở trang gửi bài mới (newthread.php)
- Để test các hook cần sử dụng thì các bạn có thể vào Add New Plugin, thêm 1 plugin tại hook đó và có thể echo hay print_r cái gì đó đang muốn xử lý ra. Nếu echo nó ra thì hook đó có thể xử lý đc cái mà mình cần.
- VD: tại trang forumdisplay.php, bạn muốn thêm chữ abcccccccc vào đằng trước tất cả các tiêu đề thì bạn có thể test thử tại hook threadbit_display, nội dung code thì có thể print_r($thread); để test thử
Nếu khi chạy thử trang nó có hiển thị ra cái gì đó khác bình thường (cái mà muốn hiển thị) như bên dưới thì tức là hook đó có thể xử lý đc cái mình cần xử lý
Dưới này là forumdisplay hiển thị như bình thường
Bây giờ thử edit cái tiêu đề như ở trên nói, là thêm 1 đoạn abccccccc vào trước tiêu đề xem
khi chạy lại nó có thay đổi thía tức là Okie
Để biết tại sao tôi lại print_r ra cái $thread thì các bạn có thể mở code của vbb lên (file forumdisplay.php, rồi lần mò dần theo cái nó xử lý, xem cái title đó nó xử lý ở đâu thì vào đó. Khi thấy cái chỗ xử lý rồi thì tìm cái hook ở bên trên nó và "hành động" ở cái hook đấy (gợi ý VD ở trên màn hình - view-source cần xử lý đoạn nào, thì tìm cái chỗ HTML gần đấy rồi tìm xem nó ở trong template nào. Xong dùng DW để tìm xem file php nào nó fetch_template đó ở trong code php là nhanh nhất)
Cách làm việc với template:
- Sau khi đã xong phần chọn hook + test code, 1 số mod đơn giản, chỉ cần edit, sửa xóa nội dung có sẵn của VBB thì ko sao, nhưng nhiều mod cần làm 1 trang hiển thị riêng hay thêm html nhiều thì ko thể cứ viết html vào plugin đc. Cái này gây bất tiện cho người sử dụng khi muốn thêm sửa xóa giao diện
- Để tìm hiểu cái này, các bạn có thể dow tạm cái Mod View more thread same category của mình để coi, vì mod này là mod đầu tiên khi mình code mod cho vbb ( bản 1.0 hoặc 1.0.2 ý nhé, vì bản mới đầu code kiểu newbie nên xem dễ hiểu hơn) Link download tại đây. Sau khi download về, các bạn có thể xem trực tiếp trên file XML hoặc import product vào để xem (nên xem trên xml thì dễ hơn)
- Ai thích tìm hiểu template engine của vbb thì có thể xem qua hàm eval tại PHP: eval - Manual
Trên đây là các bước cơ bản để bắt đầu viết mod cho vbb, dần dần, sau này nếu viết mod cho 1 diễn đàn lớn, database nặng thì còn phải chú trọng tới việc tối ưu nữa, chứ nhiều mod do các coder code ko tối ưu, mà khi cài vào diễn đàn chạy rất ì ạch cho cái mod chạy database nhiều quá...