네. 일단 제로보드의 헤더/푸터는 꽁수에 가까운 변칙적인 방법이였습니다.

이로 인해 html 태그의 중복이라든지 하는 html 규격에 어긋나는 좋지 않은 결과가 생겨나게 되었습니다.

zb5beta에서 레이아웃이라는 기능을 보고 모든 홈페이지의 획일화되는 단점이라고 지적하시는 분들이 많았습니다.

레이아웃은 사이트의 스킨이라고 생각해주시면 될 것 같습니다.

자기 혼자 쓰고 싶으면 레이아웃 하나 만들어서 쓰면 되고, 이걸 공유하고 싶으면 배포하면 되는 것입니다.

게시판 역시 기본 게시판 스킨은 몇개 안되지만 스킨이라는 약속된 규격이 있기에 서로 나눠쓰는게 가능했던 것처럼 레이아웃 역시 게시판 스킨과 같은 개념으로 봐주시면 됩니다.

일단 기존 헤더/푸터 사용하시던 분들이 쉽게 레이아웃을 사용할 수 있도록 설명해드리겠습니다.

1. 기존 헤더/푸터 파일

2. zbxe의 레이아웃 파일로 변경
 header.php, footer.php를 layout.html 파일 하나로 합치고 내용이 들어가던 부분에 {$content} 라는 마크를 하나 추가하였습니다.

3. 레이아웃에 설명 달기
 레이아웃을 누가 만들었고 어떤 목적으로 만들었는지에 대한 내용을 info.xml 이라는 파일에 적어서 저장합니다.
 이 info.xml 파일은 배포할때도 원작자를 알수 있고 차후에 자신이 볼때도 내역을 다시 확인할 수 있는 정보를 가지고 있습니다. 더블어 확장변수/ 메뉴연결등을 지정할 수 있는데 이건 차후 설명하겠습니다.

4. 서버에 올리기

 layout.html, info.xml 파일은 쉽게 만드셨죠?

 layout.html = header.php + footer.php
 info.xml = 위 3번의 내용 카피해서 굵은 글씨만 바꾸어주면 됩니다.

 이 2개를 서버에 올리면 하나의 레이아웃 자원이 만들어집니다.

 일단 원하는 레이아웃 이름을 정하세요. (여기서는 zero 라고 하겠습니다)

 layout.html => ./layouts/zero/layout.html
 info.html => ./layouts/zero/conf/info.xml

 즉 zbxe root에 있는 layouts 라는 디렉토리에 zero(레이아웃이름) 디렉토리를 만드세요.
 그리고 그 하단에 conf라는 디렉토리도 만드시구요.

 거기 각각 layout.html, info.xml 을 올리시면 됩니다.

5. 게시판에 적용

 레이아웃을 만들었으니 게시판에 적용해봐야겠죠?

 http://주소/zbxe/?module=admin 으로 접속하셔서 왼쪽 메뉴에 "레이아웃" 을 선택해주세요.

 그리고 "생성" 버튼을 클릭하세요.
 
 그러면 레이아웃 이름을 고르는 곳에 zero(레이아웃이름) 이 있을겁니다.

 레이아웃을 고르시고 제목에 원하는 이름, 예를 들어 "내 홈페이지 레이아웃" 이라고 입력후 다음을 누르세요.

 위와 같이 하면 이제 레이아웃이 생성되었습니다.

 원하는 게시판의 정보 수정에서 레이아웃을 "내 홈페이지 레이아웃" 을 선택후 저장하시면 레이아웃이 지정된 걸 보실 수 있습니다.



레이아웃 기능은 기존 헤더/푸터에 비해서 많은 장점과 관리의 유용함이 있습니다.

아래는 몇가지 연동되는 기능에 대한 소개입니다.


1. 이미지나 css 경로는 어떻게 해야 하나요?

   zbxe에서 layout.html 에서부터 상대경로로 경로를 지정하시면 됩니다.

   예를 들어 pc에서 작업하실때 layout.html 과 같은 곳에 img 라는 디렉토리를 만들고 이미지를 넣으셨다면 layout.html에서는
 
   <img src="/img/a.gif" .. />

   와 같이 작업하실텐데 이걸 그대로 올리시면 됩니다.

   서버에 올릴때 layout.html 이 있는 곳에 img 라는 디렉토리를 넣으시면 됩니다.

   css 는 아래와 같이 해주세요.

   css 파일이 layout.html과 같은 위치에 있도록 작업하셨다면

   <!--%import("./CSS이름.css")-->

    zbxe에서 <!--@, <!--#, <!--%, {$.. , {@.. 등과 같이 주석비슷하게 생긴것들은 예약어 이며 기능을 가지고 있습니다.

    <!--%import("./a.css")-->
    <!--%import("./a.js")-->

     등과 같이  css, js 파일을 저 예약어로 지정하시면 <head>..</head>사이에 링크를 자동으로 걸게 됩니다.


2. 로그인 사용자의 정보나 로그인 상태를 알고 싶습니다.

   로그인 상태 체크
 
    <!--@if($is_logged)-->
        로그인 되어 있네요.
    <!--@else-->
        로그인 안 되어 있네요.
    <!--@end-->

    {$logged_info->user_id}   <-- 로그인 사용자의 아이디 출력
    ..

    위와 같이 $is_logged 변수로 로그인 상태를 알수 있고 $logged_info 에 로그인 사용자의 정보가 담겨 있습니다.


3. 위젯을 미리 추가해 놓고 싶습니다.

   관리자 페이지 -> 위젯  메뉴에 보시면 위젯들이 있습니다.

   이 위젯 목록의 우측 코드생성을 클릭하시고 원하는 양식을 맞추고 코드를 생성해주세요.

   그 코드를 그대로 layout.html 에 넣으시면 됩니다.

   외부로그인의 경우  "로그인 정보 출력" 위젯의 코드를 넣으시면 되구요.

   <img width="100" height="100" src="/common/tpl/images/blank.gif" class="zbxe_widget_output" widget="login_info" skin="default" colorset="default" widget_cache="0" widget_sequence="71" />

   이런 코드로 나옵니다.

   참, 로그인폼처럼 실시간이 필수인 위젯은 캐시를 사용하시면 안됩니다.


4. 이 외에도 확장 변수나 메뉴를 여러개 연결해서 자동 레이아웃을 만들 수 있습니다.

   이 부분은 차후 매뉴얼에 방법 넣어 놓겠습니다.

   기존에 있는 레이아웃을 활용하면서 변경하시는 것도 좋으실 것 같습니다.
이 게시물을..