1 Giới thiệu
Invision Power Board (IPB) là một giải pháp dùng để xây dựng cộng đồng trên internet
(forum). IPB được viết bằng PHP và sử dụng cơ sở dữ liệu chủ yếu là MySQL.
Thông tin về IPB
Hãng phát triển: Invision Power Services
Website: />
Cộng đồng dùng IPB:
Lưu ý: IPB là một sản phẩm thương mại, nếu bạn cần tìm một sản phẩm miễn phí, chúng
tôi khuyên bạn nên dùng phpBB.
2 Các yêu cầu trước khi cài đặt
2.1 Yêu cầu server
Bạn phải có một webserver đã cài sẵn PHP 4.3.0 (hoặc cao hơn) và MySQL 3.23 (hoặc
cao hơn).
IPB hoạt động tốt nhất với Apache server. Tuy nhiên bạn có thể chạy trên IIS.
Thông tin về cài đặt webserver xin tham khảo tại:
/>
2.2 Các yêu cầu khác
Bạn phải có một tài khỏan trong MySQl với các quyền CREATE, DROP và ALTER.
Ít nhất 5MB cho lưu trữ file và 5MB cho cơ sở dữ liệu
3 Cài đặt
3.1 Bước 1: Tải file lên server
Tạo một thư mục trên server của bạn dùng để chứ file chương trình. Vd, nếu bạn muốn
truy cập vào forum thông qua địa chỉ ‘ hãy tạo một thư
mục con tên là ‘forum’ trong thư mục ‘public_html’ hoặc ‘www’ của webserver.
Giải nén file chương trình.
Sử dụ
ng một trình FTP client để chép toàn bộ file có trong thư mục ‘upload’ của gói file
vừa giải nén nên thư mục forum của server mà bạn vừa tạo ở trên.
Chuyển quyền ‘write’ cho các thư mục ‘skin_cache’, ‘uploads’ và file
‘config_global.php’ (0775 hoặc 0777 nếu server của bạn dùng hệ điều hành Linux;
Writeable cho IIS_User nếu là Windows).
Những công việc vất vả đã qua, bây giờ chúng ta chuyển sang bước tiếp theo.
3.2 Bước 2: Sử dụng trình cài đặt
Bật trình duyệt và chạy trình cài đặt bằng cách gõ URL vào thanh địa chỉ của trình duyệt.
Vd, nếu bạn tạo thư mục có cấu trúc như bước 1, hãy gõ vào
thay ‘domain.com’ bằng địa chỉa
website của bạn.
Màn hình đầu tiên: Một giới thiệu ngắn và IPB và kết quả kiểm tra quyền ở một số file,
thư mục.
Nếu quá trình kiểm tra thành công, nhấn vào nút ‘Proceed’ để tiế
p tục.
Màn hình thứ 2: Yêu cầu bạn khai báo các thông số kết nối cơ sở dữ liệu và thông tin tài
khỏan đăng nhập dành cho người quản trị (Admin)
Nhập các thông số cần thiết rồi tiếp tục nhấn nút ‘Proceed’.
Ở các màn hình tiếp theo, bạn hãy cứ ngồi chờ cho chương trình tự làm.
Quá trình cài đặt sẽ tự hoàn tất sau vài bước nữa. Nhấn vào dòng link ở màn cuối cùng
của trình cài đặt để vào forum. Khi trang forum hiện ra, hãy nhập vào thông tin mà bạn
đã chọn làm tài khỏan Admin để vào forum. Tại đây, bạn có thể nhấn vào link ‘Admin
CP’ để chuyển đến trang dành cho nhà quản trị.
3.3 Bước 3: Sau khi cài đặ
t
Để bảo đảm an toàn, hãy xóa file ‘install/index.php’ để không ai có thể cài lại forum
được nữa.
Trình quản trị được thiết kế rất thân thiện, tại đây bạn có tòan quyền để thiết lập cấu hình
cho forum của mình như tạo room mới, quản lý tài khỏan, giao diện…
Làm 1 4rum IBF-too easy
Nói trước là cái này dành cho người ko bít gì về làm 4rum hít,các bác nào tài giỏi đừng
vào nói này nói nọ
+Bước 1: register 1 4rum
Bạn có thể lên cái host free register 1 4rum IBF
http:///www.invisionfree.com
www.forumhoster.com
+Bước 2:chọn skin
Bạn vào đây chọn skin cho 4rum của mình />
Đăng nhập= nick: TNam ,pass: ttmh (trong đây cũng có rất nhìu avatar,icon,pip ect )
chọn skin và download về máy mình
Vào Acp( Admin control panel) upload skin lên
Sau khi uploads lên forum của bạn sẽ tự động import nếu thành công nó sẽ báo là skin
was uploads complete nếu không thành công bạn cố gắng up lại
Tiếp theo vào import skin files
sau đó vào Skins & Templaties >Manage Skin set >Create New Skin Set
Chọn skin vừa import và nhấn Create New Skin
Vậy là xong
+Bước 3:Bỏ banner quảng cáo
- Vào ACP, Skins & Templates, Board Wrappers
- Chọn Tên Skin, Edit
- Trong phần content, thay
Trích dẫn:
<% BOARD HEADER %>
Thành
Trích dẫn:
<% MEMBER BAR %><br />
Tìm đoạn code sau
Trích dẫn:
<% COPYRIGHT %>
Thay đoạn code đó bằng code này
Trích dẫn:
<div style="visibility:hidden"><% COPYRIGHT %></div>
+Bước 4:chèn bộ gõ cho 4rum
Vào acp > skin & template > board wrapper > edit ( chọn cái skin mà bạn muốn edit
nếu bạn dùng nhiều skin) > thêm vào sau <head> và <title> d0oạn code sau
Trích dẫn:
<script src=' language='JavaScript'
type="text/javascript"></SCRIPT>
đoạn trong src là nguồn của bộ gõ,bạn có thay nó = các nguồn khác nếu có
+Bước 5:Việt hóa trang Index
Bạn có thể việt hóa từng phần = cách Languages/Manage Languages/English
(Default Language)=>edit
Bạn sẽ thấy dòng Please select a language file to edit==>Edit this language file
nó sẽ xuất hiện bảng sau Block Name/ Content ==>Việt hóa bên content
Còn đây là code Việt hóa toàn bộ trang Index
Vào : HTML template > manager HTML > Boad Index Section > Boad Index page top
Thay toàn bộ đoạn mã trong đó bằng đoạn mã dưới đây:
Trích dẫn:
<div id='userlinks'><div align='left' style='float:left;text-align:left;padding-bottom:4px'>
<b>Chào bạn trở lại , lần truy cập trướ
c của bạn là</b></div>
<div align='right'><! IBF.NEWSLINK >
</div></div><br />
<! IBF.QUICK_LOG_IN > </P>
Vào HTML template > manager HTML > Boad Index Section > Start Category Table
Thay toàn bộ bằng đoạn mã sau:
Trích dẫn:
<div class="tableborder">
<div class='maintitle' align='left'>· <a
href="{ibf.script_url}c={$Data['id']}">{$Data['name']}</a> ·</div>
<table width="100%" border="0" cellspacing="1" cellpadding="4">
<tr>
<th align="center" width="2%" class='titlemedium'><img
src="{ibf.vars.img_url}/spacer.gif" alt="" width="28" height="1" /></th>
<th align="left" width="59%" class='titlemedium'>Diễn đàn</th>
<th align="center" width="7%" class='titlemedium'>Chủ đề</th>
<th align="center" width="7%" class='titlemedium'>Trả lời</th>
<th align="left" width="25%" class='titlemedium'>Bài trả lời sau cùng</th>
</tr>
Vào : HTML template > manager HTML > Boad Index Section > + Board Index Forum
Row
Code:
Trích dẫn:
<tr>
<td class="row4" align="center">{$info['img_new_post']}</td>
<td class="row4" onfiltered="this.className='rowh'"
onfiltered="this.className='row4'"><b><a
href="{ibf.script_url}showforum={$info['id']}">{$info['name']}</a></b><br /><span
class='desc'>{$info['description']}</span></td>
<td class="row2" align="center">{$info['topics']}</td>
<td class="row2" align="center">{$info['posts']}</td>
<td class="row2" nowrap="nowrap">{$info['last_post']}<br /><font
color="228b22">Trong box</font>: {$info['last_unread']}{$info['last_topic']}<br
/><font color="228b22">Bài trả lời cuối</font>: {$info['last_poster']}</td>
+Bước 5:Thay logo cho 4rum
Vào
HTML Templates > Manager HTML > Global HTML elements > Board Header (logo,
links, etc) > Edit Single
Tìm đoạn mã sau :
Trích dẫn:
<a href='{ibf.script_url}' title='Board Home'><img src='{ibf.vars.img_url}/logo4.gif'
alt='Powered by Invision Power Board' border="0" /></a>
Thay bằng đoạn mã này :
Trích dẫn:
<a href='{ibf.script_url}' title='Board Home'><img src='địa chỉ hình bạn muốn đưa vào'
alt='Powered by Invision Power Board' border="0" /></a>
+Bước 6:Tạo 4rum và mod fast reply
Vào Acp/new catelory để tạo 1 box lớn
Acp/new 4rum để tạo 1 4rum con trong catelory
(lưu ý là trong acp ko type được tiếng việt,bạn có thể type ở 4rum rồi paste wa )
sau khi creat 1 forrum mới bạn vào lại Setting >Turn on the Quick Reply Box? >
chọn yes
forum mới nào cũng làm như vậy nhé
Sau đó vào Admin CP ->Skins & templates ->HTML Templates >manage >Topic
View Section ->edit signer >quick_reply_box_open
Thay toàn bộ bằng đoạn mã sau
Trích dẫn:
<script language="javascript1.2" type="text/javascript">
<!
var MessageMax = "{ibf.lang.the_max_length}";
var Override = "{ibf.lang.override}";
MessageMax = parseInt(MessageMax);
if ( MessageMax < 0 )
{
MessageMax = 0;
}
function emo_pop()
{
window.open('index.{ibf.vars.php_ext}?act=legends&CODE=emoticons&s={ibf.session_id}','Lege
n
0,resizable=yes,scrollbars=yes');
}
function bbc_pop()
{
window.open('index.{ibf.vars.php_ext}?act=legends&CODE=bbcode&s={ibf.session_id}','Legends'
0,resizable=yes,scrollbars=yes');
}
function CheckLength() {
MessageLength = document.REPLIER.Post.value.length;
message = "";
if (MessageMax > 0) {
message = "{ibf.lang.js_post}: {ibf.lang.js_max_length} " + MessageMax + " {ibf.lang.js_character
s
} else {
message = "";
}
alert(message + " {ibf.lang.js_used} " + MessageLength + " {ibf.lang.js_characters}.");
}
function ValidateForm(isMsg) {
MessageLength = document.REPLIER.Post.value.length;
errors = "";
if (isMsg == 1)
{
if (document.REPLIER.msg_title.value.length < 2)
{
errors = "{ibf.lang.msg_no_title}";
}
}
if (MessageLength < 2) {
errors = "{ibf.lang.js_no_message}";
}
if (MessageMax !=0) {
if (MessageLength > MessageMax) {
errors = "{ibf.lang.js_max_length} " + MessageMax + " {ibf.lang.js_characters}. {ibf.lang.js_curren
t
}
}
if (errors != "" && Override == "") {
alert(errors);
return false;
} else {
document.REPLIER.submit.disabled = true;
return true;
}
}
// IBC Code stuff
var text_enter_url = "{ibf.lang.jscode_text_enter_url}";
var text_enter_url_name = "{ibf.lang.jscode_text_enter_url_name}";
var text_enter_image = "{ibf.lang.jscode_text_enter_image}";
var text_enter_email = "{ibf.lang.jscode_text_enter_email}";
var text_enter_flash = "{ibf.lang.jscode_text_enter_flash}";
var text_code = "{ibf.lang.jscode_text_code}";
var text_quote = "{ibf.lang.jscode_text_quote}";
var error_no_url = "{ibf.lang.jscode_error_no_url}";
var error_no_title = "{ibf.lang.jscode_error_no_title}";
var error_no_email = "{ibf.lang.jscode_error_no_email}";
var error_no_width = "{ibf.lang.jscode_error_no_width}";
var error_no_height = "{ibf.lang.jscode_error_no_height}";
var prompt_start = "{ibf.lang.js_text_to_format}";
var help_bold = "{ibf.lang.hb_bold}";
var help_italic = "{ibf.lang.hb_italic}";
var help_under = "{ibf.lang.hb_under}";
var help_font = "{ibf.lang.hb_font}";
var help_size = "{ibf.lang.hb_size}";
var help_color = "{ibf.lang.hb_color}";
var help_close = "{ibf.lang.hb_close}";
var help_url = "{ibf.lang.hb_url}";
var help_img = "{ibf.lang.hb_img}";
var help_email = "{ibf.lang.hb_email}";
var help_quote = "{ibf.lang.hb_quote}";
var help_list = "{ibf.lang.hb_list}";
var help_code = "{ibf.lang.hb_code}";
var help_click_close = "{ibf.lang.hb_click_close}";
var list_prompt = "{ibf.lang.js_tag_list}";
// >
</script>
<br />
<div align='left' id='qr_open' style="display:$show;position:relative;">
<form name='REPLIER' action="{ibf.script_url}" method='post' onSubmit='return ValidateForm()'
e
data'>
<input type='hidden' name='act' value='Post' />
<input type='hidden' name='CODE' value='03' />
<input type='hidden' name='f' value='$fid' />
<input type='hidden' name='t' value='$tid' />
<input type='hidden' name='st' value='{$ibforums->input['st']}' />
<input type='hidden' name='auth_key' value='$key' />
<! TITLE DIV >
<div class="tableborder">
<div class='maintitle'><{CAT_IMG}> {ibf.lang.qr_title}</div>
<table align='center'>
<tr><td class="row1">
<input type='radio' class='radiobutton' name='bbmode' value='ezmode' onclick='setmode(this.value)'
Mode</b><br />
<input type='radio' class='radiobutton' name='bbmode' value='normal' onclick='setmode(this.value)'
c
/> <b>Normal Mode</b>
<script type='text/javascript' src='html/ibfcode.js'></script>
</td>
<td class="row1">
<input type='button' accesskey='b' value=' B ' onclick='simpletag("B")' class='codebuttons' name='B'
onmouseover="hstat('bold')" />
<input type='button' accesskey='i' value=' I ' onclick='simpletag("I")' class='codebuttons' name='I' st
y
onmouseover="hstat('italic')" />
<input type='button' accesskey='u' value=' U ' onclick='simpletag("U")' class='codebuttons' name='U
'
decoration:underline" onmouseover="hstat('under')" />
<select name='ffont' class='codebuttons' onchange="alterfont(this.options[this.selectedIndex].value, '
onmouseover="hstat('font')">
<option value='0'>{ibf.lang.ct_font}</option>
<option value='Arial' style='font-family:Arial'>{ibf.lang.ct_arial}</option>
<option value='Times' style='font-family:Times'>{ibf.lang.ct_times}</option>
<option value='Courier' style='font-family:Courier'>{ibf.lang.ct_courier}</option>
<option value='Impact' style='font-family:Impact'>{ibf.lang.ct_impact}</option>
<option value='Geneva' style='font-family:Geneva'>{ibf.lang.ct_geneva}</option>
<option value='Optima' style='font-family:Optima'>Optima</option>
</select><select name='fsize' class='codebuttons' onchange="alterfont(this.options[this.selectedInde
x
onmouseover="hstat('size')">
<option value='0'>{ibf.lang.ct_size}</option>
<option value='1'>{ibf.lang.ct_sml}</option>
<option value='7'>{ibf.lang.ct_lrg}</option>
<option value='14'>{ibf.lang.ct_lest}</option>
</select><select name='fcolor' class='codebuttons' onchange="alterfont(this.options[this.selectedInd
e
onmouseover="hstat('color')">
<option value='0'>{ibf.lang.ct_color}</option>
<option value='blue' style='color:blue'>{ibf.lang.ct_blue}</option>
<option value='red' style='color:red'>{ibf.lang.ct_red}</option>
<option value='purple' style='color:purple'>{ibf.lang.ct_purple}</option>
<option value='orange' style='color:orange'>{ibf.lang.ct_orange}</option>
<option value='yellow' style='color:yellow'>{ibf.lang.ct_yellow}</option>
<option value='gray' style='color:gray'>{ibf.lang.ct_grey}</option>
<option value='green' style='color:green'>{ibf.lang.ct_green}</option>
</select>
<br />
<input type='button' accesskey='h' value=' http:// ' onclick='tag_url()' class='codebuttons' name='url'
onmouseover="hstat('url')" />
<input type='button' accesskey='g' value=' IMG ' onclick='tag_image()' class='codebuttons' name='i
m
onmouseover="hstat('img')" />
<input type='button' accesskey='e' value=' @ ' onclick='tag_email()' class='codebuttons' name='emai
l
onmouseover="hstat('email')" />
<input type='button' accesskey='q' value=' QUOTE ' onclick='simpletag("QUOTE")' class='codebutt
o
onmouseover="hstat('quote')" />
<input type='button' accesskey='p' value=' CODE ' onclick='simpletag("CODE")' class='codebuttons
'
onmouseover="hstat('code')" />
<input type='button' accesskey='l' value=' LIST ' onclick='tag_list()' class='codebuttons' name="LIS
T
onmouseover="hstat('list')" />
<input type='button' accesskey='l' value=' SQL ' onclick='simpletag("SQL")' class='codebuttons' na
m
<input type='button' accesskey='t' value=' HTML ' onclick='simpletag("HTML")' class='codebuttons
'
<br />
<a href='javascript:closeall();' onmouseover="hstat('close')">Close All Tags</a><br>
{ibf.lang.hb_open_tags}: <input type='text' name='tagcount' size='3' maxlength='3' style='fon
t
family:verdana,arial;border:0px;font-weight:bold;' readonly="readonly" class='row1' value="0" />
<input type='text' name='helpbox' size='50' maxlength='120' style='width:auto;font-size:10px
family:verdana,arial;border:0px' readonly="readonly" class='row1' value="{ibf.lang.hb_start}" />
</td>
</tr>
</table>
<div class="row1" align="center">
<textarea cols='70' rows='8' name='Post' class='textinput' tabindex="1"></textarea>
<div class='pformstrip'>{ibf.lang.upload_title}
{ibf.lang.upload_text} $data<input class='textinput' type='file' size='30' name='FILE_UPLOAD' /><
/
<br /><br />
<a href='javascript:emo_pop();'>{ibf.lang.show_emo}</a> |
<input type='checkbox' name='enableemo' value='yes' class="checkbox" checked="checked"
/> {ibf.lang.qr_add_smilie} |
<input type='checkbox' name='enablesig' value='yes' class="checkbox" checked="checked"
/> {ibf.lang.qr_add_sig}<br /><br />
<input type='submit' name='submit' value='{ibf.lang.qr_submit}' class='forminput' tabindex="2" acc
e
<input type='submit' name='preview' value='{ibf.lang.qr_more_opts}' class='forminput' />
<input type='button' name='qrc' onclick="ShowHide('qr_open','qr_closed');" value='{
i
class='forminput' />
</div>
</div>
</form>
</div>
+Tạo link cho 4rum con trên trang index
Trích dẫn:
<br>( <a style="text-decoration: none" href="url của 4rum con"><u>tên của 4rum
con</u></a> )
đây chỉ là nhữgn bước căn bản để làm 1 4rum,để hack thêm mod bạn có thể vào các 4rum
khác coi thêm.
+Cuối cùng:đăng kí domain:
sau khi đã làm xong,thực sự hài lòng với cái 4rum,bạn hãy đi đăng kí domain.Có tiền thì
mua 1 con .com hay .net còn ko thì xài domain free :