제로보드XE FAQ
이로 인해 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. 이 외에도 확장 변수나 메뉴를 여러개 연결해서 자동 레이아웃을 만들 수 있습니다.
이 부분은 차후 매뉴얼에 방법 넣어 놓겠습니다.
기존에 있는 레이아웃을 활용하면서 변경하시는 것도 좋으실 것 같습니다.
서기님의 동영상 강좌가 있는 곳.
http://singsinghe.co.kr/
수산물 사이트인데,
기막힌 강좌가 있는 곳입니다(대부분 무료).
저도 php는 여기서 이해했습니다.
도움 되실겁니다.^^
해더php와 푸더php를 합친다했는데 저게 무슨말이죠? 내용뺀모든내용을 그냥 layout.html로 저장한다는말인가요?
아..된장 이해불릉이네요 ... 해더 푸더파일을 만들어서 레이아웃파일만들구 해서 3개를 올리란말인지..
암튼 저부부이해안되요 아시는분 댓글좀~~
설명하신대로 적용을 했더니 아래와 같은 오류가 납니다
Parse error: syntax error, unexpected '[' in /home/hosting_users/serariver/www/zbxe/classes/template/TemplateHandler.class.php(341) : eval()'d code on line 213
눈물이 앞을 가립니다.. ㅠ.ㅠ
서기님 수고많으세요!!
동영상 강의보구 차근차근 만들었는데 막상 싸이트(윈도 rwapm 자체서브)에서 admin module에 들어가 layout에서
생성을 클릭하면 서기님 처럼 "싱싱해" 라는 레이아웃이 생성되야 되는데 전 생성이 되질 안되네요 왜 그럴까요?
레이아웃파일을 모두 생성하여 서버에 올린후 레이아웃 생성 메뉴로 가니 레이아웃 이름 고르는곳에 올린 레이아웃이 존재하지 않네요.
어찌된 것일까요?
많이 바쁘시겠지만 답변 좀 빨리 부탁드릴게요, 질문드린지 한달이 지났어요,
이부분이 해결 안되서 해보구 또 해봐도 안되네요, 미치기 일보직전 입니다,
하얀집에 들어가서 살아야 할 지 모르겠네요, ㅠㅠㅠㅠㅠㅠㅠㅠㅠ
"topiary"님두 저와 같은 현상인가 보네요.
궁금한게 있는데요... 관리자로 로그인한 후 사이트에서 직접 레이아웃을 편집한 경우 그 레이아웃의 내용은 어디에 저장이 되는건가요? 사이트에서 편집을 하면 레이아웃 스킨디렉토리 밑에 layout.html에 덮어쓰는 방식인줄 알았는데 별개 더군요
그냥 코딩하고.. 게시판 자리에.. include로 주소로 불러왔으면 좋겠어요.. ;;
제로보드 4일때도.. 헤더푸터에 넣는것보다 아이프레임으로 해당 게시판을 불러왔는데..
아이프레임이 그다지 좋은것도 아니니.. ^^;
info.xml에서 레이아웃 이름 부분을 정확하게 적어주셔야 합니다.
즉, 새로 만들 레이아웃의 폴더명을 적어 주셔야 합니다.
<?xml version="1.0" encoding="utf-8"?>
<layout version="0.1">
<title xml:lang="ko">레이아웃 이름</title> : 요부분에서 레이아웃 이름을 님이 만드신 레이아웃 이름으로
<author email_address="제작자 email" link="제작자 홈페이지 주소" date="작성일">
<name xml:lang="ko">제작자 이름</name>
<description xml:lang="ko">
레이아웃에 대한 간단한 설명
</description>
</author>
</layout>
---------------------------------------------
저도 별것 아닌 것에서 엄청 고생했습니다.
아직까지 이부분에 대한 답이 없어서 올립니다.
정말 info.xml 이 안되서 죽겟슴다.ㅜ.ㅜ
레이아웃 제목이 안나와요. 양식에 나와있는데로 다 했건만...ㅡ"ㅡ
우연히 하나가 되긴 했는데 (지금 그거 레이아웃 이름 바꿔감서 쓰고 있긴하지만...)
그파일은 복사해서 쓰면 레이아웃 이름 고쳐 써도 되고,
내용을 그대로 카피해서 안고치고 info.xml파일로 저장해서 올려 보면 안되고....ㅜ.ㅜ
이유가 뭐지요? 저장시에 뭐 따로 설정이라도 있나요?
정말 승질이...불끈....ㅜ.ㅜ / 아시는 분들 답변좀...plz
그리고 여기와서 읽어보니 또 이해가 가고요...
그런데 아무리 해봐도 결과물이 안나오는 거에요...
위의 몇몇 님들처럼 계속 레이아웃에 이름 안뜨고 에러메세지 나오고.....
결국은 해냈는데....
info.xml 파일에서 레이아웃이름을 정확하게 넣어줘야 하고요 (아우르기 님이 설명하셨죠)
layout.html 하고 info.xml 하고 폴더만들어서 저장할때...저장하는 창에서 '인코딩'을 'UTF-8' 로
설정했습니다.
그러니까 되더라구요...
저도 왜이렇게 되었는지는 모르겠으나... info.xml 소스의 첫줄에서.......
그런데 이거 왜이런건지 아시는분 없나요?
별문제 아니라서 제로님도 언급을 안하신건지......
이거참 나만 이렇게 고생했던건지....내 pc가 문제인가.....







감사합니다...헤드와 푸터보다 훨씬 편한 것 같습니다.^6