댓글+평점 기능이 필요해서 찾는 중입니다.
1. boardDX는 찬반으로 별점을 매기는 것 같습니다.
2. 코노리님의 콘텐츠판 모듈은 구매 후 평점을 댓글로 남기는 것 같습니다.
1점부터 10점까지 선택할 수 있고
각 점수를 몇명이나 선택했는지 뽑아보려고 합니다.
혹시 가능한 모듈이나 애드온 혹은 제작이 가능한지 궁금합니다.
참조 : https://xe1.xpressengine.com/forum/20803096
댓글+평점 기능이 필요해서 찾는 중입니다.
1. boardDX는 찬반으로 별점을 매기는 것 같습니다.
2. 코노리님의 콘텐츠판 모듈은 구매 후 평점을 댓글로 남기는 것 같습니다.
1점부터 10점까지 선택할 수 있고
각 점수를 몇명이나 선택했는지 뽑아보려고 합니다.
혹시 가능한 모듈이나 애드온 혹은 제작이 가능한지 궁금합니다.
참조 : https://xe1.xpressengine.com/forum/20803096
triggerInsertCommentBefore($obj){
$module_srl = $obj->module_srl
$module_config = 댓글 평점 모듈(혹은 애드온) 설정을 가져옴.
$allow_list = $module_config에서 평점기능을 사용하는 게시판 리스트(array)를 가져옴.
if(!in_array( $module_srl, $allow_list ) {
return 허용되지 않은 게시판입니다.
}
$comment_srl = $obj->comment_srl;
$logged_info - Context::get('logged_info');
if(!$logged_info) {
return 로그인 후 평점 가능합니다.
}
$grade = Context::get('grade');
if(!$grade || !(0 초과 10 이하의 자연수 혹은 소수) ) { // 정규식을 사용하거나 따로 소수로 파싱해서 체킹.
return 이상한 값.
}
$document_srl = Context::get('document_srl');
$docGrade = 현재 모듈의 model에서 $document_srl값의 문서번호로 문서의 평점 상태를 가져옴
$grade_count = $docGrade->count;
$grade_average = $docGrade->average;
$args = new stdClass();
$new_grade = ($grade_count*$grade_average+$grade) / ($grade_count+1);
executeQuery(DB에 저장할 값들을 입력);
return true;
}
간단히 수도코드로 평점 저장하는 부분 끄적여 봤습니다..
감사합니다. 이걸 모듈 쪽에 결합하면 되는 건가요?;;
예를 들어 board 모듈이라면 이걸 어디에 넣어야 하는 건가요;
아니면 애드온으로 동작하는 건가요 ㅠ;
그냥 프론트에서 voted_count 로 넘기면 됩니다. ( <select name="voted_count"> or <input name="voted_count"> )
다만 위변조 방지차원에서 애드온에서 별도 처리했던거네요
<?php if(!defined("__XE__")) exit(); /** * @file document_stars.addon.php * @author anizen * @brief 평점 위변조 방지 애드온 * **/ if($called_position == 'before_module_proc' && Context::get('act') == 'procBoardInsertComment'){ if(Context::get('voted_count') === NULL) return; $voted_count = (int)Context::get('voted_count'); if(gettype($voted_count) != "integer") $this->stop('잘못된 평점을 입력하셨습니다.'); if($voted_count < 1) Context::set('voted_count', 1); if($voted_count > 10) Context::set('voted_count', 10); } ?>
참고로 이렇게 만들었던 것 같습니다.. 실제 변조를 막는지 확인은 안해봤지만..-_-;;ㅋㅋ
네 제가 했을 땐 그랬던 것 같아요.
아마 평점? 기능을 위해서 그렇게 만든 거 아닌 가 싶더라구요.
참고로 추천수 같은 경우 별도로 db로 저장되는데, 이 사람이 1점을 줬는데 10점을 줬는지 준 점수까지 기록이 되기 때문에
이를 활용하면 평점?을 구현할 수 있더라구요..
예전 리뷰 모듈? 인가 공식모듈이었던 것 같은데, 거기서 참고해서 제작했던 것 같습니다.
코멘트 쓰기 form 안에 추가만 하며 됩니다.
전 이렇게 했었네요
평점 선택 : <select name="voted_count"> <option value="10">10점</option> <option value="9">9점</option> <option value="8">8점</option> <option value="7">7점</option> <option value="6">6점</option> <option value="5">5점</option> <option value="4">4점</option> <option value="3">3점</option> <option value="2">2점</option> <option value="1">1점</option> </select>
프론트 백엔드 DB구성까지 포함해서 1, 2시간이면 만들 것 같은데