묻고답하기
레벨아이콘 출력 애드온 수정
2014.02.15 02:54
질문의 요지는 레벨아이콘 출력 애드온을 수정하여
특정회원을 레벨아이콘이 아닌 다른 아이콘을 출력하고싶습니다.
예를들면 1~99레벨 아이콘이 아닌 관리자 아이콘을 넣고자 하는것이 목적입니다.
현재는 point_level_icon.lib 파일 레벨아이콘 위치를 구하는 부분 하단에
$oMemberModel = &getModel('member');
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
if ($member_info->user_id=="staff")
{ $level_icon = "./modules/point/icons/default/100.gif"; }
else
이렇게 회원 아이디를 넣는 방법으로 추가해서 사용하고 있습니다.
그런데 스텝이 여러명이고 자주 바뀌는터라, 바뀔때마다 자꾸 이 파일을 수정하려니 미치겠어요 ㅠㅠㅠㅠㅠㅠㅠ
그래서 애드온자체를 수정해서 좀 편하게 해보고 싶습니다. 제발..... ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
일단 아래의 내용을 info에 적당히 추가해주었습니다.
<extra_vars>
<var name="staff">
<title xml:lang="ko">회원 ID</title>
<description xml:lang="ko">선택하신 회원에 적용 됩니다.
회원 ID를 여러개 쓰려면
,(콤마)로 연결하여 입력하세요.
(예 : 아이디1,아이디2,아이디3)
</description>
</var>
</extra_vars>
그리고 point_level_icon.lib 에 다음과 같이 추가하였습니다. (하지만...전혀 동작하지 않음)
<?php
/**
* @brief 포인트 아이콘 변경을 위한 함수.
**/
function pointLevelIconTrans($matches) {
$member_srl = $matches[3];
if($member_srl<1) return $matches[0];
if(!isset($GLOBALS['_pointLevelIcon'][$member_srl])) {
// 포인트 설정을 구해옴
if(!$GLOBALS['_pointConfig']) {
$oModuleModel = &getModel('module');
$GLOBALS['_pointConfig'] = $oModuleModel->getModuleConfig('point');
}
$config = $GLOBALS['_pointConfig'];
// 포인트 모델을 구해 놓음
if(!$GLOBALS['_pointModel']) $GLOBALS['_pointModel'] = getModel('point');
$oPointModel = &$GLOBALS['_pointModel'];
// 포인트를 구함
$point = $oPointModel->getPoint($member_srl);
// 레벨을 구함
$level = $oPointModel->getLevel($point, $config->level_step);
$text = $matches[5];
// 레벨 아이콘의 위치를 구함
$level_icon = sprintf('%smodules/point/icons/%s/%d.gif', Context::getRequestUri(), $config->level_icon, $level);
$oMemberModel = &getModel('member');
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
$tmp_ids = explode(",", $addon_info->staff);
if(in_array($member_info->user_id, $tmp_ids))
{ $level_icon = "./modules/point/icons/default/100.gif"; }
else
// 최고 레벨이 아니면 다음 레벨로 가기 위한 per을 구함 :: 주석과 실제 내용이 맞지 않아 실제 내용을 수정
if($level < $config->max_level) {
$next_point = $config->level_step[$level+1];
$present_point = $config->level_step[$level];
if($next_point > 0) {
$per = (int)(($point - $present_point) / ($next_point - $present_point)*100);
$per = $per.'%';
}
}
$title = sprintf('%s:%s%s%s, %s:%s/%s', Context::getLang('point'), $point, $config->point_name, $per?' ('.$per.')':'', Context::getLang('level'), $level, $config->max_level);
$alt = sprintf('[%s:%s]', Context::getLang('level'), $level);
$GLOBALS['_pointLevelIcon'][$member_srl] = sprintf('<img src="%s" alt="%s" title="%s" style="vertical-align:middle; margin-right:3px;" />', $level_icon, $alt, $title);
}
$text = $GLOBALS['_pointLevelIcon'][$member_srl];
$orig_text = preg_replace('/'.preg_quote($matches[5],'/').'<\/'.$matches[6].'>$/', '', $matches[0]);
return $orig_text.$text.$matches[5].'</'.$matches[6].'>';
}
?>
부디 조언부탁드립니다.
$oMemberModel = &getModel('member');
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
if(in_array($member_info->user_id, $GLOBALS['staff_ids']))