묻고답하기
서브메뉴 소스 질문
2019.01.02 10:31
서브 메뉴를 만들고 있는데 xe 소스가 잘못이 된 것인지 출력이 안됩니다.
매인메뉴는 잘 되는데 서브 메뉴가 출력이 안되서 무엇이 잘못인지 수정좀 부탁드립니다 ㅠ
<ul class="nav navbar-nav ml-auto">
<li loop="$main_menu->list=>$key1,$val1" class="nav-item active"|cond="$val1['selected'] || $val2['list']" class="nav-item">
<a class="nav-link" href="{$val1['href']}">{$val1['link']}</a>
</li>
</ul>
// 서브메뉴 - 출력이 안됩니다
<ul class="locNav clearBoth" cond="$val1['list']">
<li loop="$val1['list']=>$key2,$val2" class="active"|cond="$val2['selected']">
<a href="{$val2['href']}" class="nav-link" >{$val2['link']}</a>
</li>
</ul>
댓글 6
-
DoorWeb
2019.01.02 10:52
-
검은내일
2019.01.02 12:00
서브메뉴의 위치를 별개로 둬야 되기 때문에 매인매뉴에서 빠져나와하기 때문에 그랬습니다.
그럼 ul 태그에 무조건 loop="$main_menu->list=>$key1,$val1" 들어가는건가요?
-
DoorWeb
2019.01.02 13:03
loop="$main_menu->list=>$key1,$val1" 이 말이 레이아웃 설정에서 하단에 메뉴 거는게 있을겁니다.
지금 사용하시는 레이아웃은 $main_menu 이걸 메인메뉴로 가지고 온다는 말이라서
이쪽에서 불러오는게 아니면 어느 메뉴를 말하는지 파악을 못합니다.
-
검은내일
2019.01.02 18:07
그렇군요. 답변 감사합니다
-
onTrust
2019.01.02 14:26
xe 탬플릿 문법 중 loop는 PHP의 foreach를 사용하는 것으로 알고 있습니다.
이 문제는 변수의 scope를 벗어난 문제인 것으로 생각되네요...
서브메뉴의 $val1변수는 메인메뉴의 $main_menu->list를 foreach scope에서만 인식 되죠...
메인메뉴의 loop와 서브메뉴의 loop는 상하관계가 아닐뿐더러, 동위관계이므로 인식을 할 수가 없습니다.
해결방법은!!!!!
{@ $selected_submenu; } // 메인메뉴 중 현재 선택된 메뉴를 담을 변수 선언
// 매인메뉴 - 출력이 잘 됩니다
<ul class="nav navbar-nav ml-auto">
<li loop="$main_menu->list=>$key1,$val1" class="nav-item active"|cond="$val1['selected'] || $val2['list']" class="nav-item"><!--@if ( $val1['selected'] )-->
{@ $selected_submenu = $val1; }
<!--@end-->
<a class="nav-link" href="{$val1['href']}">{$val1['link']}</a>
</li>
</ul>
// 서브메뉴 - 출력이 안됩니다
<ul class="locNav clearBoth" cond="$val1['list']">
<li loop="$selected_submenu['list']=>$key2,$val2" class="active"|cond="$val2['selected']">
<a href="{$val2['href']}" class="nav-link" >{$val2['link']}</a>
</li>
</ul> -
검은내일
2019.01.02 18:07
감사합니다 덕분에 잘 해결하였습니다
xe_official 레이아웃 기준으로 보시면
<ul class="locNav" loop="$main_menu->list=>$key1,$val1" cond="$val1['selected'] && $val1['list']">
<li loop="$val1['list']=>$key2,$val2" class="active"|cond="$val2['selected']"><a href="{$val2['href']}" target="_blank"|cond="$val2['open_window']=='Y'">{$val2['link']}</a>
</li>
</ul>
이런 형태여야 합니다. 차이가 보이시죠?