리스트아래에 있는 SKY님과 BlueGATE님의 팁을 종합해서
그룹별, 포인트별, 레벨별로 위젯의 유.무를 나타나게 정리했습니다.
위젯을 만들때 참조하시라고 작성하는 글인 만큼 초보분들에게는 쉽지는 않을 것입니다.
먼저 바꾸어 보고자 하는 위젯(예; widgets/newest_document)의
1. newest_document.class.php를 불러와 아래의 소스를 추가해줍니다.
//그룹지정
$widget_info->group = $args->group;
if(!$widget_info->group) $widget_info->group = '';
// 포인트
$widget_info->point = (int)$args->point;
if(!$widget_info->point) $widget_info->point = 0;
// 레벨
$widget_info->level = (int)$args->level;
if(!$widget_info->level) $widget_info->level = 0;
// 노출 여부 체크
if($args->select_view!='Y') $widget_info->select_view = 'N';
else $widget_info->select_view = 'Y';
$widget_info->group = $args->group;
if(!$widget_info->group) $widget_info->group = '';
// 포인트
$widget_info->point = (int)$args->point;
if(!$widget_info->point) $widget_info->point = 0;
// 레벨
$widget_info->level = (int)$args->level;
if(!$widget_info->level) $widget_info->level = 0;
// 노출 여부 체크
if($args->select_view!='Y') $widget_info->select_view = 'N';
else $widget_info->select_view = 'Y';
2. widgets/newest_document/conf/info.xml파일을 불러와서 아래의 소스를 추가해줍니다.
<var id="select_view">
<type>select</type>
<name xml:lang="ko">선택별 표시</name>
<description xml:lang="ko">그룹,포인트,레벨을 지정해서 위젯의 유무를 나타냅니다.</description>
<options>
<value>Y</value>
<name xml:lang="ko">표시</name>
</options>
<options>
<value>N</value>
<name xml:lang="ko">표시하지 않음</name>
</options>
</var>
<var id="group">
<type>text</type>
<name xml:lang="ko">그룹지정</name>
<description xml:lang="ko">지정한 그룹이면 위젯이 나타납니다.</description>
</var>
<var id="point">
<type>text</type>
<name xml:lang="ko">포인트</name>
<description xml:lang="ko">포인트를 지정해서 위젯의 유무를 나타냅니다. (기본은 누구나)</description>
</var>
<var id="level">
<type>text</type>
<name xml:lang="ko">회원레벨</name>
<description xml:lang="ko">회원레벨를 지정해서 위젯의 유무를 나타냅니다. (기본은 누구나)</description>
</var>
<type>select</type>
<name xml:lang="ko">선택별 표시</name>
<description xml:lang="ko">그룹,포인트,레벨을 지정해서 위젯의 유무를 나타냅니다.</description>
<options>
<value>Y</value>
<name xml:lang="ko">표시</name>
</options>
<options>
<value>N</value>
<name xml:lang="ko">표시하지 않음</name>
</options>
</var>
<var id="group">
<type>text</type>
<name xml:lang="ko">그룹지정</name>
<description xml:lang="ko">지정한 그룹이면 위젯이 나타납니다.</description>
</var>
<var id="point">
<type>text</type>
<name xml:lang="ko">포인트</name>
<description xml:lang="ko">포인트를 지정해서 위젯의 유무를 나타냅니다. (기본은 누구나)</description>
</var>
<var id="level">
<type>text</type>
<name xml:lang="ko">회원레벨</name>
<description xml:lang="ko">회원레벨를 지정해서 위젯의 유무를 나타냅니다. (기본은 누구나)</description>
</var>
3. widgets/newest_document/skins/xe_official/list.html파일을 불러와서 아래와 같이 배치합니다.
<!--@if($widget_info->select_view == 'Y')-->
<!--@ foreach($logged_info->group_list as $g)-->
<!--@ if($g == $widget_info->group || $g == '관리그룹')-->
{@ $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 || $level < $widget_info->level)--><!--@else-->
<div class="latest_{$colorset}">
- 내용생략 -
</div>
<!--@end-->
<!--@end-->
<!--@end--><!--@else-->
<div class="latest_{$colorset}">
- 내용생략 -
</div>
<!--@end-->
<!--@ foreach($logged_info->group_list as $g)-->
<!--@ if($g == $widget_info->group || $g == '관리그룹')-->
{@ $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 || $level < $widget_info->level)--><!--@else-->
<div class="latest_{$colorset}">
- 내용생략 -
</div>
<!--@end-->
<!--@end-->
<!--@end--><!--@else-->
<div class="latest_{$colorset}">
- 내용생략 -
</div>
<!--@end-->
칼라부분들이 추가된 부분입니다.
칼라별로 선택을 하시면 해당기능만 적용시킬 수 있으니 자신에게 맞게끔 응용하시며 됩니다.
특히 파란색부분인 선택적으로 유.무를 나타나게 할려고 하니 아무래도 내용부분이 두번 들어가서 소스가 무척 길어질 것입니다.
두껍게 선택된 부분들이 그룹,포인트,레벨을 지정하는 함수부분입니다.
위의 소스에서는 관리그룹은 항상 나타나게끔 적용되어져 있는데 필요없으시면 보라색부분 || $g == '관리그룹' 를 지우시면 됩니다.
아니면 다른 그룹을 적어주셔도 되고요.
샘플로 예전에 제가 만든 "최신글멀티카멜레온위젯"에 위의 팁을 적용한 것을 올립니다.mh_multi.zip