묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
일정수 이상 추천/비추천을 받으면 제목앞에 글자가 박히는 애드온을 만들고싶은데 어떻게 해야할지 모르겠습니다.
2014.07.21 00:26
<?php
if(!defined("__ZBXE__")) exit(); //XE 체크
/**
* @file voteaddon.addon.php
* @author
* @brief
*
**/
if($called_position != 'after_module_proc' || Context::getResponseMethod() != 'HTML' ) return; //상태 체크
if($this->act != "dispBoardContent" && $this->act != "procBoardInsertDocument" && $this->act != "dispBoardDelete") return;
$oModuleModel = &getModel('module');
$voteup = (int)$addon_info->voteup; //설정파일 불러오기
$votedown = (int)$addon_info->votedown;
if($voteup == 0 && $votedown == 0) return; //값이 0이면 넘어감
$bvoteup = $voteup > 0;
$bvotedown = $votedown > 0; //0 이상값만 사용
//voteup, votedown에 새값을 넣기 위해 기존값을 백업
$document_srl = Context::get('document_srl'); //문서번호 불러오기
$document_list = Context::get('document_list');
$votealert = "TEST";
if($document_list) {
foreach($document_list as $key=>$document){
if($bvoteup){//추천체크
$result = executeQuery('document.getDeclaredDocument', $document);
$chkUp = $result->data->voted_count >= $voteup;
}else{
$chkDown = false;
}
if($bvotedown){//비추천체크
$result = executeQuery('document.getDeclaredDocument', $document);
$chkDown = $result->data->blamed_count_count >= $votedown;
}else{
$chkDown = false;
}
if( $chkUp || $chkDown){
$grant = $oModuleModel->getGrant($oModuleModel->getModuleInfoByModuleSrl($document->get('module_srl')), $logged_info);
if($logged_info->is_admin == 'Y' || $grant->manager){
$document->add('title', $votealert.' - '.$document->get('title'));
}else{
$document->add('title', $votealert);
$document->add('nick_name', "TEST");
$document->add('content', "TEST");
}
}
}
}
?>
추천/비추천값을 받아서 preg_replace로 처리하려는데 추천 비추천값부터 받아내기가 힘드네요
처음해서 어떻게 해야할지 모르겠습니다, 혹시 따로 배울수 있는 사이트라도 알아낼수 있을까요?
댓글 3
-
okiz
2014.07.21 17:11
-
ANIPIC
2014.07.25 13:23
정말로 늦게 봐서 죄송합니다, 그리고 답변 정말로 감사드립니다.
-
SeungXE
2014.07.21 17:34
윗분이 이야기하셨듯, 그냥 스킨에서 해결하시는게 맘 편합니다.
이 정도는 그냥 스킨에서 해결하시는게 더 빠르지 않나요?
애드온 보니 따로 db 쿼리 날리고 하면 좀 그런데요;
굳이 애드온으로 처리하시겠다하면 $obj = Context::getRequestVars(); 을 이용하면 각 페이지별로 이미 주어진 변수들을 이용할 수 있습니다.
(예: 본문 읽는 도중이라면 $obj->title 로 타이틀을 얻어낼 수 있습니다.
$obj->title = '[BEST] '.$obj->title;
)
스킨에서 하면 어차피 voted_count 와 blamed_count 등의 각종 변수들이 주어져 있으니
스킨 list 나 view_document 에서
( list 에서는 $document->get('voted_count') , view_document 에서는 $oDocument->get('voted_count') )
<span cond="$oDocument->get('voted_count')>=3">BEST</span>
정도만 추가해 줘도 될거 같구요.
게시판별로 따로 하고 싶으면 skin.xml 수정하신뒤 아래와 같이...
skin.xml
<var name="disp_voted_best" type="select">
<title xml:lang="ko">추천수에 따라 제목에 BEST 출력하기</title>
<description xml:lang="ko">
설명...블라블라블라..
</description>
<options value="N">
<title xml:lang="ko">적용하지 않음.</title>
</options>
<options value="Y">
<title xml:lang="ko">적용</title>
</options>
</var>
옵션을 더 추가해 voted_count 수도 스킨설정에서 입력받게 해도 되구요.
문제는 모바일도 똑같이 해줘야 해서 귀찮긴 하지만..
<span cond="$module_info->disp_voted_best=='Y' && $oDocument->get('voted_count')>=3">BEST</span>