위젯을 만들다 보면 회원그룹별로 위젯 노출을 선택해야 하는 경우가 생깁니다.
그런 경우 그룹별로 변수를 주어서 그룹을 칸에 작성하는 방법으로 적용 했었는데
그룹의 이름을 알아야 하고 그룹이 많은 경우 불편했습니다.
[위젯샘플명을 mh_widget 이라고 가정하고 진행]
1. widgets/mh_widget/mh_widget.class.php 파일을 열어서 적당한 위치에 아래 코드를 붙여 넣기 합니다.
//회원그룹 권한 확인
if(Context::get('is_logged'))
{
$logged_info = Context::get('logged_info');
if(!$args->group_srls)
{
$widget_info->permission = true;
}
else
{
$widget_info->permission = false;
$group_array = explode (',', $args->group_srls);
foreach($logged_info->group_list as $key => $value)
{
if(in_array($key, $group_array))
{
$widget_info->permission = true;
break;
}
}
}
}
2. widgets/mh_widget/conf/info.xml 파일을 열어서 적당한 위치에 아래 코드를 붙여 넣기 합니다.
<type>select</type>
<name xml:lang="ko">Group지정별 표시</name>
<description xml:lang="ko">Group을 지정해서 위젯의 노출을 나타냅니다.</description>
<options>
<value></value>
<name xml:lang="ko">Group지정안함(기본)</name>
</options>
<options>
<value>Y</value>
<name xml:lang="ko">Group지정사용</name>
</options>
</var>
<var id="group_srls">
<type>member_group</type>
<name xml:lang="ko"> ┖ Group지정사용시 선택한 그룹만 노출</name>
<description xml:lang="ko">선택한 그룹의 사용자에게만 노출 됩니다. (선택하지 않으면 모든 그룹 노출 가능)</description>
</var>
<var id="point_p">
<type>text</type>
<name xml:lang="ko"> ┖ Group지정안함시 포인트로 노출설정</name>
<description xml:lang="ko">Group지정하지 않고 지정한 포인트이상에서만 위젯이 노출됩니다.(기본 0)</description>
</var>
<var id="level_p">
<type>text</type>
<name xml:lang="ko"> ┖ Group지정안함시 레벨로 노출설정</name>
<description xml:lang="ko">Group지정하지 않고 지정한 레벨이상에서만 위젯이 노출됩니다.(기본 0)</description>
</var>
3. widgets/mh_widget/skins/mh_skin/list.html 파일을 열어서
<!-- 그룹적용 -->
<!--@if($is_logged)-->
<!--@if($widget_info->permission)-->
위젯내용 코드
<!--@end-->
<!--@end-->
<!--@else-->
<!-- 그룹적용안함 -->
{@ $oPointModel = &getModel('point'); $point = $oPointModel->getPoint($logged_info->member_srl); $oModuleModel = &getModel('module'); $config = $oModuleModel->getModuleConfig('point'); $level = $oPointModel->getLevel($point, $config->level_step); }
<!--@if($point < "{$widget_info->point_p}" || $level < "{$widget_info->level_p}" )--><!--@else-->
위젯내용 코드
<!--@end-->
<!--@end-->
원래의 "위젯내용 코드"를 위와 같이 감싸주면 됩니다.
"Group지정안함"으로 선택하면 모든이에게 노출 되고, Group지정안함시 "포인트" "레벨"로도 노출이 가능합니다.
"Group지정사용"으로 선택하고 아래에 있는 그룹들을 지정하면 선택된 그룹에게만 노출됩니다.
그룹을 선택하지 않으면 로그인한 모든 그룹에게 노출됩니다.