Nov
18
[Tutorials] Hướng dẫn viết 1 file XML hackmod cho VBB PC Tutorials
Hướng dẫn làm 1 mod cho VBB (Product XML)
Chào các bạn, hôm nay Zinji sẽ hướng dẫn các bạn làm 1 modification cho VBB 3.x. Vì bạn ZhangLiang của mình yêu cầu mình hướng dẫn, trong bài viết này sẽ nói đến những khái niệm cơ bản nhất của 1 modification, các bạn không cần có kiến thức quá sâu về PHP, XML cũng có thể hoàn thiện được 1 mod đơn giản để giảm bớt việc fải edit trong template.
Đầu tiên chúng ta phải nói sơ sơ qua về XML, đây là 1 ngôn ngữ đc VBB cho phép biên dịch để chạy (XML cho Language, XML cho Style, XML cho modification….). Bạn có thể tìm được rất nhiều khái niệm chi tiết, cụ thể trên google, còn ở đây chúng ta chỉ để ý rằng XML có những tag gọi là custorm tag. Đây là những tag do người dung tự đặt ra, và với VBB nó có những custorm tag như vậy do công ty phát triển nó đặt ra, mình là người coder thì phải tuân thủ theo những chuẩn do VBB quy định.
Bây giờ chúng ta hãy cùng xem qua cấu trúc chuẩn của 1 file XML dành cho VBB 3.x (VBB 4.x cũng tuân theo chuẩn này)
PHP Code:
Đây là 1 chuẩn nhất của 1 product. Trên đây mới chỉ bao gồm các tag mở/đóng cho 1 mục nào đó (XML của product gồm : code install, uninstall; template ; plugin ; phrase; option). Chúng ta sẽ đi sâu vào từng tag 1.
Đầu tiên là thẻCode install và uninstall
Cú pháp hoàn chỉnh của thẻ gồm
PHP Code:
Tức là khi 1 số mod cao cấp, cần đụng chạm, sửa chửa trong database thì dùng hàm này, còn không thì ko nên đụng đến.
Tiếp theo là thẻcác template product cần
PHP Code:
Đây là 1 dạng phổ biến, nó đc dùng cho cả dạng XML style. Cứ lần lượt làm vậy nếu bạn muốn thêm nhiều temp. Lưu ý, tất cả temp thêm đc phải nằm trong 1 cặp dấu duy nhất là .
Tiếp theo là tag . Đây là tag quan trọng, và khó “gặm” nhất của cái XML này. Dù bạn làm 1 mod đơn giản cỡ nào cũng phải dính tới cái này 1 tí.
PHP Code:
Đây là cơ bản 1 đoạn plugin, còn có 1 đoạn plugin khá đặc biệt, nó sẽ giúp bạn “auto parse template” (tự động chèn temp vào vị trí muốn chèn)
PHP Code:
Giải thích đoạn
PHP Code:
Đoạn ở trên là chèn Template tự động khi viết product. Ở ví dụ trên là khi mình đã viết 1 Template là "Tên_temp" ở phần Template, thì ở đây cái code này sẽ tự động chèn cái Temp đó vào trong Template headinclude và ở bên dưới phần . Nó sẽ tự động tìm và tự động chèn, người cài mod ko cần Edit Temp thủ công. (đoạn code trên có thể tùy biến, phần tùy biến mình sẽ phân tích cụ thể ở part 2 – nếu có).
Phần
PHP Code:
Các bạn hãy chú ý đoạn. Điều này có nghĩa là đoạn phrase trên chỉ có tác dụng trong Admincp Option, bạn chỉ có thể thấy nó trong admincp. Và hãy chú ý name="setting_tên_phrase_desc" çĐây là quy chuẩn cụ thể. Nghĩa là bạn có thể gõ bất kỳ tên gì ở phần tên_phrase, nhưng để vbb hiểu nó, bạn phải có chữ setting ở đầu tên biến và phần desc (nếu là chú giải).
PHP Code:
Trong bất kỳ VBB Option nào cũng có tên hiển thị ở Option, đây chính là đoạn show nó ra bên ngoài.
Còn đoạn phrase show ra ngoài forum nữa, nó dùng cho các bản Language
PHP Code:
Đây là đoạn sẽ hiển thị ra ngoài (template) khi bạn gọi thông qua biến $vbphrase[tên_biến_1]. Như vậy bạn sẽ không phải sửa trong temp 1 cách thủ công mà có thể Search Phrase để tìm sửa đơn giản.
Tiếp theo đến phần cuối cùng
PHP Code:
Nên nhớ kỹ cái Tên_group và Tên_phrase phải tương ứng với phần trên Phrase.
Giải thích cụ thể 1 vài tham số
1. displayorder="65535" çbạn chỉ cần nhớ rằng số càng lớn thì vị trí nó sẽ nằm chót cùng trong vbboption.
2. displayorder="10" çđây là thứ tự sắp xếp phần hiển thị trong tùy chỉnh, bạn sẽ thấy nó hơi thừa thãi với những mod nhỏ, nhưng bạn sẽ phải lưu ý sắp xếp số thứ tự đúng với những mod nhiều option và tách ra thành từng cụm.
3.free çkiểu dữ liệu free là 1 ô textbox, bạn có thể chọn các kiểu data có trong XML (number, Boolean, logic….)
4.yesno çđây là tham số mà option sẽ nhận. (ví dụ yesno sẽ nhận 1 hoặc 0, nếu để kiểu textarea thì sẽ là 1 ô textbox to tướng cho bạn nhập, tất nhiên là hỗ trợ HTML).
Các tùy chọn này sẽ được hiển thị ra template thông qua cách gọi $vboptions[tên_phrase]
Lưu ý :
· Tất cả các tên nằm trong cặp name=”tên” hoặc varname=”tên” sẽ có giá trị tương đương 1 biến. Đối với kiểu temp bạn có thể gọi là $tên_temp, với phrase gọi là $vbphrase[tên_phrase] với option gọi là $vboption[tên_phrase].
Tổng kết phần mở đầu : Hiểu được 1 cấu trúc product. Làm quen các đoạn quan trọng. Trong đó phần Plugins là phần quan trọng nhất, khó nhất, chứa nhiều tham số khó hiểu. sẽ giải thích trong 1 phần riêng biệt, để các bạn không bị lẫn. Tuy khó khăn, nhưng khi tổng kết plugins cơ bản xong, mình tin tưởng rằng bạn ZhangLiang sẽ làm được những mod nhỏ nhỏ cái đã, sau đó có thể phát triển dần lên các mod to to, chứa nhiều câu lệnh lằng nhằng như SQL query, php code. Rồi từ từ sẽ làm quen với các khái niệm về fetch biến từ trong vbb ra 1 file php riêng (tất nhiên vẫn chỉ là add-ons cho vbb mà thôi, vì vbb không có cách nào tách riêng nó ra cả).
Phù phù ! viết tut dài quá, đói bụng mà phải đi rửa chén với nấu cơm cái đã.
Note : Tut này được viết bởi Zinji @ ZTeam. Và được post duy nhất tại Vietmf.com , bạn nào leech đi đâu xin để dòng này bên dưới tut
 
Đánh giá bài viết
Chào các bạn, hôm nay Zinji sẽ hướng dẫn các bạn làm 1 modification cho VBB 3.x. Vì bạn ZhangLiang của mình yêu cầu mình hướng dẫn, trong bài viết này sẽ nói đến những khái niệm cơ bản nhất của 1 modification, các bạn không cần có kiến thức quá sâu về PHP, XML cũng có thể hoàn thiện được 1 mod đơn giản để giảm bớt việc fải edit trong template.
Đầu tiên chúng ta phải nói sơ sơ qua về XML, đây là 1 ngôn ngữ đc VBB cho phép biên dịch để chạy (XML cho Language, XML cho Style, XML cho modification….). Bạn có thể tìm được rất nhiều khái niệm chi tiết, cụ thể trên google, còn ở đây chúng ta chỉ để ý rằng XML có những tag gọi là custorm tag. Đây là những tag do người dung tự đặt ra, và với VBB nó có những custorm tag như vậy do công ty phát triển nó đặt ra, mình là người coder thì phải tuân thủ theo những chuẩn do VBB quy định.
Bây giờ chúng ta hãy cùng xem qua cấu trúc chuẩn của 1 file XML dành cho VBB 3.x (VBB 4.x cũng tuân theo chuẩn này)
PHP Code:
="1.0" encoding="ISO-8859-1"?>
Tên Product
Giới thiêu
Phiên bản
Địa chỉ Product
Địa chỉ cập nhật Product
Code install và uninstall
các template product cần
các plugin của product
các từ/cụm từ đc s/d trong product
Các tùy chọn (chỉnh trong ACP)
Đây là 1 chuẩn nhất của 1 product. Trên đây mới chỉ bao gồm các tag mở/đóng cho 1 mục nào đó (XML của product gồm : code install, uninstall; template ; plugin ; phrase; option). Chúng ta sẽ đi sâu vào từng tag 1.
Đầu tiên là thẻ
Cú pháp hoàn chỉnh của thẻ gồm
PHP Code:
<codes>
<installcode>CDATA[
câu lệnh query, thêm table, chỉnh sửa các table trong data
]]installcode>
<uninstallcode>CDATA[
nếu gỡ bỏ mod sẽ xóa các table đã tạo, đưa các chỉnh sửa về ban đầu]]uninstallcode>
codes>
<installcode>CDATA[
câu lệnh query, thêm table, chỉnh sửa các table trong data
]]installcode>
<uninstallcode>CDATA[
nếu gỡ bỏ mod sẽ xóa các table đã tạo, đưa các chỉnh sửa về ban đầu]]uninstallcode>
codes>
Tức là khi 1 số mod cao cấp, cần đụng chạm, sửa chửa trong database thì dùng hàm này, còn không thì ko nên đụng đến.
Tiếp theo là thẻ
PHP Code:
<templates>
<template name="tên_Temp" templatetype="template" date="" username="Tên_tác_giả" version="">CDATA[
nội dung chính của Temp.
]]>template>
templates>
<template name="tên_Temp" templatetype="template" date="" username="Tên_tác_giả" version="">CDATA[
nội dung chính của Temp.
]]>template>
templates>
Đây là 1 dạng phổ biến, nó đc dùng cho cả dạng XML style. Cứ lần lượt làm vậy nếu bạn muốn thêm nhiều temp. Lưu ý, tất cả temp thêm đc phải nằm trong 1 cặp dấu duy nhất là .
Tiếp theo là tag
PHP Code:
<plugins>
<plugin active="1" executionorder="5">
<title>Tên của Plugin này.title>
<hookname>lấy_hook_chổ_muốn_showhookname>
<phpcode>CDATA[ // Tac_gia @
Phần này để chứa code
]]>phpcode>
plugin>
plugins>
<plugin active="1" executionorder="5">
<title>Tên của Plugin này.title>
<hookname>lấy_hook_chổ_muốn_showhookname>
<phpcode>CDATA[ // Tac_gia @
Phần này để chứa code
]]>phpcode>
plugin>
plugins>
Đây là cơ bản 1 đoạn plugin, còn có 1 đoạn plugin khá đặc biệt, nó sẽ giúp bạn “auto parse template” (tự động chèn temp vào vị trí muốn chèn)
PHP Code:
<plugins>
<plugin active="1" executionorder="5">
<title>Tên của Plugin này.title>
<hookname>lấy_hook_chổ_muốn_showhookname>
<phpcode>CDATA[ // Tac_gia @
$Tên_Temp = '';
$vbulletin->templatecache['headinclude'] = str_replace($Tên_Temp,$hs_show.fetch_template(Tên_Temp'),$vbulletin->templatecache['headinclude]);
]]>phpcode>
plugin>
plugins>
<plugin active="1" executionorder="5">
<title>Tên của Plugin này.title>
<hookname>lấy_hook_chổ_muốn_showhookname>
<phpcode>CDATA[ // Tac_gia @
$Tên_Temp = '';
$vbulletin->templatecache['headinclude'] = str_replace($Tên_Temp,$hs_show.fetch_template(Tên_Temp'),$vbulletin->templatecache['headinclude]);
]]>phpcode>
plugin>
plugins>
Giải thích đoạn
PHP Code:
$Tên_Temp = '';
$vbulletin->templatecache['headinclude'] = str_replace($Tên_Temp,$hs_show.fetch_template(Tên_Temp'),$vbulletin->templatecache['headinclude]);
$vbulletin->templatecache['headinclude'] = str_replace($Tên_Temp,$hs_show.fetch_template(Tên_Temp'),$vbulletin->templatecache['headinclude]);
Đoạn ở trên là chèn Template tự động khi viết product. Ở ví dụ trên là khi mình đã viết 1 Template là "Tên_temp" ở phần Template, thì ở đây cái code này sẽ tự động chèn cái Temp đó vào trong Template headinclude và ở bên dưới phần . Nó sẽ tự động tìm và tự động chèn, người cài mod ko cần Edit Temp thủ công. (đoạn code trên có thể tùy biến, phần tùy biến mình sẽ phân tích cụ thể ở part 2 – nếu có).
Phần
PHP Code:
<phrases>
<phrasetype name="vBulletin Settings" fieldname="vbsettings">
<phrase name="setting_tên_phrase_desc" date="" username="Tác_giả" version="">CDATA[Phần mô tả cho tên phrase]]>phrase>
<phrase name="setting_tên_phrase_title" date="" username="Tác_giả" version="">CDATA[Phần tên phrase]]>phrase>
<phrase name="settinggroup_Tên_group" date="" username="Tác_giả" version="">CDATA[Tên hiện ở VB Options]]>phrase>
phrasetype>
phrases>
<phrasetype name="vBulletin Settings" fieldname="vbsettings">
<phrase name="setting_tên_phrase_desc" date="" username="Tác_giả" version="">CDATA[Phần mô tả cho tên phrase]]>phrase>
<phrase name="setting_tên_phrase_title" date="" username="Tác_giả" version="">CDATA[Phần tên phrase]]>phrase>
<phrase name="settinggroup_Tên_group" date="" username="Tác_giả" version="">CDATA[Tên hiện ở VB Options]]>phrase>
phrasetype>
phrases>
Các bạn hãy chú ý đoạn
PHP Code:
<phrase name="settinggroup_Tên_group" date="" username="Tác_giả" version="">CDATA[Tên hiện ở VB Options]]>phrase>
Trong bất kỳ VBB Option nào cũng có tên hiển thị ở Option, đây chính là đoạn show nó ra bên ngoài.
Còn đoạn phrase show ra ngoài forum nữa, nó dùng cho các bản Language
PHP Code:
<phrasetype name="GLOBAL" fieldname="global">
<phrase name="ten_biến_1" date="0" username="Zinji" version="">CDATA[Đoạn language 1]]>phrase>
<phrase name="tên_biến_2" date="0" username="Zinji" version="">CDATA[Đoạn language 2]]>phrase>
<phrase name="tên_biên_3" date="0" username="Zinji" version="">CDATA[Đoạn language 3]]>phrase>
phrasetype>
<phrase name="ten_biến_1" date="0" username="Zinji" version="">CDATA[Đoạn language 1]]>phrase>
<phrase name="tên_biến_2" date="0" username="Zinji" version="">CDATA[Đoạn language 2]]>phrase>
<phrase name="tên_biên_3" date="0" username="Zinji" version="">CDATA[Đoạn language 3]]>phrase>
phrasetype>
Đây là đoạn sẽ hiển thị ra ngoài (template) khi bạn gọi thông qua biến $vbphrase[tên_biến_1]. Như vậy bạn sẽ không phải sửa trong temp 1 cách thủ công mà có thể Search Phrase để tìm sửa đơn giản.
Tiếp theo đến phần cuối cùng
PHP Code:
<options>
<settinggroup name="Tên_group" displayorder="65535">
<setting varname="tên_phrase" displayorder="10">
<datatype>freedatatype>
<optioncode>yesnooptioncode>
<defaultvalue>1defaultvalue>
setting>
settinggroup>
options>
<settinggroup name="Tên_group" displayorder="65535">
<setting varname="tên_phrase" displayorder="10">
<datatype>freedatatype>
<optioncode>yesnooptioncode>
<defaultvalue>1defaultvalue>
setting>
settinggroup>
options>
Nên nhớ kỹ cái Tên_group và Tên_phrase phải tương ứng với phần trên Phrase.
Giải thích cụ thể 1 vài tham số
1. displayorder="65535" çbạn chỉ cần nhớ rằng số càng lớn thì vị trí nó sẽ nằm chót cùng trong vbboption.
2. displayorder="10" çđây là thứ tự sắp xếp phần hiển thị trong tùy chỉnh, bạn sẽ thấy nó hơi thừa thãi với những mod nhỏ, nhưng bạn sẽ phải lưu ý sắp xếp số thứ tự đúng với những mod nhiều option và tách ra thành từng cụm.
3.
4.
Các tùy chọn này sẽ được hiển thị ra template thông qua cách gọi $vboptions[tên_phrase]
Lưu ý :
· Tất cả các tên nằm trong cặp name=”tên” hoặc varname=”tên” sẽ có giá trị tương đương 1 biến. Đối với kiểu temp bạn có thể gọi là $tên_temp, với phrase gọi là $vbphrase[tên_phrase] với option gọi là $vboption[tên_phrase].
Tổng kết phần mở đầu : Hiểu được 1 cấu trúc product. Làm quen các đoạn quan trọng. Trong đó phần Plugins là phần quan trọng nhất, khó nhất, chứa nhiều tham số khó hiểu. sẽ giải thích trong 1 phần riêng biệt, để các bạn không bị lẫn. Tuy khó khăn, nhưng khi tổng kết plugins cơ bản xong, mình tin tưởng rằng bạn ZhangLiang sẽ làm được những mod nhỏ nhỏ cái đã, sau đó có thể phát triển dần lên các mod to to, chứa nhiều câu lệnh lằng nhằng như SQL query, php code. Rồi từ từ sẽ làm quen với các khái niệm về fetch biến từ trong vbb ra 1 file php riêng (tất nhiên vẫn chỉ là add-ons cho vbb mà thôi, vì vbb không có cách nào tách riêng nó ra cả).
Phù phù ! viết tut dài quá, đói bụng mà phải đi rửa chén với nấu cơm cái đã.
Note : Tut này được viết bởi Zinji @ ZTeam. Và được post duy nhất tại Vietmf.com , bạn nào leech đi đâu xin để dòng này bên dưới tut

 
Đánh giá bài viết

Download từ mediafire.com 1 cách dễ dàng.... PC T
[Tutorials] Đánh Boom không cần nick bost! PC Tuto
17:23



RSS 
