회원과 비회원에게 전혀 다른 메뉴를 보여주게 하는 방법입니다.
기본적으로 레이아웃을 변경해야합니다.
1. conf/info.xml
대개의 레이아웃 info.xml 하단에 보면 메뉴추가 항목이 있습니다.
여기에 메뉴를 비회원 전용의 메뉴를 추가합니다.
<menus> <menu name="main_menu" maxdepth="3" default="true"> <title xml:lang="ko">메인 메뉴</title> <title xml:lang="jp">main menu</title> <title xml:lang="zh-CN">main menu</title> <title xml:lang="zh-TW">main menu</title> <title xml:lang="en">main menu</title> <title xml:lang="ge">main menu</title> <title xml:lang="ru">main menu</title> <title xml:lang="es">main menu</title> <title xml:lang="vi">main menu</title> </menu> </memus>
<menus> <menu name="main_menu" maxdepth="3" default="true"> <title xml:lang="ko">메인 메뉴</title> <title xml:lang="jp">main menu</title> <title xml:lang="zh-CN">main menu</title> <title xml:lang="zh-TW">main menu</title> <title xml:lang="en">main menu</title> <title xml:lang="ge">main menu</title> <title xml:lang="ru">main menu</title> <title xml:lang="es">main menu</title> <title xml:lang="vi">main menu</title> </menu> <menu name="main_menu1" maxdepth="3"> <title xml:lang="ko">비회원 메뉴</title> <title xml:lang="jp">out menu</title> <title xml:lang="zh-CN">out menu</title> <title xml:lang="zh-TW">out menu</title> <title xml:lang="en">out menu</title> <title xml:lang="ge">out menu</title> <title xml:lang="ru">out menu</title> <title xml:lang="es">out menu</title> <title xml:lang="vi">out menu</title> </menu> </menus>
위쪽과 아래쪽의 차이는 위의 메뉴는 $main_menu이고 아랫쪽 메뉴는 $main_menu1입니다. 뭐가 되었든 중복되지않게만 하시면 됩니다.
2. 메뉴추가
관리자페이지의 메뉴 또는 사이트맵에서 비회원 전용의 메뉴를 추가합니다.
설명은 생략합니다.
3. 레이아웃 설정
위에 수정한 레이아웃의 설정 화면으로 가서 보면 원래의 한개의 main_menu만 설정하게 되어있었지만 main_menu1을 추가로 설정하게 되어있습니다. 여기에 위에서 만든 비회원 전용메뉴를 선택하고 저장합니다.
4. 레이아웃 수정...
이부분은 레이아웃마다 다 다르기 때문에 잘 살펴보고 수정하시기 바랍니다.
해당 레이아웃의의 layout.html에 보면 메뉴를 출력하는 부분이 있습니다.
<div id="..." class="..."> <ul class="...."> <li loop="$main_menu->list=>$key1,$val1" cond="$val1['link']" class="active highlight first_li"|cond="$val1['selected']" class="first_li"|cond="!$val1['selected']"><a class="first_a png_bg" href="{$val1['href']}" target="_blank"|cond="$val1['open_window']=='Y'"><span class="first_span"><span class="wrap_span"><span class="first_inspan"><span class="out">{$val1['link']}</span><span class="over">{$val1['link']}</span></span></span></span></a> 중략... 레이아웃마다 다 다릅니다. 위의 $main_menu 부분의 <li>에서 </li>까지 몽땅... </li> </ul> </div>
id와 class는 물론 구문이 레이아웃마다 다 다릅니다.
<div id="..." class="..."> <ul class="...."> <block cond="$logged_info"> <li loop="$main_menu->list=>$key1,$val1" cond="$val1['link']" class="active highlight first_li"|cond="$val1['selected']" class="first_li"|cond="!$val1['selected']"><a class="first_a png_bg" href="{$val1['href']}" target="_blank"|cond="$val1['open_window']=='Y'"><span class="first_span"><span class="wrap_span"><span class="first_inspan"><span class="out">{$val1['link']}</span><span class="over">{$val1['link']}</span></span></span></span></a> 중략... 레이아웃마다 다 다릅니다. 위의 $main_menu 부분의 <li>에서 </li>까지 몽땅... </li> </block> <block cond="!$logged_info"> <li loop="$main_menu1->list=>$key1,$val1" cond="$val1['link']" class="active highlight first_li"|cond="$val1['selected']" class="first_li"|cond="!$val1['selected']"><a class="first_a png_bg" href="{$val1['href']}" target="_blank"|cond="$val1['open_window']=='Y'"><span class="first_span"><span class="wrap_span"><span class="first_inspan"><span class="out">{$val1['link']}</span><span class="over">{$val1['link']}</span></span></span></span></a> 중략... 레이아웃마다 다 다릅니다. 위의 $main_menu 부분의 <li>에서 </li>까지 몽땅... 복사해서 $main_menu를 $main_menu1으로 바꿔주십시요. </li> </block> </ul> </div>
즉 로그인 상태에서는 위의 메뉴($main_menu)를 출력하고 로그아웃상태에서는 아래쪽($main_menu1)을 출력하게 block을 설정한 것입니다.
제대로 수정이 되었다면 로그인과 로그아웃시 각기 다른 메뉴가 나올겁니다.
잘 안되시면 수정내용을 다시한번 더 살펴보시기 바랍니다.
ps
서브메뉴가 있으면 같이 처리해주셔야합니다.
이건 레이아웃마다 너무 달라서... 설명이 쉽지않겠네요.