Q&A

보통은 gnb 메뉴를 꾸밀 때 한 개의 사이트맵의 메뉴만으로 가져와서 사이트를 만드는데,

저는 portal_menu1 라는 사이트맵과 portal_menu2 라는 등 복수의 사이트맵에서 기본 메뉴를 불러옵니다.

 

이 때 어려운 게 사이드네비게이션바를 만들 때입니다.

 

저는 아래와 같이 portal_men1 일 경우와 portal_men2 일 경우 등을 모두 snb 라는 레이어에 적어놓습니다.

그런데 이 소스를 좀 줄여서 작성할 방법이 없을까요?

 

$snb1 = $portal_menu1;

$snb2 = $portal_menu2;

 

이걸 하위메뉴에서 선택한 메뉴의 사이트맵일 경우를 따로 if else로 정해주면 방법이 있을 것도 같은데 어렵네요..

 

<block>
   {@ $snb1 = $portal_menu1 }
</block>
{@$i=0;}
<h1 loop="$snb1->list=>$key1,$val1" style="color:red"|cond="$val1['selected']" cond="$val1['selected']">{$val1['link']}
   {@$i++;}
</h1>
<ul loop="$snb1->list=>$key1,$val1" class="on"|cond="$val1['selected']" cond="$val1['selected']">
   <li loop="$val1['list']=>$key1,$val1"><b>{$val1['text']}</b>
      <ul>
         <li loop="$val1['list']=>$key2,$val2">{$val2['text']}

         </li>
      </ul>
   </li>
</ul>

<block>
   {@ $snb2 = $portal_menu2 }
</block>
{@$i=0;}
<h1 loop="$snb2->list=>$key1,$val1" style="color:red"|cond="$val1['selected']"  cond="$val1['selected']">{$val1['link']}
   {@$i++;}
</h1>
<ul loop="$snb2->list=>$key1,$val1" class="on"|cond="$val1['selected']"  cond="$val1['selected']">
   <li loop="$val1['list']=>$key1,$val1"><b>{$val1['text']}</b>
      <ul>
         <li loop="$val1['list']=>$key2,$val2">{$val2['text']}

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

댓글 7

  • 잘 이해가 안되지만 그냥 sub쪽은 portal_menu3을 만들어서 거는 방식도...
  • @doorweb
    기본 메뉴의 소스가 보통은..
    <li loop="$main_menu->list => $key1, $val1" class="depth1"><a href="{$val1['href']}" target="_blank"|cond="$val1['open_window'] == 'Y'">{$val1['link']}</a>
    <block cond="$val1['selected']">{@ $_selected_menu = $val1}</block>
    <ul cond="$val1['list']" class="depth2" style="display:none">
    <li loop="$val1['list'] => $key2, $val2" class="more"|cond="$val2['list']">
    <dl>
    <dt><a href="{$val2['href']}" target="_blank"|cond="$val2['open_window'] == 'Y'">{$val2['link']}</a></dt>
    <dd loop="$val2['list'] => $key3, $val3"><a href="{$val3['href']}" target="_blank"|cond="$val3['open_window'] == 'Y'">{$val3['link']}</a></dd>
    </dl>
    </li>
    </ul>
    </li>

    이런 식으로 $main_menu 라는 사이트맵을 사용하는데요..

    제가 사용하는 레이아웃은..;;

    {@$i=0;}
    <li loop="$portal_menu1->list => $key1, $val1" cond="$i=='0'" class="depth1"><a href="{$val1['href']}">{$val1['link']}</a>
    <!--
    기본 메뉴 선택된 메뉴 출력하는 소스(2016.02.20)
    -->
    <ul class="depth2" style="display:none">
    <li loop="$portal_menu1->list => $key1, $val1" cond="$val1['list']">
    <dl>
    <dt><a href="{$val1['href']}">{$val1['link']}</a></dt>
    <dd loop="$val1['list'] => $key2, $val2"><a href="{$val2['href']}" target="_blank"|cond="$val2['open_window'] == 'Y'">{$val2['link']}</a>
    <ol class="depth4"><li loop="$val2['list'] => $key3, $val3"><a href="{$val3['href']}" target="_blank"|cond="$val2['open_window'] == 'Y'">- {$val3['link']}</a></li></ol>
    </dd>
    </dl>
    </li>
    </ul>
    {@$i++;}
    </li>
    {@$i=0;}<li loop="$portal_menu2->list => $key1, $val1" cond="$i=='0'" class="depth1">
    <a href="{$val1['href']}">{$val1['link']}</a>
    <ul class="depth2" style="display:none"><li loop="$portal_menu2->list => $key1, $val1"><dl><dt><a href="{$val1['href']}">{$val1['link']}</a></dt><dd loop="$val1['list'] => $key2, $val2"><a href="{$val2['href']}" target="_blank"|cond="$val2['open_window'] == 'Y'">{$val2['link']}</a><ol class="depth4"><li loop="$val2['list'] => $key3, $val3"><a href="{$val3['href']}">- {$val3['link']}</a></li></ol></dd></dl></li></ul>{@$i++;}</li>

    {@$i=0;}<li loop="$portal_menu3->list => $key1, $val1" cond="$i=='0'" class="depth1"><a href="{$val1['href']}">{$val1['link']}</a><ul class="depth2" style="display:none"><li loop="$portal_menu3->list => $key1, $val1"><dl><dt><a href="{$val1['href']}">{$val1['link']}</a></dt><dd loop="$val1['list'] => $key2, $val2"><a href="{$val2['href']}" target="_blank"|cond="$val2['open_window'] == 'Y'">{$val2['link']}</a><ol class="depth4 blind_"><li loop="$val2['list'] => $key3, $val3"><a href="{$val3['href']}">- {$val3['link']}</a></li></ol></dd></dl></li></ul>{@$i++;}</li>

    {@$i=0;}<li loop="$portal_menu4->list => $key1, $val1" cond="$i=='0'" class="depth1"><a href="{$val1['href']}">{$val1['link']}</a><ul class="depth2" style="display:none"><li loop="$portal_menu4->list => $key1, $val1"><dl><dt><a href="{$val1['href']}">{$val1['link']}</a></dt><dd loop="$val1['list'] => $key2, $val2"><a href="{$val2['href']}" target="_blank"|cond="$val2['open_window'] == 'Y'">{$val2['link']}</a><ol class="depth4"><li loop="$val2['list'] => $key3, $val3"><a href="{$val3['href']}" target="_blank"|cond="$val3['open_window'] == 'Y'">- {$val3['link']}</a></li></ol></dd></dl></li></ul>{@$i++;}</li>
    {@$i=0;}<li loop="$portal_menu5->list => $key1, $val1" cond="$i=='0'" class="depth1"><a href="{$val1['href']}">{$val1['link']}</a><ul class="depth2" style="display:none"><li loop="$portal_menu5->list => $key1, $val1"><dl><dt><a href="{$val1['href']}">{$val1['link']}</a></dt><dd loop="$val1['list'] => $key2, $val2" class="planet_m"><a href="{$val2['href']}" target="_blank"|cond="$val2['open_window'] == 'Y'">{$val2['link']}</a><ol class="depth4"><li loop="$val2['list'] => $key3, $val3"><a href="{$val3['href']}" target="_blank"|cond="$val1['open_window'] == 'Y'">- {$val3['link']}</a></li></ol></dd></dl></li></ul>{@$i++;}</li>

    이런 식으로 여러개의 사이트맵을 기본 메뉴로 가져오거든요. ㅠㅠ;;
    그 사이트맵의 첫번째 메뉴가 보통 메뉴의 기본 1차 메뉴이고,
    2차에서는 다 보여주고, 보통 2차가 3차가 되는 그런 시스템이에요;;
  • 참고로 {@$i=0;} 로 시작하는 줄이 새로운 사이트맵이 시작하는 줄이에요;
  • 보는것만으로 눈돌아갑니다 ^^
  • @doorweb
    도어웹님이 눈 돌아가시면 ㅠ_ㅠ
    흑흑흑...........................................저도 토할거 같아요 ㅋㅋ
  • style="color:red"|cond="$val1['selected']" cond="$val1['selected']"


    꼭 이런 식으로 작성할 필요가 있나요?

    $val1['selected']가 false면 어차피 해당 element도 안 뜰텐데요.

    아니면 여기에 무언가 제가 알지 못하는 심오한 의미라도 있는건지...

  • @RedPumpkin
    아 그건 그냥 구분할려고 한거에요 ㅎ