CMS솔루션마켓, 이온디 - 워드프레스, 라이믹스, 카페24, 그누보드, 엑셀

Contents Management System

이번 시간에는 아래 스킨을 파헤쳐보겠습니다.

고라니님의 xe_official 메뉴 수정버전
http://www.zeroboard.com/4353400

(제로보드 공식사이트 > 제로보드XE > XE 스킨 자료실 > 레이아웃 스킨 7번 글 입니다.)

arrow.gif   white.css   layout.html  menu.js

위 페이지에 접속하셔서 위의 4개의 파일을 각각 다운로드 받으세요.
/zbxe설치디렉토리/layouts/xe_officials_tab/ 이라는 디렉토리를 생성 후 각 파일을 아래 디렉토리에 맞게 넣어주세요.
※ xe_officials_tab 이라는 디렉토리 이름은 임의로 지은 것이니 사용자에 맞게 넣어주시면 됩니다.

layout_diretory...

자, 이제 layout.html 소스부터 살펴보죠.
음.. 직접 색칠하려니깐 못해먹겠네요. 바로 아랫쪽의 그림으로 넘어갑시다. (__);;
<!-- js 파일 import -->
<!--%import("js/menu.js")-->

<!-- 레이아웃과 연동될 css 파일 import -->
<!--@if($layout_info->colorset == "white")-->
    <!--%import("css/white.css")-->
<!--@elseif($layout_info->colorset == "black")-->
    <!--%import("css/black.css")-->
<!--@else-->
    <!--%import("css/default.css")-->
<!--@end-->

<!--@if($layout_info->background_image)-->
<style type="text/css">
    body {  background-repeat:repeat-x; background-image:url({getUrl()}{$layout_info->background_image}); }      
</style>
<!--@end-->

<div id="bodyWrap">
    <div id="header">
        <h1><a href="{$layout_info->index_url}"><!--@if(!$layout_info->logo_image)--><img src="/images/{$layout_info->colorset}/zeroBoardXE.png" alt="ZeroBoard™  XE" class="iePngFix" /><!--@else--><img src="{$layout_info->logo_image}" alt="logo" border="0" class="iePngFix" /><!--@end--></a></h1>

        <div id="language">
            <strong title="{$lang_type}">{$lang_type}</strong> <a href="#selectLang" onclick="showHide('selectLang');return false;"><img src="/images/{$layout_info->colorset}/buttonLang.gif" alt="Select Language" width="87" height="15" /></a>
            <ul id="selectLang">
                <!--@foreach($lang_supported as $val)--><!--@if($val != $lang_type)-->
                <li><a href="#" onclick="doChangeLangType('{$val}');return false;">{$val}</a></li>
                <!--@end--><!--@end-->
            </ul>
        </div>

    <div id="dhtmlgoodies_menu">
        <ul><!--@foreach($main_menu->list as $key1 => $val1)--><!--@if($val1['text'])-->
            <!--@if($val1['selected'])-->
                {@ $menu_1st = $val1 }
            <!--@end-->
        <li <!--@if($val1['selected'])-->class="on"<!--@end-->><a href="{$val1['href']}" <!--@if($val1['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val1['text']}</a>           
            <!--@if($val1['list'])--><ul><!--@foreach($val1['list'] as $key2 => $val2)--><!--@if($val2['text'])-->
            <li <!--@if($val2['selected'])-->class="on"<!--@end-->><a href="{$val2['href']}" <!--@if($val2['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val2['text']}</a>
                <!--@if($val2['list'])--><ul><!--@foreach($val2['list'] as $key3 => $val3)--><!--@if($val3['text'])-->
                <li <!--@if($val3['selected'])-->class="on"<!--@end-->><a href="{$val3['href']}" <!--@if($val3['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val3['text']}</a>
                    <!--@if($val3['list'])--><ul><!--@foreach($val3['list'] as $key4 => $val4)--><!--@if($val4['text'])-->
                    <li <!--@if($val4['selected'])-->class="on"<!--@end-->><a href="{$val4['href']}" <!--@if($val4['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val4['text']}</a>
                    </li><!--@end--><!--@end-->
                    </ul><!--@end-->
                </li><!--@end--><!--@end-->
                </ul><!--@end-->
            </li><!--@end--><!--@end-->
            </ul><!--@end-->
        </li><!--@end--><!--@end-->
        </ul>
    </div>

    <script type="text/javascript">
    initDhtmlGoodiesMenu();
    </script>

        <form action="{getUrl()}" method="post" id="isSearch">
            <input type="hidden" name="mid" value="{$mid}" />
            <input type="hidden" name="act" value="IS" />

            <input name="search_target" type="radio" value="title" id="search_target" class="searchOrder" checked="checked" title="search option" />
            <label for="search_target" class="checked" id="search_target_label" onclick="showHide('selectOrder'); return false">{$lang->title}</label>
            <ul id="selectOrder">
                <li>
                    <input type="radio" name="search_target" value="title" id="search_target1" />
                    <label for="search_target1" onclick="chkIsKind(1, '{$lang->title}'); return false;" onmouseover="this.className='on'" onmouseout="this.style.background='none'">{$lang->title}</label>
                </li>
                <li>
                    <input type="radio" name="search_target" value="content" id="search_target2" />
                    <label for="search_target2" onclick="chkIsKind(2, '{$lang->content}'); return false;" onmouseover="this.className='on'" onmouseout="this.style.background='none'">{$lang->content}</label>
                </li>
                <li>
                    <input type="radio" name="search_target" value="title_content" id="search_target3" />
                    <label for="search_target3" onclick="chkIsKind(3, '{$lang->title}+{$lang->content}'); return false;" onmouseover="this.className='on'" onmouseout="this.style.background='none'">{$lang->title}+{$lang->content}</label>
                </li>
                <!--
                <li>
                    <input type="radio" name="search_target" value="comment" id="search_target4" />
                    <label for="search_target4" onclick="chkIsKind(4, '{$lang->comment}'); return false;" onmouseover="this.className='on'" onmouseout="this.style.background='none'">{$lang->comment}</label>
                </li>
                -->
            </ul>
            <input name="is_keyword" type="text" class="inputText" title="keyword" />

            <input type="image" src="/images/{$layout_info->colorset}/buttonSearch.gif" alt="{$lang->cmd_search}" class="submit" />
        </form>

    </div>
    <div id="contentBody">
        <div id="columnLeft">

            <!-- 로그인 위젯 -->
            <img src="/images/blank.gif" class="zbxe_widget_output" widget="login_info" skin="xe_official" colorset="{$layout_info->colorset}" />

            <!-- 왼쪽 2차 메뉴 -->
            <img src="/images/blank.gif" alt="" class="mask" />

            <!--@if($menu_1st)-->
            <ol id="lnb">
                {@ $idx = 1 }
                <!--@foreach($menu_1st['list'] as $ke => $va)--><!--@if($va['text'])-->
                <li <!--@if($va['selected'])-->class="on"<!--@end-->><a href="{$va['href']}" <!--@if($va['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$va['text']}</a>

                    <!-- main_menu 3차 시작 -->
                    <!--@if($va['list'])-->
                    <ul>
                    <!--@foreach($va['list'] as $k => $v)--><!--@if($v['text'])-->
                        <li <!--@if($v['selected'])-->class="on"<!--@end-->><a href="{$v['href']}" <!--@if($v['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$v['text']}</a></li>
                    <!--@end--><!--@end-->
                    </ul>
                    <!--@end-->
                </li>
                {@$idx++}
                <!--@end--><!--@end-->
            </ol>
            <!--@end-->

        </div>
        <div id="columnRight">
            <!-- 컨텐츠 시작 -->
            {$content}

        </div>
    </div>
    <ul id="footer">
        <li class="first-child">
            <address>
            <a href="http://www.zeroboard.com" onclick="window.open(this.href);return false;"><img src="/images/{$layout_info->colorset}/powerdByZeroboard.gif" alt="Powered By ZeroBoard" width="106" height="5" /></a>
            </address>

        </li>

        <!--@foreach($bottom_menu->list as $key => $val)-->
        <li><a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val['text']}</a></li>
        <!--@end-->
    </ul>
</div>

자, 여기까지! 그냥 넘어오셨다면 이제 설명 들어갑니다.

01.
Line1~30까지 설명

bodywrap 위에의 노란색 선까지가 레이아웃의 정보 설정입니다.
js, css, 배경그림의 설정부분이죠.

1. 자바스크립트 파일 및 스타일시트 파일의 추가 방법
line1~2 자바스크립트 파일입니다. <!--%import("js/menu.js")--> 와 같은 형식으로 계속 추가할 수 있습니다.
line4~11 레이아웃과 연동될 css 파일입니다. white/black/default 로 설정 가능합니다. 이 것은 info.xml 파일에서 설정 가능한 부분입니다. 확인하고 싶으신 분은 직접 info.xml 파일의 소스를 확인해보세요.

2. 배경그림
<!--@if($layout_info->background_image)-->
if : 만약에
$layout_inof : 레이아웃 설정 화면에서 배경이미지를 설정하면
background_image : 아래 코드에서 url 부분에 보이듯이 background_image에 배경그림을 삽입한다.
body {  background-repeat:repeat-x; background-image:url({getUrl()}{$layout_info->background_image}); } 
{getUrl()}{$layout_info->background_image}
<!--@end--> : 이것으로 끝마친다

이제 bodywrap 위의 노란색 아래 부분을 설명드리겠습니다.
bodywrap 는 본문 영역입니다. line19의 끝은 저~~ 아래에 있겠네요.

line20 <div id="header"> 부터 설명드리겠습니다.
이 영역은 로고와 언어설정, 그리고 빨간색은 안 칠했습니다만 아래 메인 메뉴 까지가 포함이 됩니다.
메인메뉴도 header에 포함이 됩니다만 한 화면에 다 담지 못해서 메인메뉴는 다음 그림에서 설명하기로 합니다.

고라니 레이아웃 스킨 lay...


02. header의 메인메뉴
메인메뉴의 id는 dhtmlgoodies_menu 입니다.
빨간색 줄 쳐진 부분이 바로 메인메뉴 영역입니다. 뭔가 복잡하지요.
<ul>,<li> 목록태그로 되어있고 각 항목은 class로 정의 되어있으므로
사실 여기에서는 건드릴 것이 없습니다.
메인메뉴의 스타일은 css 파일에서 수정을 하면되니 넘어가겠습니다.

<script .. >
initDhtmlGoodiesMenu();
</script>
가 보이시지요. 이 것은 메인메뉴 dhtml 메뉴의 자바스크립트 부분이니, 그냥 저대로 놔두시면 됩니다.

다음 form.. 으로 시작하는 부분은 검색부분인데 다음 그림에서 설명해드리겠습니다.

고라니 레이아웃 스킨 lay...

03
검색부분
별 달리 설명해드릴게 없네요. 안 건드려도 되겠습니다.

고라니 레이아웃 스킨 lay...

04
자 여기서부터 contentBody 가 시작됩니다.
contentBody의 끝은 또 저 아래겠네요.
그리고 바로 아래부터 columnLeft 가 시작됩니다.
컬럼레프트는 왼쪽 로그인과 2차 메뉴 부분이 표시되는 영역입니다.

<!-- 로그인 위젯 -->
이라고 된 부분에 마음에 드는 로그인 위젯을 삽입하시면 됩니다.
편하게 <img ../>로 끝나니 알아보기 편하실 겁니다.

그리고 그 다음부터 <!-- 왼쪽 2차 메뉴 --> 가 시작이 됩니다.
2차 메뉴는 기본 xe_official과 똑같으니 별 다른 수정이 필요없다면 그냥 넘어가면 됩니다.
그냥 어디서 어디까지가 2차 메뉴인지만 빨간 네모칸을 통해서 확인해보면 되겠습니다.

그리고 </div>로 연한 초록색 박스를 쳤는데 여기가 바로 columnLeft의 끝입니다.
따로 네모박스가 너무 많아서 안 쳤는데 이렇게 하면 알아보시겠죠? 색깔 구분이니 잘 보시면 아실 겁니다.

<div id="columnRight">
    <!-- 컨텐츠 시작 -->
        {$content}
</div>

자, 이 부분이 바로 컨텐츠 부분입니다. 이 부분에 게시판과 설정한 페이지 등이 들어가는 자리랍니다.
그리고 연한 노란색으로 </div> 네모박스를 그렸는데 이 부분이 contentBody의 끝나는 부분이고요.

그 다음부터는 푸터 부분입니다. 한 화면이 다 끝나서 다음 그림에서 설명드리겠습니다.

고라니 레이아웃 스킨 lay...

자, 위에서 설명해드린 컨텐츠 부분이고, 그 다음이 footer 입니다.
제로보드 공식홈페이지에서 Powered By Zeroboard.. 등이 표시되는 그 영역이지요.
하늘색 네모박스를 2개 그렸는데 위에 부분이 기본적으로 들어가는 부분이고
아래 박스가 레이아웃 설정에서 보시면 푸터 메뉴 설정에서 들어가는 그 영역입니다.

그리고 첫번째 하늘색 박스에서 class="first-child" 라고 노란색 박스를 쳐놨는데
그냥 첫번째 <li> 항목에 주어지는 스타일시트라는 뜻으로 사용되었는데
보시면 아시다시피 맨 첨에는 회색 세로 바가 없습니다. 바로 이 뜻입니다. ^^;

zeroboard_foote...

고라니 레이아웃 스킨 lay...





 
댓글은 로그인 사용자만 작성 가능합니다. 로그인하기