Q&A

다음은 사이드바 영역에 서브메뉴를 출력하는 코드입니다.

<ul loop="$main_menu->list=>$key1,$val1" cond="$val1['selected'] && $val1['list']">
   <li loop="$val1['list']=>$key2,$val2" class="lnb_item <!--@if($val2['selected'])-->active<!--@end-->"><!--@if(!$val2['list'])--><a href="{$val2['href']}" target="_blank"|cond="$val2['open_window']=='Y'"><!--@end--><span>{$val2['link']}</span><span class="arrow" cond="$val2['list']"></span><!--@if(!$val2['list'])--></a><!--@end-->
      <ul cond="$val2['list']">
         <li loop="$val2['list']=>$key3,$val3" class="active"|cond="$val3['selected']"><a href="{$val3['href']}" target="_blank"|cond="$val3['open_window']=='Y'"><span>{$val3['link']}</span></a></li>
      </ul>
   </li>
</ul>

문제는, 바로가기를 연결해놨는데, 다른 메뉴에서도 이 바로가기 메뉴들이 상위 메뉴에 연결되어있을 경우

서브메뉴가 뜬다는 겁니다.

 

예를 들어 설명하자면 아래 페이지를 모바일로 접속했을 경우 '포트폴리오'라는 메뉴가 있습니다.

이 포트폴리오 메뉴는 바로가기인데, 클릭해서 이 메뉴로 진입하면, 포트폴리오에 해당하는 메뉴만 뜨는게 아니라.

첨에 이온디 홈 - 포트폴리오가 연결되어있었기 때문에 '이온디홈'의 서브메뉴가 다 뜬다는 겁니다. ㅠㅠ

 

https://eond.com/eond

 

어떻게 해결하면 좋을까요?;

이온디 Lv. 13
# 라이믹스 스킨 제작은 어디? >>>> XE 레이아웃, 라이믹스 스킨제작은 이온디에서 커스터마이징해드립니다.
# 빠른 라이믹스 커뮤니티용 호스팅을 찾고 계신가요? >>>> 이온디호스팅 서비스는 PHP8 & Redis 서버 캐시를 활용하여 라이믹스에 최적화된 호스팅 서비스를 제공해드립니다. (서버세팅시 웹패널, 내도메인메일서비스도 함께 구축해드립니다.)
https://eond.com

댓글 9

  • ul에다 반복문을 잡아서 그런거 아닌가요?
    보통 1차메뉴 li에 잡혀있고 그 아래 2차메뉴가 필요하면 2차메뉴의 li 에 반복을 넣잖아요.

    ui안에 cond="$val1['selected'] && $val1['list']" 이항목도 있으니, 당연히 해당 메뉴의 선택이 이루어져있는 상황이다 라고 생각하고 전체를 다 노출하는거죠.
    반복사례를 보고 해당 반복사례에 따라 어떤 값이 다른지검사하고.. 그다음에 비교문을 작성해보세요.
  • 2차메뉴나 3차 메뉴에 중복해서 바로가기를 걸어두면 어쩔수 없는거 같더군요.
  • @doorweb
    어쩔수없나요. ㄷㄷ 감사합니다
  • @이온디
    메뉴를 하드코딩하시거나, 바로가기 메뉴인지 판단해서 처리하는 방법 밖에 없네요.
  • @SimpleCode
    맞아요 바로가기인지 확인하는 방법이 필요해요 ㅠ
  • @이온디
    확인해보니 $val['is_shortcut']에 바로가기 메뉴인지 여부가 Y와 N로 담겨져 있네요.
  • @SimpleCode
    알아도 어렵군요.. 끄응;;
  • @SimpleCode
    ul cond에 이렇게 써봤는데 안되네요.
    1차메뉴를 가지면서, 선택됀 메뉴이면서, 쇼켯이 아닌 것을 찾으려고 하는데..
    $val1['list'] && $val1['selected'] && $val1['is_shortcut'=='N'] - 아무것도 안뜸
    $val1['list'] && $val1['selected'] && !$val1['is_shortcut'=='Y'] - !val1['is_shortcut'=='Y'를 뺀것과 같음. 없는 것과 동일한현상
    $val1['list'] && $val1['selected'] && !$val1['is_shortcut'] - 아무것도 안뜸;
  • @doorweb
    어려우면 그냥 url을 직접 입력하는 방법으로 해야겠군요;