มาจากที่นี่
http://hot-th.com/thread-3343-1-1.htmlสำหรับในเวอร์ชั่นมีการแก้ไขโค้ดให้มีความกระชับมากขึ้น, เก็บแมลงนิดหน่อย
โดยการนำ javascript framework ของ jquery มาใช้ครับ
และส่วนของด้าน server นั้นจะต้องเป็น PHP5 เท่านั้นนะครับ และต้องเปิดใช้งานฟังก์ชั่น json ด้วยนะครับ
การส่งข้อมูลไปยังด้าน server ได้เปลี่ยนเป็นแบบ POST แทนครับ แต่การเก็บข้อมูลยังคงเก็บลงไฟล์เหมือนเดิมครับ
Edit1: เขียนโค้ดตกไปนิดนึงครับ ได้แก้ไขเรียบร้อยแล้วครับ และสามารถใช้งานร่วมกับ Mod Pretty URLs ได้ด้วยนะครับ
วิธีการติดตั้ง- สร้างไฟล์เดอร์ TDB ในโฟลเดอร์บอร์ดของคุณและ cmod เป็น 777 ด้วยนะครับ
- ดาวน์โหลด jquery-1.3.2.min.js แล้วอัพโหลดไปไว้โฟลเดอร์ธีมที่ใช้
- สร้างไฟล์ thankcool.php แล้วใส่โค้ดนี้ลงไป
<?php
// ThankCool by [DomeniC]
require_once 'SSI.php';
$id = (int)$_POST['id'];
$se = (int)$_POST['se'];
$uid = $context['user']['id']; // alias
if(empty($id) || empty($se)){
die();
}
$td = array();
if(is_readable('TDB/'.$id.'.db')){
$tt = file_get_contents('TDB/'.$id.'.db');
$td = explode(',', $tt);
}
if(in_array($uid, $td)){
echo json_encode(array(
'status' => 'error',
'message' => 'You gave ThankCool!'
));
die();
}
$td[] = $uid;
file_put_contents('TDB/'.$id.'.db', implode(',', $td));
$o = '[br /][br /]<span style="color:#588000">ThankCool By: </span>';
foreach($td as $c => $t){
loadMemberData($t, false, 'profile');
loadMemberContext($t);
$sep = ($c == 0) ? '' : ', ';
$o .= $sep.$memberContext[$t]['link'];
}
echo json_encode(array(
'status' => 'ok',
'id' => $id,
'newlist' => $o
)
);
?>
- อัพโหลดไฟล์ thankcool.php ไปไว้โฟลเดอร์บอร์ดของคุณ
- สร้างไฟล์ thankcool.js ใส่โค้ดนี้ลงไป/* ThankCool by [DomeniC] --> AJAX client side */
function thankcool(msg_id){
var el = $('#tc_' + msg_id);
var bt = $('#tcb_' + msg_id);
var url = smf_scripturl.replace(/index.php/, '');
if(!el) return false;
if(!bt) return false;
$.post(url + 'thankcool.php', {id: msg_id, se: new Date().getTime()}, function(json) {
if(json.status == 'error')
return alert('error! ' + json.message);
bt.css('cursor', 'default');
bt.html('ThankCooled!');
el.html(json.newlist);
}, 'json');
}
- อัพโหลดไฟล์ thankcool.js ไปไว้โฟลเดอร์ธีมที่ใช้
- เปิดไฟล์
Sources/Display.php- หาโค้ดนี้
$message['body'] = parse_bbc($message['body'], $message['smileysEnabled'], $message['ID_MSG']);
- ใส่โค้ดนี้บรรทัดต่อไป /* ThankCool by [DomeniC] --> load data */
if(is_readable('TDB/'.$message['ID_MSG'].'.db')){
$thxd = explode(',', file_get_contents('TDB/'.$message['ID_MSG'].'.db'));
}else{
$thxd = array();
}
$thxraw = $thxd;
if($thxd){
foreach($thxd as $j => $m){
loadMemberData($m, false, 'profile');
loadMemberContext($m);
$thxd[$j] = $memberContext[$m]['link'];
}
}
- หาโค้ดนี้'can_see_ip' => allowedTo('moderate_forum') || ($message['ID_MEMBER'] == $ID_MEMBER && !empty($ID_MEMBER)),
- ใส่โค้ดนี้บรรทัดต่อไป 'tc' => $thxd,
'tcraw' => $thxraw
- เปิดไฟล์
Display.template.php- หาโค้ดนี้ // Show the post itself, finally!
echo '
</td>
</tr></table>
<hr width="100%" size="1" class="hrcolor" />
<div class="post"', $message['can_modify'] ? ' id="msg_' . $message['id'] . '"' : '', '>', $message['body'], '</div>', $message['can_modify'] ? '
<img src="' . $settings['images_url'] . '/icons/modify_inline.gif" alt="" align="right" id="modify_button_' . $message['id'] . '" style="cursor: pointer; display: none;" />' : '' , '
</td>
</tr>';
- ใส่โค้ดนี้ทับลงไป // Show the post itself, finally!
echo '
</td>
</tr></table>
<hr width="100%" size="1" class="hrcolor" />';
if ($context['user']['is_logged'] && !in_array($context['user']['id'], $message['tcraw']) && $context['user']['id'] != $message['member']['id'])
echo '
<a id="tcb_'.$message['id'].'" style="tc_link" href="javascript://thankcool'.$message['id'].'">ThankCool![/url]
<div style="clear:left"></div>
<hr width="100%" size="1" class="hrcolor" />';
echo '
<div class="post"', $message['can_modify'] ? ' id="msg_' . $message['id'] . '"' : '', '>', $message['body'], '</div>
<div id="tc_' . $message['id'] . '">';
if (!empty($message['tc']))
echo '
[br /][br /]<span style="color:#588000">ThankCool By: </span>' . implode($message['tc'], ', ');
echo '
</div>';
echo
$message['can_modify'] ? '
<img src="' . $settings['images_url'] . '/icons/modify_inline.gif" alt="" align="right" id="modify_button_' . $message['id'] . '" style="cursor: pointer; display: none;" />' : '' , '
</td>
</tr>';
- เปิดไฟล์
index.template.php- หาโค้ดนี้ <title>', $context['page_title'], '</title>';
- ใส่โค้ดนี้ลงไปก่อนหน้า <script type="text/javascript" src="', $settings['theme_url'], '/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="', $settings['theme_url'], '/thankcool.js"></script>
เป็นอันว่าเสร็จเรียบร้อยแล้วครับ
ปล1. มีปัญหาจุดไหนก็ตอบกระทู้ไว้นะครับ
ปล2. ตั้งกระทู้นี่เหนื่อยกว่าเขียนโค้ดซะอีก