비 로그인자 에게만 노출권한을 주는 메뉴 만들기 안될까요 ??
CMS/프레임워크 | Rhymix 1.9 |
---|---|
개발 언어 | PHP 7.3 |
참고로 아래글을 링크 합니다.
왜 권한에 비로그인자에게만 주는 권한이 없을까요??
https://xetown.com/topics/299813
결국은 같은 의미일 것 입니다.
비로그인에게는 노출되지만 로그인을 하면 보이지 않는 메뉴를 만들수 없을까요 ??
상기 링크에서는 많은 의견이 소통 되었지만
결론이 없는것 같아서요
지금은 뭔가 구현할 방도가 있을것 같아서 질문을 드립니다.
다른질문 하단에 올렸다가
읽어 주시지 않는것같고 또 주제가 다른것 같아 새로 문의글 올립니다.
댓글 27
개인적인 케이스로는 메뉴에 로그인,비로그인의 경우 보이고 안보이게 하는 것은 먼저 질문하신 글의 댓글로 답변받으신 방법으로 메뉴 출력 반복문에 조건을 걸면 된다고 생각하구요.
이 것과 약간 다른 케이스로 저희는 일부 권한을 가진(사업자) 회원은 일반 게시판에 글,과 댓글을 작성하지 못하도록 그룹으로 글쓰기,댓글쓰기를 제한하는 애드온을 만들어 사용하고 있습니다. (저 문제에 관해 글을 쓸 당시는 애드온을 만들 능력이 안되는 상황이었고 지금은 어찌어찌 다른 것을 수정해서 만들 수 있게 되서...)
https://rxtip.kr/download/598
접근을 제한하려면 위 애드온의 act 부분을 바꾸면 될 것입니다.
메뉴에서만 안보이게 하는 것은 먼저 받으신 답변으로 되실 겁니다.(이건 메뉴를 통하지 않고 주소를 알고 접근하면 열람이 가능해지죠.)
결론은 됩니다. 어렵지도 않고요.
레이아웃에서 메뉴출력하는 부분에 조건문 하나 걸으시면되요
로그인시 숨겨질 메뉴의 mid값 + is_logged을 이용한 조건문 걸면됩니다.
여기에 직접 들어갈경우를 대비해 js스크립트도 하나 넣어주면
약간은 부실하지만 접근제한까지도 가능할거에요.
이방법의 문제점은 레이아웃을 매번 직접수정해야한다는점입니다.
답변 고맙습니다.
괜챦으시다면
"로그인시 숨겨질 메뉴의 mid값 + is_logged을 이용한 조건문"
하나 만들어 주시면 안될까요 ??
실력이 딸려서 만들줄 몰라서 그럽니다 ^^~
혹시나 하고 다른질문에서 다른경우에 해당하는
것을 무식하게 해봤더니 안됩니다
<a cond="$val1['href'] != '/권한없음출력되는MID' || !Context::get('is_logged')" href="{$val1['href']}"
https://xetown.com/questions/1476602
레이아웃은 SKECHBOOK5를 쓰고 있으며
레이아웃의 메뉴에 해당하는 소스 원본은 다음과 같습니다
<!--// 메인 메뉴 영역 -->
<div id="gnb_wrp" class="clear">
<!--// 검색 -->
<div id="site_srch" class="srch">
<form action="{getUrl()}" method="get">
<input type="hidden" name="vid" value="{$vid}" />
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="act" value="IS" />
<input type="text" name="is_keyword" value="{$is_keyword}" title="{$lang->cmd_search}" class="itx css3pie" accesskey="S" />
<input type="image" src="/img/bs_{$layout_info->colorset}.png" alt="Search" class="is" />
</form>
</div>
<!-- GNB -->
<ul id="gnb" class="ui_font">
{@$_idx = 0}
<li loop="$main_menu->list=>$key1,$val1" cond="$val1['link']" class="li1<!--@if($_idx > 3)--> m_li1_tg<!--@end-->">
<a class="a1 {$_colorset_list[$_idx]}<!--@if($val1['selected'])--> on<!--@end-->" href="{$val1['href']}" target="_blank"|cond="$val1['open_window']=='Y'">{$val1['link']}</a>
<block cond="$val1['list']">
<button type="button" class="tg_ul2 m_yes_inline"><strong>−</strong><span>+</span></button>
<ul class="ul2">
<li loop="$val1['list']=>$key2,$val2" cond="$val2['link']" class="li2<!--@if($val2['selected'])--> on<!--@end-->">
<a class="a2" href="{$val2['href']}" target="_blank"|cond="$val2['open_window']=='Y'">{$val2['link']}<b cond="$val2['list']">+</b></a>
<ul cond="$val2['list']" class="ul3">
<li loop="$val2['list']=>$key3,$val3" cond="$val3['link']"><a class="a3<!--@if($val3['selected'])--> on<!--@end-->" href="{$val3['href']}" target="_blank"|cond="$val3['open_window']=='Y'">{$val3['link']}</a></li>
</ul>
</li>
<li><button type="button" class="close_ul2 m_yes">{$lang->cmd_close}</button></li>
</ul>
</block>
{@$_idx++}
</li>
</ul>
<div cond="$_idx > 4" id="gnb_next" class="m_yes"><button type="button"><strong>◀</strong><span>▶</span></button>
<style type="text/css">
@media screen and (max-width:533px){
#gnb_wrp{padding-right:10px}
}
</style>
</div>
</div>
</div>
1차메뉴라면
지금 걸려있는 조건 cond="$val1['link']" 을
cond="$val1['link'] && ($val1['href'] != '/BAORDNAME' || !Context::get('is_logged'))"
이렇게 해보라는 답변 같습니다.
2,3차 메뉴라면 똑같이 보고 응용.
번거롭게 해드리는것 같아 죄송 합니다만
꼭찝어 하나 해 주시면 안될까요 ??
이리 해봐도 안되고 저리 해봐도 안되서요 ㅠㅠ
레이아웃 원본소스는 위에 있구요
사이트는 http://wellhouse.kr 이구요
테스트 이메일은 test@test.com PW = 1101 입니다
작업을 해야하는데 진도가 안나가서 안절부절 입니다
부탁 드립니다
지금 꼭 찝어서 작성해 드렸는데 어떻게 했는데 안된다는 정보가 없이 어떻게 더 알려드리죠??
해당 메뉴가 1차메뉴에 있나요? 2차 메뉴에 있나요?
어디를 어떻게 고치셨나요?
아래 현재 긴주소 사용하실때는 답변내용에서 바뀌어야 할 부분도 확인하셨나요?
그리고 지금 올려주신 소스는 GNB(메인메뉴) 인데
지금 사이트를 방문해서 보면 적용하려고 하시는 곳은 LNB(측면 메뉴) 아니신가요?
GNB 소스에 적용해서 안된다고 하시는건 아닌지요.
도저히 반응이 없어서
메인메뉴에 1차메뉴 ( 로그인전 ) 하나를 만들어 이렇게
수정 해 보았는데 안되어서요
<!-- GNB -->
<ul id="gnb" class="ui_font">
{@$_idx = 0}
<li loop="$main_menu->list=>$key1,$val1" cond="$val1['href'] != '/index.php?mid=LOGINJUN' || !Context::get('is_logged')" href="{$val1['href']}" class="li1<!--@if($_idx > 3)--> m_li1_tg<!--@end-->">
<a class="a1 {$_colorset_list[$_idx]}<!--@if($val1['selected'])--> on<!--@end-->" href="{$val1['href']}" target="_blank"|cond="$val1['open_window']=='Y'">{$val1['link']}</a>
<block cond="$val1['list']">
<!-- GNB -->
<ul id="gnb" class="ui_font">
{@$_idx = 0}
<li loop="$main_menu->list=>$key1,$val1" cond="$val1['link'] && ($val1['href'] != '/index.php?mid=LOGINJUN' )" href="{$val1['href']}" class="li1<!--@if($_idx > 3)--> m_li1_tg<!--@end-->">
<a class="a1 {$_colorset_list[$_idx]}<!--@if($val1['selected'])--> on<!--@end-->" href="{$val1['href']}" target="_blank"|cond="$val1['open_window']=='Y'">{$val1['link']}</a>
이렇게 했는데 아무 반응이 없습니다
<li loop> {$val1['href']} <-- 요거 잠시 넣고 어떻게 출력되는지 확인해주세요. <a ~~~`
<!-- GNB -->
<ul id="gnb" class="ui_font">
{@$_idx = 0}
<li loop="$main_menu->list=>$key1,$val1" cond="$val1['href'] != '/index.php?mid=LOGINJUN' " href="{$val1['href']}" class="li1<!--@if($_idx > 3)--> m_li1_tg<!--@end-->">
<a <li loop> {$val1['href']} class="a1 {$_colorset_list[$_idx]}<!--@if($val1['selected'])--> on<!--@end-->" href="{$val1['href']}" target="_blank"|cond="$val1['open_window']=='Y'">{$val1['link']}</a>
이렇게 했더니 이렇게 됩니다
관리자 이메일을 드릴까요 ???
cond="$val1['link'] && ($val1['href'] != 'https://wellhouse.kr/index.php?mid=LOGINJUN' || !Context::get('is_logged'))"
이렇게 한번 해보시고 비교해보면 어떨까요...
이렇게 하니 됩니다
햐~
긴시간 고맙습니다.
같은 차수에 여러개를 적용해야 하신다면
$val1['href'] != 'https://wellhouse.kr/index.php?mid=LOGINJUN' 를 || 로 구분해서 반복하시면 될겁니다.
뭐 때문에 안되는지 디버깅은 이런식으로 하시면 앞으로 스스로 하실 수 있는게 더 많아질겁니다.
네 잘 알겠습니다
로그인전
로그인후
고맙습니다 편한 저녁 되세요 ^^~
답변 주신것을 응용해서
1차메뉴 팝업2차메뉴 2차 좌측메뉴 다 적용되는걸 확인 했습니다
그런데 여러개 적용이 잘 안되네요
$val1['href'] != 'https://wellhouse.kr/index.php?mid=LOGINJUN' ||
어디에서 어디까지를 반복해야 되는걸까요
$val1['href'] != 'https://wellhouse.kr/index.php?mid=LOGINJUN' ||
'https://wellhouse.kr/index.php?mid=well_town' ||
이렇게는 안됩니다
$val1['href'] != 'https://wellhouse.kr/index.php?mid=LOGINJUN',
'https://wellhouse.kr/index.php?mid=well_town' ||
이것도 안됩니다
아.. 안되는군요. 그럼
cond="$val1['link'] && (($val1['href'] != 'https://wellhouse.kr/index.php?mid=LOGINJUN' && $val1['href'] != 'https://wellhouse.kr/index.php?mid=abcd) || !Context::get('is_logged'))"
이런식으로 해보세요. 여러개를 괄호 안에 && 으로 묶어서요.
머리에 쥐가 나는것 같고 집중이 안되어
엇저녁엔 그냥자고
새벽에 일어나서 다시 해보다가 얼떨결에 해결 했습니다.
쭈욱 고맙네요 ^^
cond="($val1['href'] != 'https://wellhouse.kr/index.php?mid=LOGINJUN' && $val1['href'] != 'https://wellhouse.kr/index.php?mid=well_town' ) || !Context::get('is_logged')"
메뉴에선 mid 명을 고려할 수 없을 거에요. 그래서 메뉴가 가진 정보로 콘트롤 할 수 밖에 없을 겁니다.
Context::get('mid') 는 지금 현재 페이지의 mid를 파악하는데 사용할 수 밖에 없죠.
그리고 지금 잘 안되시는 이유가 짧은주소를 사용하지 않으셔서 그럴겁니다.
짧은주소 사용으로 설정을 하시던지 지금처럼 굳이 긴주소를 유지하실 거라면
답변에서 /BAORDNAME 이
/index.php?mid=board 이런식으로 바뀌어야 합니다.