애니빌드.LAB
토론방
소스관련 서브네비게이션 만드는 법을 알려주세요
- 황**정
- 2015-03-12 16:31:47
- hit4525
- http://wdev.anybuild.co.kr/bbs/qna/4164
확인 가능한 전체 URL : http://yoonj001.ewebstory.com/page/intro_page
안녕하세요. 항상 수고 많으십니다.
서브페이지에서 세로 서브 네비게이션이 작동하게 하고 싶은데요
현재 빌드에서 사용하고 있는 스마트 반응형 템플릿 30/31번과 같은 유형을 원합니다.
코드 부분을 제가 잘 몰라서 이것저것 수정을 해보려고 했는데 어려움이 있었습니다. 현재 그룹디자인으로 만들어 뒀던 snb는 삭제해둔 상태구요
확인 후 어떤 부분을 고쳐야 네비게이션 코드값이 자동적으로 불러져서 그 하위 메뉴들만 왼쪽에 나오도록 하는게 가능한지 알려주세요!
게시글 공유
URL복사
댓글작성
열기 닫기
열기 닫기
안녕하세요?
일단은 이부분은 어렵긴한데, 설명드리겠습니다.
1. 서브 스킨에 좌측메뉴 부분에 아래의 소스 코드를 사용합니다.
///////////////////////////////////////////////////////////////////////////////////
<aside>
<p>{$shop_base[shop_name]} <i></i></p>
<h1>{$nav[path][$navCode][0][subject]}</h1>
{GROUP_snb}
</aside>
///////////////////////////////////////////////////////////////////////////////////
서브 스킨에 좌측메뉴 부분에 아래의 소스 코드를 사용합니다.
그리고 상단에 제일 첫줄에
{GROUP_init}
그룹을 추가합니다.
2. {GROUP_init} 와 {GROUP_snb} 을 만들면 됩니다.
{GROUP_snb}에는 좌측메뉴 하나를 프로그램 마법사로 생성하셔서 비슷한걸로... 아래 소스를 붙여 넣습니다.
/////////////////////////////////////////////////////////////////////////////
{@
$program_set[start_code] = $NAVI_INFO[parent];
$nav = program_load(NAVI_CATEGORY_MENU);
@}
<div class="pm-navigation_snb" id="pm-navigation_snb">
<!-- 1 Depth -->
<ul class="dep1">
<!--@foreach($nav[sub_menu] as $k=>$v)-->
{@
$liClass = ($v[code]==$NAVI_INFO[code]) ? "on" : "";
$liClass .= ($v[sub_menu]) ? " existSub" : "";
@}
<li cond="$v[visible]" class="{$liClass}"|cond="$liClass">
<a href="{$v[link_url]}" target="{$v[link_target]}"|cond="$v[link_target]">
<!--@if($v[bt1_img_url])-->
<img src="{$v[bt1_img_url]}" onmouseover="this.src='{$v[bt2_img_url]}'"|cond="$v[bt2_img_url]" onmouseout="this.src='{$v[bt1_img_url]}'"|cond="$v[bt2_img_url]" alt="{$v[subject]}" />
<!--@else-->
{$v[subject]}
<!--@end-->
<i cond="$v[sub_menu]">toggle</i>
</a>
<!-- 2 Depth -->
<div cond="$v[sub_menu]">
<ul class="dep2">
<!--@foreach($v[sub_menu] as $k2=>$v2)-->
<li cond="$v2[visible]" class="on"|cond="$v2[code]==$NAVI_INFO[code]">
<a href="{$v2[link_url]}" target="{$v2[link_target]}"|cond="$v2[link_target]">
<!--@if($v2[bt1_img_url])-->
<img src="{$v2[bt1_img_url]}" onmouseover="this.src='{$v2[bt2_img_url]}'"|cond="$v2[bt2_img_url]" onmouseout="this.src='{$v2[bt1_img_url]}'"|cond="$v2[bt2_img_url]" alt="{$v2[subject]}" />
<!--@else-->
{$v2[subject]}
<!--@end-->
</a>
</li>
<!--@end-->
</ul>
</div>
<!-- // 2 Depth -->
</li>
<!--@end-->
</ul>
<!-- // 1 Depth -->
</div>
<script>
jQuery(function($){
var
$index = $('#pm-navigation_snb > ul')
;
// toggle submenu
$index.find('> li > a').on('click', function(){
var $this = $(this).parent();
if ($this.hasClass('existSub'))
{
var $subMenus = $this.parent().children('li');
if (!$this.hasClass('on'))
{
$subMenus
.removeClass('on')
.find('ul.dep2').slideUp(200)
;
$this
.addClass('on')
.find('ul.dep2').slideDown(200)
;
}
else
{
$subMenus
.removeClass('on')
.find('ul.dep2').slideUp(200)
;
}
return false;
}
});
$index.find('> li.on .dep2').show();
});
</script>
//////////////////////////////////////////////////////////////////////////////////////////
그리고 {GROUP_init}는 일반을 생성하셔서 아래 소스를 붙여 넣어 주세요.
//////////////////////////////////////////////////////////////////////////////////////////
{@
$program_set[start_code] = "00000000";
$nav = program_load(NAVI_CATEGORY_MENU);
$navCode = $NAVI_INFO[code];
$navNum = $NAVI_INFO[position_arr];
@}
<script type="text/javascript">
function log(o)
{
console.log(o);
}
// twitter share
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");
// facebook share
;(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/ko_KR/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
//////////////////////////////////////////////////////////////////////////////////////////
3. 그리고 PC버전의 CSS에 가서 아래의 소스를 붙여 넣습니다.
//////////////////////////////////////////////////////////////////////////////////////
/* 서브메뉴 색상 */
$snbTextColor : #85898c; /* 텍스트 색상 */
$snbTextOver : #ff6700; /* 텍스트 오버 색상 */
/* 서브 네비게이션 */
.pm-navigation_snb {
.dep1 {
margin:0; padding:0; list-style:none;
> li {
margin:0 0 1px;
> a {
display:block; position:relative; padding:9px 0; color:$snbTextColor; font-size:18px; font-weight:bold;
i {
display:block; overflow:hidden; position:absolute; right:12px; top:50%; width:10px; height:10px; margin-top:-6px; text-indent:-9999px;
&:after, &:before { content:''; display:block; position:absolute; background:$snbTextColor; }
&:after { width:100%; height:2px; left:0; top:50%; margin-top:-1px; }
&:before { height:100%; width:2px; left:50%; top:0; margin-left:-1px; }
}
&:hover { color:$snbTextOver; }
}
.dep2 {
display:none; padding:5px 0;
margin:0; padding:0; list-style:none;
> li {
> a {
display:block; padding:6px 15px; color:$snbTextColor; font-size:16px; font-weight:bold;
&:hover { color:$snbTextOver; }
}
}
&.on { display:block; }
}
&.on > a {
color:$snbTextOver;
i:before { display:none; }
}
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
직접 작업해드리는게 아니라서 설명에 미흡할수 있으니 고려하시면서 봐주시길 바랍니다.
월래 기존의 소스를 다른곳에 붙여 넣어서 적용할땐 충돌 되는 class가 없는지 확인해가면 오류도 잡아 가며
반응형은 또 각 페이지 마다 잡아 줘야 하기 때문에 손이 많이 가기때문에 어렵습니다.
적용하는 방법만 설명만 요청하셔서 설명을 해드리지만 작은 오류가 있을수 있습니다.
감사합니다.