참고로 아래글을  링크  합니다.

왜 권한에 비로그인자에게만 주는 권한이 없을까요??

https://xetown.com/topics/299813

 

결국은  같은  의미일  것  입니다.

비로그인에게는 노출되지만  로그인을  하면  보이지  않는  메뉴를 만들수  없을까요  ??

 

상기  링크에서는  많은  의견이 소통  되었지만

결론이   없는것  같아서요

지금은  뭔가  구현할  방도가  있을것  같아서  질문을  드립니다.

 

다른질문  하단에   올렸다가

읽어  주시지  않는것같고  또  주제가  다른것  같아   새로  문의글   올립니다.

 

 

  • profile

    개인적인 케이스로는 메뉴에 로그인,비로그인의 경우 보이고 안보이게 하는 것은 먼저 질문하신 글의 댓글로 답변받으신 방법으로  메뉴 출력 반복문에 조건을 걸면 된다고 생각하구요.

    이 것과 약간 다른 케이스로 저희는 일부 권한을 가진(사업자) 회원은 일반 게시판에 글,과 댓글을 작성하지 못하도록 그룹으로 글쓰기,댓글쓰기를 제한하는 애드온을 만들어 사용하고 있습니다. (저 문제에 관해 글을 쓸 당시는 애드온을 만들 능력이 안되는 상황이었고 지금은 어찌어찌 다른 것을 수정해서 만들 수 있게 되서...)

    https://rxtip.kr/download/598

    접근을 제한하려면 위 애드온의 act 부분을 바꾸면 될 것입니다.


    메뉴에서만 안보이게 하는 것은 먼저 받으신 답변으로 되실 겁니다.(이건 메뉴를 통하지 않고 주소를 알고 접근하면 열람이 가능해지죠.)

  • profile profile
    답변 고맙습니다
  • profile
    전 비로그인용 사이트맵을 따로 만들고 레이아웃에서 비로그인시 <!--@if(!$is_logged)-->로 해당 사이트맵 보이도록 처리해서 사용중입니다.
  • profile profile
    답변 고맙습니다
  • ?

    결론은 됩니다. 어렵지도 않고요.

    레이아웃에서 메뉴출력하는 부분에 조건문 하나 걸으시면되요
    로그인시 숨겨질 메뉴의 mid값 + is_logged을 이용한 조건문 걸면됩니다.

    여기에 직접 들어갈경우를 대비해 js스크립트도 하나 넣어주면

    약간은 부실하지만 접근제한까지도 가능할거에요.

     

    이방법의 문제점은 레이아웃을 매번 직접수정해야한다는점입니다.

  • ? profile

    답변 고맙습니다.

    괜챦으시다면
    "로그인시 숨겨질 메뉴의 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>&minus;</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>
     

  • profile profile

    1차메뉴라면

    지금 걸려있는 조건 cond="$val1['link']" 을

    cond="$val1['link'] && ($val1['href'] != '/BAORDNAME' || !Context::get('is_logged'))"

    이렇게 해보라는 답변 같습니다.

     

    2,3차 메뉴라면 똑같이 보고 응용.

  • profile profile

    번거롭게  해드리는것  같아  죄송  합니다만
    꼭찝어  하나  해  주시면  안될까요  ??


    이리  해봐도  안되고  저리  해봐도  안되서요  ㅠㅠ

     

    레이아웃  원본소스는  위에  있구요
    사이트는  http://wellhouse.kr  이구요
    테스트   이메일은  [email protected]   PW = 1101   입니다

     

    작업을 해야하는데  진도가  안나가서  안절부절  입니다  
    부탁  드립니다

     

     

     

     

  • profile profile

    지금 꼭 찝어서 작성해 드렸는데 어떻게 했는데 안된다는 정보가 없이 어떻게 더 알려드리죠??

    해당 메뉴가 1차메뉴에 있나요? 2차 메뉴에 있나요?
    어디를 어떻게 고치셨나요?

     

    아래 현재 긴주소 사용하실때는 답변내용에서 바뀌어야 할 부분도 확인하셨나요?

  • profile profile

    그리고 지금 올려주신 소스는 GNB(메인메뉴) 인데
    지금 사이트를 방문해서 보면 적용하려고 하시는 곳은 LNB(측면 메뉴) 아니신가요?

    GNB 소스에 적용해서 안된다고 하시는건 아닌지요.

  • profile profile

    도저히  반응이  없어서
    메인메뉴에  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']">
     

    Cap 2020-11-04 16-30-22-255.png

  • profile profile
    메뉴 정보 href 값으로 컨트롤이 되는지 확인을 위해 || !Context::get('is_logged') 이부분을 제거하고 비로그인,로그인 모두 다 안보이게 조건이 걸리는지 확인을 먼저 해보세요.
  • profile profile

                <!-- 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>
     

     

    이렇게  했는데  아무  반응이  없습니다

     

     

  • profile profile

    <li loop> {$val1['href']} <-- 요거 잠시 넣고 어떻게 출력되는지 확인해주세요. <a ~~~`

  • profile profile

                <!-- 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>
     

    이렇게  했더니  이렇게  됩니다

     

    Cap 2020-11-04 16-56-39-318.png

     

    관리자  이메일을  드릴까요   ???

  • profile profile
    {$val1['href']} 만 저 사이에 잘 넣으셔야 하는데 제가 적은거 통째로 넣으셨나봅니다.
  • profile profile

    cond="$val1['link'] && ($val1['href'] != 'https://wellhouse.kr/index.php?mid=LOGINJUN' || !Context::get('is_logged'))"

    이렇게 한번 해보시고 비교해보면 어떨까요...

  • profile profile

    이렇게  하니  됩니다  

    햐~

    긴시간  고맙습니다.

  • profile profile

    같은 차수에 여러개를 적용해야 하신다면

    $val1['href'] != 'https://wellhouse.kr/index.php?mid=LOGINJUN' 를 || 로 구분해서 반복하시면 될겁니다.

     

    뭐 때문에 안되는지 디버깅은 이런식으로 하시면 앞으로 스스로 하실 수 있는게 더 많아질겁니다.

  • profile profile

    네  잘  알겠습니다

    로그인전

    Cap 2020-11-04 17-08-05-583.png

     

    로그인후

     

    Cap 2020-11-04 17-08-13-307.png

    고맙습니다  편한 저녁  되세요  ^^~

  • profile profile

    답변  주신것을  응용해서   
    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'  ||

     

    이것도  안됩니다

     

  • profile profile

    아.. 안되는군요. 그럼

    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'))"

    이런식으로 해보세요. 여러개를 괄호 안에 && 으로 묶어서요.

  • profile profile

    머리에  쥐가 나는것  같고  집중이  안되어 

    엇저녁엔 그냥자고

    새벽에  일어나서  다시  해보다가  얼떨결에 해결  했습니다.

    쭈욱  고맙네요  ^^

     

    cond="($val1['href']  != 'https://wellhouse.kr/index.php?mid=LOGINJUN'  && $val1['href']  != 'https://wellhouse.kr/index.php?mid=well_town' ) || !Context::get('is_logged')"

  • ?
    cond="Context::get('mid')=='게시판mid명' && !Context::get('is_logged')" 아마 이거면 해당 게시판일경우 로그인 사용자에게는 안보일거에요.
  • ? profile

    메뉴에선 mid 명을 고려할 수 없을 거에요. 그래서 메뉴가 가진 정보로 콘트롤 할 수 밖에 없을 겁니다.
    Context::get('mid') 는 지금 현재 페이지의 mid를 파악하는데 사용할 수 밖에 없죠.

  • profile ?
    그렇겠네요~ 메뉴에 들어가야지 mid가 나오는거니까~
  • profile

    그리고 지금 잘 안되시는 이유가 짧은주소를 사용하지 않으셔서 그럴겁니다.
    짧은주소 사용으로 설정을 하시던지 지금처럼 굳이 긴주소를 유지하실 거라면

    답변에서 /BAORDNAME 이

    /index.php?mid=board 이런식으로 바뀌어야 합니다.