ขั้นตอนติดตั้ง ห้องแต่งตัว virtualimage Discuz 7.0

บทความดั้งเดิมผมอ่านมาจาก ที่นี่ ครับ แต่บทความเขียนไว้ เหมือนจะไม่ตำแหน่งที่อัพโหลดไฟล์ และ code ที่ต้องนำมาแทนที่ มีปัญหาเรื่องอักขระที่มองไม่เห็น (White Space) แต่ php และ javascript ดันนำไปคิด ทำให้เกิด syntax error ตามมา ผมจึงนำมาเรียบเรียงใหม่ดังนี้ครับ

คำเตือน: ก่อนการติดตั้งผมแนะนำให้คุณสั่ง backup ไว้ก่อนนะ เพราะถ้าคุณติดตั้งผิดพลาด มันมีโอกาสจะทำให้เว็บบอร์ดเข้าไม่ได้ แล้วคงจะตามแก้กันไม่ถูกละทีนี้

  1. ดาวน์โหลดตัวติดตั้งก่อนเลยครับ ผมรวมเป็นไฟล์เดียวไว้ให้แล้ว คลิกที่นี่เพื่อโหลดตัวติดตั้ง
  2. ถ้าโฮสติ้งของคุณใช้ DirectAdmin คุณสามารถอัพโหลด discuz-7.0.0-virtualimage.tar.gz ขึ้นไป extract บนโฮสได้เลย ส่วน Control Panel ตัวอื่นก็แตกไฟล์ก่อนแล้วค่อยอัพโหลดแล้วกันนะ
  3. ตำแหน่งที่จะต้องนำไฟล์ติดตั้งไปวาง คือ ในโฟลเดอร์ของ discuz ที่มันมีไฟล์เหล่านี้ admincp.php, ajax.php, config.inc.php
  4. กำหนด CHMOD ของ virtualimage/photo และ virtualimage/avatar ให้เป็น 777
  5. เปิดหน้าติดตั้ง /images_install.php (ตย. http://www.____.com/bbs/images_install.php) แล้วก็กดดำเนินการติดตั้งได้เลย
  6. พอติดตั้งเสร็จแล้ว ให้ไปลบไฟล์ images_install.php ออก
  7. ดาวน์โหลดไฟล์ discuz_plugin_virtualimage.txt
  8. ดาวน์โหลดไฟล์ discuz_plugin_images_admin.txt
  9. ไปที่ admin CP -> ปลั๊กอิน -> นำไฟล์เข้า -> Browse.. -> เลือกไฟล์ discuz_plugin_virtualimage.txt (จากข้อ 7.) -> กดปุ่มส่ง
  10. ไปที่ admin CP -> ปลั๊กอิน -> นำไฟล์เข้า -> Browse.. -> เลือกไฟล์ discuz_plugin_images_admin.txt (จากข้อ 8.) -> กดปุ่มส่ง

คราวนี้มาถึงขั้นตอนที่ยุ่งยากนิดหน่อย เพราะว่าต้องเข้าไปแก้หลายไฟล์

  1. แก้ไฟล์ ./plugin.php
    ค้นหา

    require_once './include/common.inc.php';

    นำโค๊ดนี้ไปวางที่ด้านบน

    define('images_css', 'virtualimage');
  2. แก้ไฟล์ ./memcp.php
    ค้นหา

    if($msnnew && !isemail($msnnew)) {

    นำโค๊ดนี้ไปวางที่ด้านบน

    if(!empty($discuz_viid) && $gendernew != $member['gender']){
    	showmessage('Your virtual image is in use and can not change the gender, first in the virtual image of the personal settings set to shut down the virtual image',"plugin.php?identifier=virtualimage&module=virtualimage&index=option");
    }
    
  3. แก้ไฟล์ ./viewthread.php
    1. ค้นหา
      m.invisible,

      แทนที่ด้วย

      m.invisible, m.viid,
    2. ค้นหา
      discuz_uc_avatar($post['authorid']);

      แทนที่ด้วย

      discuz_uc_avatar($post['authorid'],'','',$post['viid'],$post['pid']);
  4. แก้ไฟล์ ./eccredit.php
    1. ค้นหา
      m.invisible,

      แทนที่ด้วย

      m.invisible, m.viid,
    2. ค้นหา
      discuz_uc_avatar($member['uid']

      แทนที่ด้วย

      discuz_uc_avatar($member['uid'],'','',$member['viid'],$member['uid']
  5. แก้ไฟล์ ./include/common.inc.php
    ค้นหา

    m.customshow,

    แทนที่ด้วย

    m.customshow, m.viid AS discuz_viid,
  6. แก้ไฟล์ ./include/global.func.php
    1. ค้นหา

      $url_forward = empty($url_forward) ? '' : (empty($_DCOOKIE['sid']) && $transsidstatus ? transsid($url_forward) : $url_forward);

      นำโค๊ดนี้วางต่อด้านล่าง

      $url_forward = str_replace('&', '&', $url_forward);
    2. ค้นหา
      function discuz_uc_avatar($uid, $size = '', $returnsrc = FALSE) {
      	if($uid > 0) {
      		$size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle';
      		$uid = abs(intval($uid));
      		if(empty($GLOBALS['avatarmethod'])) {
      			return $returnsrc ? UC_API.'/avatar.php?uid='.$uid.'&size='.$size : '<img src="'.UC_API.'/avatar.php?uid='.$uid.'&size='.$size.'" />';
      		} else {
      			$uid = sprintf("%09d", $uid);
      			$dir1 = substr($uid, 0, 3);
      			$dir2 = substr($uid, 3, 2);
      			$dir3 = substr($uid, 5, 2);
      			$file = UC_API.'/data/avatar/'.$dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid, -2).'_avatar_'.$size.'.jpg';
      			return $returnsrc ? $file : '<img src="'.$file.'" onerror="this.onerror=null;this.src=\''.UC_API.'/images/noavatar_'.$size.'.gif\'" />';
      		}
      	} else {
      		$file = $GLOBALS['boardurl'].IMGDIR.'/syspm.gif';
      		return $returnsrc ? $file : '<img src="'.$file.'" />';
      	}
      }
      

      แทนด้วย

      function discuz_uc_avatar($uid, $size = '', $returnsrc = FALSE, $viid ='', $vid='') {
      	require DISCUZ_ROOT.'./forumdata/cache/plugin_virtualimage.php';
      	$image_close = $_DPLUGIN['virtualimage']['vars']['imagesclose'];
      	$image_url = $_DPLUGIN['virtualimage']['vars']['imageurl'];
      	if(!$image_close && $viid && $uid > 0) {
      		$vi_avatar = "<div id=\"Show{$vid}\"  class=\"imagefixeddiv\"></div><script type=\"text/javascript\">var image_url = '".$image_url."';
      showimage('Show{$vid}','{$viid}');
      </script>";
      		return $vi_avatar;
      	} elseif ($uid > 0) {
      		$size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle';
      		$uid = abs(intval($uid));
      		if ($size == 'small' && !$image_close && file_exists("virtualimage/avatar/".$uid."_s.jpg")) {
      			clearstatcache();
      			return '<img src="virtualimage/avatar/'.$uid.'_s.jpg">';
      		} else {
      			$uid = sprintf("%09d", $uid);
      			$dir1 = substr($uid, 0, 3);
      			$dir2 = substr($uid, 3, 2);
      			$dir3 = substr($uid, 5, 2);
      			return $returnsrc ? UC_API.'/data/avatar/'.$dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid, -2)."_avatar_$size.jpg" : '<img src="'.UC_API.'/data/avatar/'.$dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid, -2)."_avatar_$size.jpg".'" onerror="this.onerror=null;this.src=\''.UC_API.'/images/noavatar_'.$size.'.gif\'">';
      		}
      	} else {
      		$file = $GLOBALS['boardurl'].IMGDIR.'/syspm.gif';
      		return $returnsrc ? $file : '<img src="'.$file.'" />';
      	}
      }
      
  7. แก้ไขไฟล์ ./include/js/common.js
    นำโค๊ดนี้ไว้ด้านล่างสุด

    function showimage(showpid,currface) {
    	if(currface == '') {
    		currface = 0;
    	}
     	var faceArray = currface.split('-');
     	if(faceArray[6] != 0){
     		faceArray[8] = 0;
     		faceArray[9] = 0;
     	}
     	if(faceArray[12] != 0) {
     		faceArray[6] = 0;
     		faceArray[8] = 0;
     		faceArray[9] = 0;
     		faceArray[10] = 0;
     		faceArray[11] = 0;
     		faceArray[13] = 0;
     		faceArray[14] = 0;
     		faceArray[17] = 0;
     		faceArray[18] = 0;
     		faceArray[20] = 0;
     		faceArray[21] = 0;
     		faceArray[22] = 0;
     	}
     	var s='';
     	for(var i=0; i < 26; i++) {
     		if(faceArray[i] != '0'){
     			s += '<img src="'+image_url+i+'/'+faceArray[i]+'.gif" style="position:absolute; width:140px; height:226px;z-index: '+i+'" alt="" />';
     		}
     	}
     	s += '<img src="'+image_url+'blank.gif" style="position:absolute; width:140px; height:226px;" alt="" />';
     	$(showpid).innerHTML = s;
    }
    
  8. แก้ไขไฟล์ ./templates/default/css_script.htm (ถ้าใช้ template ใด ให้แก้ที่ template นั้นๆ)
    1. ค้นหา
      <!--{if CURSCRIPT == 'forumdisplay' && $forum['ismoderator']}-->

      นำโค๊ดนี้ไว้ด้านบน

      <!--{if images_css == 'virtualimage'}-->{template images_css}<!--{/if}-->
    2. ค้นหา
      .profile_side .avatar { margin: 25px 0; text-align: center; }

      เปลี่ยนเป็น

      .profile_side .avatar { margin: 25px 0 25px 32px;}
  9. แก้ไขไฟล์ ./templates/default/css_common.htm (ถ้าใช้ template ใด ให้แก้ที่ template นั้นๆ)
    นำโค๊ดนี้ไว้ด้านล่างสุด

    /*virtualimage*/
    .imagefixeddiv{height:226px;width:140px;}
    /*virtualimage*/
  10. แก้ไขไฟล์ ./templates/default/viewpro_classic.htm (ถ้าใช้ template ใด ให้แก้ที่ template นั้นๆ)
    ค้นหา

    {echo discuz_uc_avatar($member[uid])}

    เปลี่ยนเป็น

    {echo discuz_uc_avatar($member[uid], '', '', $member[viid], $member[uid])}
  11. แก้ไขไฟล์ ./templates/default/viewthread_fastpost.htm (ถ้าใช้ template ใด ให้แก้ที่ template นั้นๆ)
    ค้นหา

    {{echo discuz_uc_avatar($discuz_uid)}

    เปลี่ยนเป็น

    {echo discuz_uc_avatar($discuz_uid,'','',$discuz_viid, "my_$discuz_uid")}
  12. แก้ไขไฟล์ ./templates/default/actions.lang.php (ถ้าใช้ template ใด ให้แก้ที่ template นั้นๆ)
    ค้นหา

    211 => 'ผู้ควบคุมระบบ',

    นำโค๊ดนี้ไว้ด้านล่าง

    221 => 'ใช้งานห้องแต่งตัว',

เสร็จซะทีครับ คราวนี้คุณก็ไปอัพเดทแคช เท่านี้ก็เรียบร้อยครับ ( AdminCP -> เครื่องมือ -> อัพเดทแคช )

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.