웹마스터 팁
추천과 추천포인트 관련 팁
2009.09.30 18:13
소스 코드를 수정하는 것이므로 수정하기 전에 반드시 백업하시길 권합니다.
1. 추천/비추천 시 새로고침 하지 않기
추천/비추천시 일일이 새로고침 하는 것도 리소스 낭비 같아 새로고침하지 않고 결과만 메시지창에 나타나도록 수정했습니다.
modules/document/document.controller.php 에서 약 699라인을 아래와 같이 수정합니다.
// 결과 리턴
if($point > 0)
return new Object(0, 'success_voted');
else
return new Object(0, 'success_blamed'+ '+ ');
}
=>
// 결과 리턴
if($point > 0)
return new Object(-1, sprintf('추천 되었습니다. 현재 추천수는 '.$args->voted_count.'입니다.'));
else
return new Object(-1, sprintf('비추천 되었습니다. 현재 비추천수는 '.$args->blamed_count.'입니다.'));
코멘트 추천/비추천에도 적용하려면
modules/comment/comment.controller.php 에서 약 503라인을 역시 위와 마찬가지로 수정하면 됩니다.
만약 글씨가 깨어진다면 위의 php문서를 UTF-8로 저장하시기 바랍니다.
2. 추천시 추천자도 포인트 깎기
추천 포인트를 설정할 경우 추천하는 회원의 포인트도 깎는 팁입니다.
modules/point/point.controller.php 에서 489라인 이하의 triggerUpdateVotedCount(&$obj) 함수를 아래로 교체합니다.
//추천시 추천자 포인트도 삭감하도록 수정
function triggerUpdateVotedCount(&$obj) {
$module_srl = $obj->module_srl;
$target_member_srl = $obj->member_srl;
if(!$module_srl || !$target_member_srl) return new Object();
// 추천자 정보 구함
$logged_info = Context::get('logged_info');
$vote_member_srl = $logged_info->member_srl;
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('point');
$module_config = $oModuleModel->getModulePartConfig('point', $module_srl);
$oPointModel = &getModel('point');
$target_cur_point = $oPointModel->getPoint($target_member_srl, true);
$vote_cur_point = $oPointModel->getPoint($vote_member_srl, true);
if( $obj->point > 0 ) {
$point = $module_config['voted'];
if(!isset($point)) $point = $config->voted;
} else {
$point = $module_config['blamed'];
if(!isset($point)) $point = $config->blamed;
}
if(!$point) return new Object();
// 포인트 증감
$target_cur_point += $point;
$this->setPoint($target_member_srl,$target_cur_point);
// 추천자 포인트 증감
$vote_cur_point -= $point;
$this->setPoint($vote_member_srl,$vote_cur_point);
return new Object();
}
비추천 포인트도 같이 사용할 경우 위의 코드대로면 비추천 시 비추천자의 포인트가 올라가게 되므로
비추천시 비추천자 포인트는 그대로 두고 싶으면 위의 코드에서 '// 추천자 포인트 증감' 이하를 아래와 같이 수정합니다.
// 추천자 포인트 증감 (추천시에만 추천자 포인트 삭감)
if( $obj->point > 0 ) {
$vote_cur_point -= $point;
$this->setPoint($vote_member_srl,$vote_cur_point);
}
return new Object();
}
비추천 시 비추천자 점수도 같이 깎고 싶다면 아래와 같이 수정합니다.
// 추천자 포인트 증감 (추천/비추천 모두 추천자 포인트 삭감)
if( $obj->point > 0 ) {
$vote_cur_point -= $point;
$this->setPoint($vote_member_srl,$vote_cur_point);
} else {
$vote_cur_point += $point;
$this->setPoint($vote_member_srl,$vote_cur_point);
}
return new Object();
}
3. 글 리스트에서 추천수를 누르면 추천되게 하기
사용하는 게시판 스킨의 _style.list.html을 수정합니다. 여기선 xe_official 게시판을 기준으로 설명 드립니다.
modules/board/skins/xe_official/_style.list.html 에서
<!--@elseif($val->type == 'voted_count')-->
<td class="recommend">{$document->get('voted_count')!=0?$document->get('voted_count'):' '}</td>
을 찾아 아래와 같이 수정합니다.
<!--@elseif($val->type == 'voted_count')-->
<td class="recommend"><a onclick="doCallModuleAction('document','procDocumentVoteUp','{$document->document_srl}');return false;" href="./javscript:void(0);" title="클릭하면 추천 됩니다">{$document->get('voted_count')!=0?$document->get('voted_count'):' '}</a></td>
1번 팁과 같이 사용하면 효과적입니다.
댓글 8
-
누리안
2009.09.30 21:32
-
달팽이355
2009.10.01 16:32
감사합니다. 꼭 필요한 기능이었습니다. 한 가지 더 욕심을 부리자면 결과를 리턴하는 값에서 현재의 단순한 추천수 대신 이미지 갯수를 보여주는 팁은 어려운지요..? 예를들면 "현재추천수는 15입니다 " 대신에 "현재 장미꽃이 10송이입니다(장미꽃 10송이 이미지 나열)" 이런식의 팁을 여쭙는 것 입니다. 가능하다면 염치불구 부탁드립니다..^^
-
옥수수밭
2009.10.02 12:11
정말 원했던 기능이었습니다~
감사합니다!
-
Clanss
2009.10.03 22:10
감사합니다 ^^ -
fenriz
2009.11.01 20:54
// 추천자 포인트 증감
$vote_cur_point -= $point;
이것을
// 추천자 포인트 증감
$vote_cur_point += $point;
로 바꾸면 추천자에게 포인트 부여가 가능 합니다.
-
켠
2013.02.17 17:26
감사합니다 !! 이게 정말 필요했어요 !! 잘 작동하면 좋겠네요 - ! 몇년이 지난후라 지금 버젼에 맞을지 모르겠지만요 ;ㅅ ; (개초보라 해봐야 안다는..)
-
김창기462
2009.12.07 14:02
소중한 지식 감사합니다. 한번 해봐야겠네요~~ *^^*
-
웃는기차
2014.06.24 12:45
소중한 정보 감사드려요. ^^
제목 | 글쓴이 | 날짜 |
---|---|---|
사이트맵에서 메뉴 생성할때 메뉴 추가 항목에 해당 모듈이 바로 연결되도록 [2] | sejin7940 | 2014.01.25 |
부트스트랩 기초 지식 강의 | 돼지코구뇽 | 2014.01.24 |
xe_2009 게시판 스킨 사용시 브라우저 타이틀 지우기 | 착한악마 | 2014.01.23 |
faq 묘듈 사용시 레이아웃을 깨는 css [3] | 착한악마 | 2014.01.23 |
input 체크박스, 라디오버튼 테두리 제거 | 헤이즈디자인 | 2014.01.22 |
1.7.3.8 설치 후 위에 어드민바가 안 보이는 증상을 해결하는 방법. [2] | 야옹이님 | 2014.01.22 |
Captcha 애드온 준회원만 적용하기 [2] | 라싸 | 2014.01.22 |
썸네일 특정 파일로 불러오기 [18] | Lansi | 2014.01.21 |
[jQuery] PNG투명 이미지 animate시 IE7,8 투명이미지 표현 문제. | 투니페이퍼 | 2014.01.21 |
게시판 최초 정렬을 사용자정의(확장변수) 기준으로 설정 가능하게 하는 방법 [8] | sejin7940 | 2014.01.20 |
메뉴추가가 안돼요. [2] | 궁굼자 | 2014.01.20 |
게시판 설정의 게시판 정보 탭에서, 고급 항목이 항상 노출되도록 하는 방법 [3] | sejin7940 | 2014.01.20 |
룰셋 적용 팁 [1] | 루비스코 | 2014.01.20 |
관리자가 무제한 추천 가능하게 하는 방법 [2] | sejin7940 | 2014.01.17 |
[10원팁] 스케치북 추천/비추천/신고를 눈에 들어오게 | socialskyo | 2014.01.17 |
XE 전체 타이틀(title) 수정하기 [3] | pezex | 2014.01.16 |
정확한 계산기 소스입니다. [2] | 현탁 | 2014.01.15 |
업로드 용량을 .htaccess 파일로 제어하기 [9] | 야옹이님 | 2014.01.15 |
짧은주소 사용시 긴주소 검색엔진 차단시키기 [10] | Volun | 2014.01.14 |
IE의 깨짐현상(호환성보기 문제) [1] | Volun | 2014.01.14 |
꼭 필요한 기능이었는데 이렇게 정보를 얻게 되니 무척이나 반갑고 감사한 마음입니다.
유용하게 쓰겠습니다. 감사합니다.