포인트팡팡과 다른 애드온을 참조해서 짜집기를 해 보았습니다. 그런데 관련지식이 없다보니 뭐가 뭔지 몰라 수정할 곳도 많을 것 같고 혹시 문제를 일으키는 곳이 있을 것 같기도 합니다.
고쳐야 할 곳 좀 알려주세요..
붉게 처리한 부분도 이상이 없는 건지 궁금하구요. 저게 왜 필요한지 1도 모르는 사람이라서요..
그리고 포인트팡팡 애드온 첫부분에 아래와 같은 것이 잇는데 이것도 필요하다면 어떻게 넣어야 할까요 ?
if($called_position == 'after_module_proc'){
//메세지가 있으면 출력후 패스
if($_SESSION['addon_point_pangpang_msg']&&($this->act=='dispBoardContent'||$this->act=='dispBoardContentCommentList')){
Context::addHtmlFooter( '<script type="text/javascript"> alert("'.$_SESSION['addon_point_pangpang_msg'].'"); </script>' );
unset($_SESSION['addon_point_pangpang_msg']);
return;
}
------------------------------------------------------------------------------
짜집기한 코드
<?php
if(!defined("__XE__")) exit();
if($this->module == 'admin') return;
if($called_position=='after_module_proc') {
$act = Context::get('act');
$document_srl=Context::get('target_srl');
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
$def_content = '축하합니다. 베스트 게시물로 선정되었습니다!';
$msg_content = ($addon_info->message_content)?$addon_info->message_dontent:$def_content;
if($act=='procDocumentVoteUp' && $addon_info->vote_count!="" && ($oDocument->get('voted_count') == $addon_info->vote_count-1))
{
$comObj->member_srl = 162023;
$comObj->email_address = $comObj->homepage = $comObj->user_id = '';
$comObj->user_name = 'Pangpang!';
$comObj->nick_name = $msg_title;
$comObj->password = md5((microtime() / mt_rand(1000,9999)) . $_SERVER['HTTP_USER_AGENT']);
$comObj->module_srl = $this->module_srl;
$comObj->document_srl = $this->variables['document_srl'];
$comObj->content = $msg_content;
$comObj->use_html = 'Y';
$ccComment = &getController('comment');
$bk_avoidlog = $_SESSION['avoid_log'];
$_SESSION['avoid_log'] = true;
$tmpout = $ccComment->insertComment($comObj, true);
$_SESSION['avoid_log'] = $bk_avoidlog;
unset($_SESSION['own_comment'][$tmpout->get('comment_srl')]);
}
}
?>
댓글 15
$comObj->module_srl = $this->module_srl;
$comObj->document_srl = $this->variables['document_srl'];
이 두 라인도 뭔가 이상해 보이긴 하네요.
일단
$comObj->module_srl = $module_info->module_srl;
$comObj->document_srl = $document_srl;
이렇게 해보았는데 동일하게 댓글은 안달리구요.
이것도 아닌거 같아서 삭제 했으나 여전히 댓글은 안달리네요.
최종 ㅋㅋ 안됩니다.
<?php
if(!defined("__XE__")) exit();
if($this->module == 'admin') return;
if($called_position=='after_module_proc') {
$act = Context::get('act');
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
$def_content = '축하합니다. 베스트 게시물로 선정되었습니다!';
$msg_content = ($addon_info->message_content)?$addon_info->message_content:$def_content;
$_fullUrl = getFullUrl('','mid',$this->mid,'document_srl',$this->variables['document_srl'],'comment_srl',$this->variables['comment_srl']);
if($this->variables['document_srl']){
$args->document_srl = $this->variables['document_srl'];
$tmpout = executeQuery('addons.votte_reply.getDocumentExtra', $args);
if($tmpout->data->extra_vars){
$exvars=unserialize($tmpout->data->extra_vars);
$args->extra_vars = serialize($exvars);
// 최대 크기를 설정해서 오류 방지 mssql = 8000
if(strlen($args->extra_vars) > 8000) return;
$tmpout = executeQuery('addons.votte_reply.updateDocumentExtra', $args);
}
}
if($act=='procDocumentVoteUp' && $addon_info->vote_count!="" && ($oDocument->get('voted_count') == $addon_info->vote_count-1))
{
$comObj->member_srl = 162023;
$comObj->email_address = $comObj->homepage = $comObj->user_id = '';
$comObj->user_name = 'Pangpang!';
$comObj->nick_name = '댓글돌이';
$comObj->password = md5((microtime() / mt_rand(1000,9999)) . $_SERVER['HTTP_USER_AGENT']);
$comObj->module_srl = $this->module_srl;
$comObj->document_srl = $this->variables['document_srl'];
$comObj->content = $msg_content;
$comObj->use_html = 'Y';
$ccComment = &getController('comment');
$bk_avoidlog = $_SESSION['avoid_log'];
$_SESSION['avoid_log'] = true;
$tmpout = $ccComment->insertComment($comObj, true);
$_SESSION['avoid_log'] = $bk_avoidlog;
unset($_SESSION['own_comment'][$tmpout->get('comment_srl')]);
}
}
?>
애드온 보다는 아래 모듈 약간 수정하면 쉽게 될듯 합니다.
https://xe1.xpressengine.com/index.php?mid=download&package_id=22753651
vote 모듈인데요 기본적으로 추천수 또는 비추천수 도달하면 댓글 남기는 기능이 있습니다.
다만 게시판 이동기능이 기본이기 때문에 추천부분에 게시판 이동하지 않게만 하고 댓글 남기는 부분은 그대로 쓰면 될듯합니다.
네 기본동작이 새로고침없이 추천하는 기능이기 때문에 기본 추천버튼은 안보이게 하고 여기서 보이게 해야 정상 작동되긴 합니다.
기본적으로 이모듈은 스킨이 여러종류이고 직접 스킨제작도 가능하니 사이트에 맞게끔 스킨을 만들어 넣는 방법도 있을거 같습니다.
제가 알기로 추천버튼만 따로고 나머지는 일반 추천버튼처럼 누른것은 기본 추천db에 들어가서
추천인 표시등 포함해서 다른것도 정상 작동하는것으로 알고 있습니다.
추천전 추천후 구분이 기본추천DB외에 다른DB에 저장하게 해놓았다면 안되겠지만요
일단 댓글이 안달리는 것으로 보아 모듈의 버튼을 눌렀을때 이동과 댓글이 동작하도록 되어있지 않을까 추측만 해봅니다. 일단 이 자료는 더 살펴보지 않으려고 합니다.
커뮤니티 사이트를 운영하고 있지 않아서 .. 감이 없네요.
이런 모듈이나 애드온 정도는 있을줄 알았는데..