latest_newpost 수정하여 레벨별 열람 제한 두기
짧은주소
- - 짧은주소: http://v2.eyoom.net/bbs/?t=184 주소복사
본문
질답게시판에 해주신 질문을 토대로 한번 만들어 보았습니다.
새글보기 스킨에서 view_level 옵션 지정시 비회원이나 회원의 그누 레벨에 따라서 새글을 열람 할지 제한 할 지 정하는 루틴입니다.
우선 수정할 파일은
eyoom/classes/latest.class.php 파일입니다.
문자열 검색하셔서 [ 이미지 세로 사이즈를 ] 를 검색하셔서
// 이미지 세로사이즈
if($optset['img_height']) $this->img_height = $optset['img_height']; else $this->img_height = '0';
가 나오면 다음에 아래와 같이 추가 해줍니다.
// 특정레벨 이상 출력 가능
if($optset['view_level']) $this->view_level = $optset['view_level'];
그런다음 다시 문자열 검색 하셔서 [ // 스킨파일 위치에 출력하기 ] 혹은 latest_print 함수를 검색 하셔서 찾으셨다면 아래와 같이 수정 해줍니다.
수정전
// 스킨파일 위치에 출력하기
protected function latest_print($skin, $arr, $mode='single', $folder='latest') {
global $tpl, $tpl_name, $board;
if(!$mode) $mode='single';
if(!$folder) $folder='latest';
$tpl->define_template($folder,$skin,'latest.skin.html');
if($this->header_title) $tpl->assign(array('title' => $this->header_title));
$tpl->assign(array(
'bo_table' => $this->bo_table,
'photo' => $this->photo,
'content' => $this->content,
'cols' => $this->cols,
));
if($mode=='single') {
$tpl->assign(array(
'loop' => $arr,
));
} else if($mode='multiple') {
$tpl->assign($arr);
}
$tpl->print_($tpl_name);
}
수정후
좋아요!
Progress Bar 90%
댓글목록
꼬마별님의 댓글
오!! 감사합니다~~~!!!
나오키님의 댓글
아직 수정중입니다 ㅠㅠ 글 쓰다보니 소스에 포함되어선 안될 문자열이 포함된것 같아서요 수정 다 하면 다시 읽어 주시기 바랍니다 ㅠ
꼬마별님의 댓글
댓글을 너무 빨리달았나봅니다 ㅎㅎ;;
나오키님의 댓글
수정후
// 스킨파일 위치에 출력하기
protected function latest_print($skin, $arr, $mode='single', $folder='latest') {
global $tpl, $tpl_name, $board, $member;
if(!$mode) $mode='single';
if(!$folder) $folder='latest';
$tpl->define_template($folder,$skin,'latest.skin.html');
if($this->header_title) $tpl->assign(array('title' => $this->header_title));
$tpl->assign(array(
'bo_table' => $this->bo_table,
'photo' => $this->photo,
'view_level' => $this->view_level,
'login_level' => $member['mb_level'],
'content' => $this->content,
'cols' => $this->cols,
));
if($mode=='single') {
$tpl->assign(array(
'loop' => $arr,
));
} else if($mode='multiple') {
$tpl->assign($arr);
}
$tpl->print_($tpl_name);
}
자 이제 클래스 수정은 모두 끝났습니다.
이제부터는 스킨 파일을 수정 해주면 됩니다.
스킨파일은 eyoom/theme/basic/skin_bs/newpost/accordion/latest.skin.html 파일을 수정 해주시면 됩니다.
수정전
<div class="panel-group acc-v1" id="accordion-1">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion-1" href="#collapse-One">
<i class="fa fa-file-text-o"></i> 새로 등록된 글
<i class="fa fa-sort pull-right"></i>
</a>
</h4>
</div>
<div id="collapse-One" class="panel-collapse collapse in">
<!--New Post-->
<div class="panel panel-basic-bs">
<ul {? !C.G5_IS_MOBILE}id="scrollbar"{/} class="list-unstyled{? !C.G5_IS_MOBILE} contentHolder{:} contentMobile{/} margin-bottom-20">
<!--{@ write}-->
<li class="new-post">
<a href="{.href}">
<!--{? photo == 'y'}-->
<div class="post-photo"><!--{? .mb_photo}-->{.mb_photo}<!--{:}--><span class="user_icon"><i class="fa fa-user"></i></span><!--{/}--></div>
<!--{/}-->
<div class="overflow-h">
<span class="post-subject">
{.wr_subject}
</span>
<div class="margin-hr-5"></div>
<!--{? content == 'y'}-->
<span>
<p>{.wr_content}</p>
</span>
<!--{/}-->
<small><strong class="color-black"><i class="fa fa-user"></i> {.mb_nick}</strong></small>
<small><i class="fa fa-clock-o"></i> {eb->date_time('Y-m-d H:i',.datetime)}</small>
<small><!--{? .wr_comment}--><i class="fa fa-comments color-red"> {.wr_comment}</i><!--{/}--></small>
<small><i class="fa fa-eye"></i> {=number_format(.wr_hit)}</small>
</div>
</a>
</li>
<!--{/}-->
</ul>
</div>
<!--End New Post-->
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion-1" href="#collapse-Two">
<i class="fa fa-comments-o"></i> 새로 등록된 댓글
<i class="fa fa-sort pull-right"></i>
</a>
</h4>
</div>
<div id="collapse-Two" class="panel-collapse collapse">
<!--New Post-->
<div class="panel panel-basic-bs">
<ul {? !C.G5_IS_MOBILE}id="scrollbar"{/} class="list-unstyled{? !C.G5_IS_MOBILE} contentHolder{:} contentMobile{/} margin-bottom-20">
<!--{@ comment}-->
<li class="new-post">
<a href="{.href}">
<!--{? photo == 'y'}-->
<div class="post-photo"><!--{? .mb_photo}-->{.mb_photo}<!--{:}--><span class="user_icon"><i class="fa fa-user"></i></span><!--{/}--></div>
<!--{/}-->
<div class="overflow-h">
<span>{.wr_subject}</span>
<div class="margin-hr-5"></div>
<small><strong class="color-dark"><i class="fa fa-user"></i> {.mb_nick}</strong></small>
<small><i class="fa fa-clock-o"></i> {eb->date_time('Y-m-d H:i',.datetime)}</small>
</div>
</a>
</li>
<!--{/}-->
</ul>
</div>
<!--End New Post-->
</div>
</div>
</div>
수정 후
<div class="panel-group acc-v1" id="accordion-1">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion-1" href="#collapse-One">
<i class="fa fa-file-text-o"></i> 새로 등록된 글
<i class="fa fa-sort pull-right"></i>
</a>
</h4>
</div>
<div id="collapse-One" class="panel-collapse collapse in">
<!--New Post-->
<div class="panel panel-basic-bs">
<ul {? !C.G5_IS_MOBILE}id="scrollbar"{/} class="list-unstyled{? !C.G5_IS_MOBILE} contentHolder{:} contentMobile{/} margin-bottom-20">
<!--{? login_level >= view_level}-->
<!--{@ write}-->
<li class="new-post">
<a href="{.href}">
<!--{? photo == 'y'}-->
<div class="post-photo"><!--{? .mb_photo}-->{.mb_photo}<!--{:}--><span class="user_icon"><i class="fa fa-user"></i></span><!--{/}--></div>
<!--{/}-->
<div class="overflow-h">
<span class="post-subject">
{.wr_subject}
</span>
<div class="margin-hr-5"></div>
<!--{? content == 'y'}-->
<span>
<p>{.wr_content}</p>
</span>
<!--{/}-->
<small><strong class="color-black"><i class="fa fa-user"></i> {.mb_nick}</strong></small>
<small><i class="fa fa-clock-o"></i> {eb->date_time('Y-m-d H:i',.datetime)}</small>
<small><!--{? .wr_comment}--><i class="fa fa-comments color-red"> {.wr_comment}</i><!--{/}--></small>
<small><i class="fa fa-eye"></i> {=number_format(.wr_hit)}</small>
</div>
</a>
</li>
<!--{/}-->
<!--{:}-->
<li class="new-post">
레벨이 낮아 새글을 볼 수 없습니다.
</li>
<!--{/}-->
</ul>
</div>
<!--End New Post-->
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion-1" href="#collapse-Two">
<i class="fa fa-comments-o"></i> 새로 등록된 댓글
<i class="fa fa-sort pull-right"></i>
</a>
</h4>
</div>
<div id="collapse-Two" class="panel-collapse collapse">
<!--New Post-->
<div class="panel panel-basic-bs">
<ul {? !C.G5_IS_MOBILE}id="scrollbar"{/} class="list-unstyled{? !C.G5_IS_MOBILE} contentHolder{:} contentMobile{/} margin-bottom-20">
<!--{? login_level >= view_level}-->
<!--{@ comment}-->
<li class="new-post">
<a href="{.href}">
<!--{? photo == 'y'}-->
<div class="post-photo"><!--{? .mb_photo}-->{.mb_photo}<!--{:}--><span class="user_icon"><i class="fa fa-user"></i></span><!--{/}--></div>
<!--{/}-->
<div class="overflow-h">
<span>{.wr_subject}</span>
<div class="margin-hr-5"></div>
<small><strong class="color-dark"><i class="fa fa-user"></i> {.mb_nick}</strong></small>
<small><i class="fa fa-clock-o"></i> {eb->date_time('Y-m-d H:i',.datetime)}</small>
</div>
</a>
</li>
<!--{/}-->
<!--{:}-->
<li class="new-post">
레벨이 낮아 새댓글을 볼 수 없습니다.
</li>
<!--{/}-->
</ul>
</div>
<!--End New Post-->
</div>
</div>
</div>
나오키님의 댓글
무엇이 바뀌었느냐
스킨 파일에서 새글과 새댓글 부분에 루프문( <!--{@ write}--> )의 겉에 비교연산으로( <!--{? login_level >= view_level}--> )을 넣어주고
루프문의 끝( <!--{/}--> ) 다음에 아래 부분을 추가하여 예외 상황에 레벨이 낮아 새글을 볼 수 없다는 메세지를 출력 해줍니다.
<!--{:}-->
<li class="new-post">
레벨이 낮아 새글을 볼 수 없습니다.
</li>
<!--{/}-->
우선 좀 야매스럽게 기능 추가를 해보았습니다.
사용법은
<!--{latest->latest_newpost('accordion', 'count=10||cut_subject=20||cut_content=50||photo=y||content=y||view_level=4')}-->
처럼 옵션의 맨 끝에 view_level=숫자 의 형식으로 추가 해주시면 됩니다.
이윰님께서 검토 해보시고 괜찮게 쓰일 수 있는 기능이라 생각 되시면 좀 더 보강을 해서 다음 업데이트에 추가 해주실수도 있을거라 생각 됩니다 ^^
그럼 좋은 결과 있으시기 바랍니다.