다른 곳에 쓴 내부 문서인데 긁어왔다.
또 쓰기 귀찮아서.
우선은 홈페이지 레이아웃을 만들어야 한다.
레이아웃이 뭔지, 홈페이지 레이아웃은 어떻게 만드는지는 하찮아서(?) 다루지 않겠다.
다만 현재 레이아웃은 나름 잘 만들었다고 믿기 때문에 잘 보존하라고 당부하고 싶다.
zbxe/layouts/force
zbxe/layouts/current -> zbxe/layouts/force
이렇게 되어있다.
왜 이렇게 했는가...
zbxe/layouts/layout1
zbxe/layouts/layout2
zbxe/layouts/layout3
...
이렇게 여러가지 레이아웃이 있다고 하자.
제로보드XE의 관리페이지에서 홈페이지의 레이아웃을 바꿀 수도 있지만 그게 생각보다 만만치 않다. 자칫 잘못하면 노가다를 해서 다 바꿔줘야 하는 상황이 올 수도 있다.
그런 것보다는, current소프트링크의 대상을 바꿔주는 방향으로 가기로 결정해서 저렇게 한 것이다.
레이아웃에서는 메뉴의 위치가 결정된다. 그리고 각 메뉴 항목이 어떻게 출력될지도 결정된다.
어떤 메뉴가 있을지 자체를 결정하진 않는다(관리자들만 보이는 메뉴를 빼곤!)
layout.html을 보자.
상단 메뉴는 이렇게 뜬다:
그 중에서도 포인트는 $foreach( $main_menu-> 어쩌구 하는 부분이다.
메인메뉴 항목을 forloop으로 돌면서 적절한 형식으로 출력하라는 내용이다.
$main_menu에 뭐가 있을지는... 제로보드 자체의 기능이 결정한다.
http://zbxe.springnote.com/pages/396083
ZBXE의 공식 매뉴얼을 따르면 되겠죠 ㅋ0ㅋ;;
메뉴가 무엇이 어떤 tree 구조로 있을지는 저기서 하면 되는데, 그것을 레이아웃과 연동하는 것은 다른 문제이다.
관리페이지에서 관리모듈 -> 레이아웃 에 들어간다.
이런 식으로 하게 된다.
메뉴를 구성한 것을 "상단 메뉴" "하단 메뉴"에서 정해준다. -_-;;
메뉴 수정을 하는 것을 보면 그래픽 메뉴도 지정할 수 있는 것 처럼 되어 있는데 실제로 그래픽 메뉴를 제대로 사용하는 레이아웃은 보지 못했다 :(
현 레이아웃에서도 생각보다 깔끔하지 못하고 더러워서 그냥 텍스트로 가고 있지만 코드 자체는 comment로 연구되어 있다.
<!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end--> ><img src="{$val['normal_btn']}"></a> -->
이 부분이 그래픽을 출력하는 곳이다.
{$val['normal_btn']} 이것이 핵심 variable.
또 한. 레이아웃을 메인화면용만 조금 다르다고 새로 레이아웃을 만들어버리면, 리뉴얼 때 레이아웃 변경할 때 매우 힘들 것이다. 그런 고로... 이것도 현재 있는 페이지의 "모듈 명"에 의해 특정 항목이 출력되게 혹은 출력되지 않게 할 수 있다.
<!--//@if($module_info->mid == "main")-->
이런 코드를 쓰면 된다.
마지막으로 회원 레벨에 의해 보이고 안 보이는 항목 (staff 메뉴 같은)을 지정할 수도 있다.
그 다음으로 알아야 할 것은 widget이다.
현재 메인화면에 공지사항 그림과 제목을 띄우는 것... 이게 위젯이 하는 일이다.
(공지사항 게시판에서 가장 최근 글 한 개를 뽑아서 그 미리보기 그림을 크게 하나 띄우고, 그 제목을 띄우는 역할을 하는 위젯임)
또한, 전단지를 랜덤으로 뿌려주는 "아무거나"메뉴도 위젯에 의존한다.
이 위젯은, 게시판의 글 중 하나를 랜덤으로 뽑아서 화면에 위와 비슷하게 출력해준다.
but... 왜 위젯에 의존하느냐?
제로보드의 게시판 data를 읽어들이는 작업이 필요하기 때문이다.
MySQL을 잘 이용하는 수도 있지만 그보다는 ZBXE의 API를 이용하자는 것이다. 그러기 위해 widget이 존재하는 것이기도 하다.
모듈 작성법도... 사실은 나도 잘 모른다.
그 때문에 뭐라고 설명해주지는 못하겠고,
가장 비슷한 모듈을 찾아서 컨닝하거나, 조금만 수정하거나 하라고 권하고 싶다.save
또 쓰기 귀찮아서.
레이아웃이 뭔지, 홈페이지 레이아웃은 어떻게 만드는지는 하찮아서(?) 다루지 않겠다.
다만 현재 레이아웃은 나름 잘 만들었다고 믿기 때문에 잘 보존하라고 당부하고 싶다.
zbxe/layouts/force
zbxe/layouts/current -> zbxe/layouts/force
이렇게 되어있다.
왜 이렇게 했는가...
zbxe/layouts/layout1
zbxe/layouts/layout2
zbxe/layouts/layout3
...
이렇게 여러가지 레이아웃이 있다고 하자.
제로보드XE의 관리페이지에서 홈페이지의 레이아웃을 바꿀 수도 있지만 그게 생각보다 만만치 않다. 자칫 잘못하면 노가다를 해서 다 바꿔줘야 하는 상황이 올 수도 있다.
그런 것보다는, current소프트링크의 대상을 바꿔주는 방향으로 가기로 결정해서 저렇게 한 것이다.
레이아웃에서는 메뉴의 위치가 결정된다. 그리고 각 메뉴 항목이 어떻게 출력될지도 결정된다.
어떤 메뉴가 있을지 자체를 결정하진 않는다(관리자들만 보이는 메뉴를 빼곤!)
layout.html을 보자.
상단 메뉴는 이렇게 뜬다:
<!--GNB--> <div class="gnb"> <!-- main_menu 1차 시작 -->코드 분석은 뭐 대충... ZBXE layout 코딩 문법에 의해 if else, while, for 이런게 있는 거다 -0-;;
<!--@foreach($main_menu->list as $key => $val)-->
<!--@if($val['text'])-->
<!--@if($val['selected'])-->
{@ $menu_1st = $val }
<!--@end-->
<img src="images/default/i.png" class="iePngFix" align="middle"/>
<a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end--> >{$val['text']}</a>
<!--@end--><!--@end-->
<!-- main_menu 1차 끝 -->
</div>
<!--GNB-->
그 중에서도 포인트는 $foreach( $main_menu-> 어쩌구 하는 부분이다.
메인메뉴 항목을 forloop으로 돌면서 적절한 형식으로 출력하라는 내용이다.
$main_menu에 뭐가 있을지는... 제로보드 자체의 기능이 결정한다.
http://zbxe.springnote.com/pages/396083
ZBXE의 공식 매뉴얼을 따르면 되겠죠 ㅋ0ㅋ;;
메뉴가 무엇이 어떤 tree 구조로 있을지는 저기서 하면 되는데, 그것을 레이아웃과 연동하는 것은 다른 문제이다.
관리페이지에서 관리모듈 -> 레이아웃 에 들어간다.
이런 식으로 하게 된다.
메뉴를 구성한 것을 "상단 메뉴" "하단 메뉴"에서 정해준다. -_-;;
메뉴 수정을 하는 것을 보면 그래픽 메뉴도 지정할 수 있는 것 처럼 되어 있는데 실제로 그래픽 메뉴를 제대로 사용하는 레이아웃은 보지 못했다 :(
현 레이아웃에서도 생각보다 깔끔하지 못하고 더러워서 그냥 텍스트로 가고 있지만 코드 자체는 comment로 연구되어 있다.
<!--GNB2-->2차메뉴...
<!--// 그래픽 버튼 쓰는 법 <a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end--> ><img src="{$val['normal_btn']}"></a> -->
<div id="gnb2" class="round_white">
<div class="interior">
<!-- main_menu 2차 시작 -->
<!--@foreach($bottom_menu->list as $key => $val)-->
<!--@if($val['selected'])-->
{@ $menu_2nd = $val }
<!--@end-->
<!--//<img src="images/default/i.png" class="iePngFix" align="middle"/>-->
<a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end--> >{$val['text']}</a>
<br>
<!--@end-->
<!-- main_menu 2차 끝 -->
</div>
</div>
<!--GNB2-->
<!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end--> ><img src="{$val['normal_btn']}"></a> -->
이 부분이 그래픽을 출력하는 곳이다.
{$val['normal_btn']} 이것이 핵심 variable.
또 한. 레이아웃을 메인화면용만 조금 다르다고 새로 레이아웃을 만들어버리면, 리뉴얼 때 레이아웃 변경할 때 매우 힘들 것이다. 그런 고로... 이것도 현재 있는 페이지의 "모듈 명"에 의해 특정 항목이 출력되게 혹은 출력되지 않게 할 수 있다.
<!--//@if($module_info->mid == "main")-->
이런 코드를 쓰면 된다.
마지막으로 회원 레벨에 의해 보이고 안 보이는 항목 (staff 메뉴 같은)을 지정할 수도 있다.
<!--// 관리자만 보이게 하자 -->요렇게!
<!--// forloop으로 grouplist를 돌아서 502가 발견되면 관리자. -->
{@ $logged_info = Context::get("logged_info") }
<!--@if( $logged_info ) -->
<!--@foreach($logged_info->group_list as $key => $val)-->
<!--@if( $val == "502" )-->
<div id="gnb3" class="round_white">
<div class="interior">
나는야 관리자 ㅋ<br>
<a href="/zbxe/staff_board">관리자 게시판</a>
</div>
</div>
<!--@end-->
<!--@end-->
<!--@end-->
그 다음으로 알아야 할 것은 widget이다.
현재 메인화면에 공지사항 그림과 제목을 띄우는 것... 이게 위젯이 하는 일이다.
(공지사항 게시판에서 가장 최근 글 한 개를 뽑아서 그 미리보기 그림을 크게 하나 띄우고, 그 제목을 띄우는 역할을 하는 위젯임)
또한, 전단지를 랜덤으로 뿌려주는 "아무거나"메뉴도 위젯에 의존한다.
이 위젯은, 게시판의 글 중 하나를 랜덤으로 뽑아서 화면에 위와 비슷하게 출력해준다.
but... 왜 위젯에 의존하느냐?
제로보드의 게시판 data를 읽어들이는 작업이 필요하기 때문이다.
MySQL을 잘 이용하는 수도 있지만 그보다는 ZBXE의 API를 이용하자는 것이다. 그러기 위해 widget이 존재하는 것이기도 하다.
모듈 작성법도... 사실은 나도 잘 모른다.
그 때문에 뭐라고 설명해주지는 못하겠고,
가장 비슷한 모듈을 찾아서 컨닝하거나, 조금만 수정하거나 하라고 권하고 싶다.save