그누보드 레이아웃 설정 XML Ver 0.1(UTF)-파일이 첨부가 안됐네요.. 다시 업로드 정보
기타 그누보드 레이아웃 설정 XML Ver 0.1(UTF)-파일이 첨부가 안됐네요.. 다시 업로드첨부파일
본문
그누보드 레이아웃 설정 XML Ver 0.1
예전에 레이아웃 관련해서 스킨을 올린적이 있었는데 테이블을 생성하고 사용자분들께서
작업하시는 환경이 다르다 보니 적용이 쉽지가 않았네요..
그래서 고심하다 XML로 레이아웃을 관리하는 모듈(?)을 작업하고자 고생하다 이렇게
부끄럽지만 올려봅니다.
고수님들께서 살펴봐주시고 수정할 사항이 있다면 과감한 질책 부탁드립니다.
필요사항 : XML Parser를 SimpleXML을 사용하는 관계로 PHP Ver 5.0 이상부터 사용이 가능합니다.
/****************************************/
/* 디렉토리 구조 */
/****************************************/
/ (Root)
│
└ extend
│ ├ layout.lib.php
│ └ layout.xml
└ bbs
│ ├ board.head.php // 게시판 상단 설정 파일 (수정 필요)
│ └ board.tail.php // 게시판 하단 설정 파일 (수정 필요)
│
└ skin
└ layout
├ basic
│ ├ layout.head.00.php // 메인화면 상단 설정 파일
│ ├ layout.head.01.php // 서브화면 상단 설정 파일
│ ├ layout.tail.00.php // 메인화면 하단 설정 파일
│ └ layout.tail.01.php // 서브화면 하단 설정 파일
├ common
│ ├ layout.head.00.php // 메인화면 상단 설정 파일
│ ├ layout.head.01.php // 서브화면 상단 설정 파일
│ ├ layout.tail.00.php // 메인화면 하단 설정 파일
│ └ layout.tail.01.php // 서브화면 하단 설정 파일
└ intranet
├ layout.head.00.php // 메인화면 상단 설정 파일
├ layout.head.01.php // 서브화면 상단 설정 파일
├ layout.tail.00.php // 메인화면 하단 설정 파일
└ layout.tail.01.php // 서브화면 하단 설정 파일
/****************************************/
/* layout.lib.php */
/****************************************/
// Parameter : Site, MenuType, MenuLink
function layout($site, $type, $name) {
global $g4, $path, $layout;
// XML 파일 설정
$file = "$g4[path]/extend/layout.xml";
if (file_exists($file)) {
$xmlStr = file_get_contents($file);
// XML 파일
$xml = new SimpleXMLElement($xmlStr);
// Get skin directory
$getSkin = $xml->xpath("//site[@name='$site']");
if(count($getSkin)) { // 해당 사이트가 있을 경우
// Get Skin Directory Information
$skin =$getSkin[0]['skin'];
// Get menu information
$getMenu = $xml->xpath("//site[@name='$site']/menu[@name='$name']"); // 해당 메뉴가 있을 경우
if(count($getMenu)) {
// Set Return Value
$layout = array();
$layout['num'] = $getMenu[0][$type]; // Include File(head, tail) Information
$layout['title'] = $getMenu[0]['title']; // Layout Title
$layout['link'] = $getMenu[0]['link']; // Layout Link Information
$layout['target'] = $getMenu[0]['target']; // Layout Target Informateion
$layout['param'] = $getMenu[0]['param']; // Layout Parameter Information (for Flash, etc)
$layout['image'] = $getMenu[0]['image']; // Layout Title Image Information
$layout['path'] = "$g4[path]/skin/layout/$skin"; // Layout Path Information
$path = "$layout[path]/layout.$type.$layout[num].php";
} else {
getDefault($type);
}
} else {
getDefault($type);
}
} else {
getDefault($type);
}
// Display skin page
ob_start();
include $path;
$content = ob_get_contents();
ob_end_clean();
return $content;
}
// 관련 데이타가 없을 경우 Root의 head.php, tail.php 호출
function getDefault($type) {
global $g4, $path;
$path = "$g4[path]/$type.php";
return $path;
}
?>
/****************************************/
/* layout.xml 구조 */
/****************************************/
layout
└ site (name : 사이트별 다른 이름 Unique, skin : 스킨 디렉토리 설정)
└ menu
├ name // 메뉴 이름 (호출 시 사용 Unique)
├ title // 메뉴 타이틀
├ link // 해당 페이지 경로
├ target // 링크 Target 설정
├ image // 타이틀 이미지
├ param // Parameter 설정 (플래쉬 등 메뉴에 넘겨줄 값 설정)
├ head // 상단 설정 파일
└ tail // 하단 설정 파일
eg.
<?xml version="1.0" encoding="UTF-8" ?>
<layout>
<!-- 1. Home Menu -->
<site name="home" skin="basic">
<!-- 인덱스 -->
<menu name="index" title="메인화면" link="/home/index.php" target="_self" image="title1.gif" param="000000" head="00" tail="00" />
<!-- 1. 회사소개 -->
<!-- 인사말 -->
<menu name="greeting" title="인사말" link="/main/greeting.php" target="_self" image="title2.gif" param="010100" head="01" tail="01" />
<!-- 회사소개 -->
<menu name="intro" title="회사소개" link="/main/intro.php" target="_self" image="title3.gif" param="010200" head="01" tail="01" />
</site>
<!-- 2. Intranet Menu -->
<site name="intranet" skin="intranet">
<!-- 인덱스 -->
<menu name="index" title="메인화면" link="/intranet/index.php" target="_self" image="title4.gif" param="000000" head="00" tail="00" />
<!-- 공지사항 -->
<menu name="inotice" title="공지사항" link="/bbs/board.php?bo_table=inotice" target="_self" image="title5.gif" param="010000" head="01" tail="01" />
</site>
<!-- 3. Common Menu -->
<site name="common" skin="common">
<!-- 인덱스 -->
<menu name="index" title="메인화면" link="/common/index.php" target="_self" image="title6.gif" param="000000" head="00" tail="00" />
<!-- 로그인 -->
<menu name="login" title="로그인" link="/bbs/login.php" target="_self" image="title7.gif" param="010000" head="01" tail="01" />
</site>
</layout>
/****************************************/
/* Call Layout */
/****************************************/
1. 일반 페이지
<?
include_once("./_common.php");
// home -> 'index'으로 검색 -> 상단 호출
echo layout("home", "head", "index");
?>
<table width="500" border="0" cellpadding="0" cellspacing="0">
<tr><td valign="top" width="150">$layout['num']</td><td valign="top"><?= $layout['num'] ?></td></tr>
<tr><td valign="top">$layout['title']</td><td valign="top"><?= $layout['title']?></td></tr>
<tr><td valign="top">$layout['link']</td><td valign="top"><?= $layout['link']?></td></tr>
<tr><td valign="top">$layout['target']</td><td valign="top"><?= $layout['target']?></td></tr>
<tr><td valign="top">$layout['param']</td><td valign="top"><?= $layout['param']?></td></tr>
<tr><td valign="top">$layout['image']</td><td valign="top"><?= $layout['image']?></td></tr>
<tr><td valign="top">$layout['path']</td><td valign="top"><?= $layout['path']?></td></tr>
</table>
<?
// home -> 'index'으로 검색 -> 하단 호출
echo layout("home", "tail", "index");
?>
2. 게시판 (board.head.php)
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// 추가
// 그룹 아이디(사이트) -> '게시판 테이블명'으로 검색 -> 상단 호출
echo layout($gr_id, 'head', $bo_table);
// 게시판 관리의 상단 파일 경로
if ($board[bo_include_head])
@include ($board[bo_include_head]);
// 게시판 관리의 상단 이미지 경로
if ($board[bo_image_head])
echo "<img src='$g4[path]/data/file/$bo_table/$board[bo_image_head]' border='0'>";
// 게시판 관리의 상단 내용
if ($board[bo_content_head])
echo stripslashes($board[bo_content_head]);
?>
3. 게시판 (board.tail.php)
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// 추가
// 그룹 아이디(사이트) -> '게시판 테이블명'으로 검색 -> 하단 호출
echo layout($gr_id, 'tail', $bo_table);
// 게시판 관리의 하단 내용
if ($board[bo_content_tail])
echo stripslashes($board[bo_content_tail]);
// 게시판 관리의 하단 이미지 경로
if ($board[bo_image_tail])
echo "<img src='$g4[path]/data/file/$bo_table/$board[bo_image_tail]' border='0'>";
// 게시판 관리의 하단 파일 경로
if ($board[bo_include_tail])
@include ($board[bo_include_tail]);
?>
이걸 활용해서 사이트맵까지 작업을 하려고 하는데 적용하려니 힘드네요..
고수님들의 조언 부탁드립니다.
예전에 레이아웃 관련해서 스킨을 올린적이 있었는데 테이블을 생성하고 사용자분들께서
작업하시는 환경이 다르다 보니 적용이 쉽지가 않았네요..
그래서 고심하다 XML로 레이아웃을 관리하는 모듈(?)을 작업하고자 고생하다 이렇게
부끄럽지만 올려봅니다.
고수님들께서 살펴봐주시고 수정할 사항이 있다면 과감한 질책 부탁드립니다.
필요사항 : XML Parser를 SimpleXML을 사용하는 관계로 PHP Ver 5.0 이상부터 사용이 가능합니다.
/****************************************/
/* 디렉토리 구조 */
/****************************************/
/ (Root)
│
└ extend
│ ├ layout.lib.php
│ └ layout.xml
└ bbs
│ ├ board.head.php // 게시판 상단 설정 파일 (수정 필요)
│ └ board.tail.php // 게시판 하단 설정 파일 (수정 필요)
│
└ skin
└ layout
├ basic
│ ├ layout.head.00.php // 메인화면 상단 설정 파일
│ ├ layout.head.01.php // 서브화면 상단 설정 파일
│ ├ layout.tail.00.php // 메인화면 하단 설정 파일
│ └ layout.tail.01.php // 서브화면 하단 설정 파일
├ common
│ ├ layout.head.00.php // 메인화면 상단 설정 파일
│ ├ layout.head.01.php // 서브화면 상단 설정 파일
│ ├ layout.tail.00.php // 메인화면 하단 설정 파일
│ └ layout.tail.01.php // 서브화면 하단 설정 파일
└ intranet
├ layout.head.00.php // 메인화면 상단 설정 파일
├ layout.head.01.php // 서브화면 상단 설정 파일
├ layout.tail.00.php // 메인화면 하단 설정 파일
└ layout.tail.01.php // 서브화면 하단 설정 파일
/****************************************/
/* layout.lib.php */
/****************************************/
// Parameter : Site, MenuType, MenuLink
function layout($site, $type, $name) {
global $g4, $path, $layout;
// XML 파일 설정
$file = "$g4[path]/extend/layout.xml";
if (file_exists($file)) {
$xmlStr = file_get_contents($file);
// XML 파일
$xml = new SimpleXMLElement($xmlStr);
// Get skin directory
$getSkin = $xml->xpath("//site[@name='$site']");
if(count($getSkin)) { // 해당 사이트가 있을 경우
// Get Skin Directory Information
$skin =$getSkin[0]['skin'];
// Get menu information
$getMenu = $xml->xpath("//site[@name='$site']/menu[@name='$name']"); // 해당 메뉴가 있을 경우
if(count($getMenu)) {
// Set Return Value
$layout = array();
$layout['num'] = $getMenu[0][$type]; // Include File(head, tail) Information
$layout['title'] = $getMenu[0]['title']; // Layout Title
$layout['link'] = $getMenu[0]['link']; // Layout Link Information
$layout['target'] = $getMenu[0]['target']; // Layout Target Informateion
$layout['param'] = $getMenu[0]['param']; // Layout Parameter Information (for Flash, etc)
$layout['image'] = $getMenu[0]['image']; // Layout Title Image Information
$layout['path'] = "$g4[path]/skin/layout/$skin"; // Layout Path Information
$path = "$layout[path]/layout.$type.$layout[num].php";
} else {
getDefault($type);
}
} else {
getDefault($type);
}
} else {
getDefault($type);
}
// Display skin page
ob_start();
include $path;
$content = ob_get_contents();
ob_end_clean();
return $content;
}
// 관련 데이타가 없을 경우 Root의 head.php, tail.php 호출
function getDefault($type) {
global $g4, $path;
$path = "$g4[path]/$type.php";
return $path;
}
?>
/****************************************/
/* layout.xml 구조 */
/****************************************/
layout
└ site (name : 사이트별 다른 이름 Unique, skin : 스킨 디렉토리 설정)
└ menu
├ name // 메뉴 이름 (호출 시 사용 Unique)
├ title // 메뉴 타이틀
├ link // 해당 페이지 경로
├ target // 링크 Target 설정
├ image // 타이틀 이미지
├ param // Parameter 설정 (플래쉬 등 메뉴에 넘겨줄 값 설정)
├ head // 상단 설정 파일
└ tail // 하단 설정 파일
eg.
<?xml version="1.0" encoding="UTF-8" ?>
<layout>
<!-- 1. Home Menu -->
<site name="home" skin="basic">
<!-- 인덱스 -->
<menu name="index" title="메인화면" link="/home/index.php" target="_self" image="title1.gif" param="000000" head="00" tail="00" />
<!-- 1. 회사소개 -->
<!-- 인사말 -->
<menu name="greeting" title="인사말" link="/main/greeting.php" target="_self" image="title2.gif" param="010100" head="01" tail="01" />
<!-- 회사소개 -->
<menu name="intro" title="회사소개" link="/main/intro.php" target="_self" image="title3.gif" param="010200" head="01" tail="01" />
</site>
<!-- 2. Intranet Menu -->
<site name="intranet" skin="intranet">
<!-- 인덱스 -->
<menu name="index" title="메인화면" link="/intranet/index.php" target="_self" image="title4.gif" param="000000" head="00" tail="00" />
<!-- 공지사항 -->
<menu name="inotice" title="공지사항" link="/bbs/board.php?bo_table=inotice" target="_self" image="title5.gif" param="010000" head="01" tail="01" />
</site>
<!-- 3. Common Menu -->
<site name="common" skin="common">
<!-- 인덱스 -->
<menu name="index" title="메인화면" link="/common/index.php" target="_self" image="title6.gif" param="000000" head="00" tail="00" />
<!-- 로그인 -->
<menu name="login" title="로그인" link="/bbs/login.php" target="_self" image="title7.gif" param="010000" head="01" tail="01" />
</site>
</layout>
/****************************************/
/* Call Layout */
/****************************************/
1. 일반 페이지
<?
include_once("./_common.php");
// home -> 'index'으로 검색 -> 상단 호출
echo layout("home", "head", "index");
?>
<table width="500" border="0" cellpadding="0" cellspacing="0">
<tr><td valign="top" width="150">$layout['num']</td><td valign="top"><?= $layout['num'] ?></td></tr>
<tr><td valign="top">$layout['title']</td><td valign="top"><?= $layout['title']?></td></tr>
<tr><td valign="top">$layout['link']</td><td valign="top"><?= $layout['link']?></td></tr>
<tr><td valign="top">$layout['target']</td><td valign="top"><?= $layout['target']?></td></tr>
<tr><td valign="top">$layout['param']</td><td valign="top"><?= $layout['param']?></td></tr>
<tr><td valign="top">$layout['image']</td><td valign="top"><?= $layout['image']?></td></tr>
<tr><td valign="top">$layout['path']</td><td valign="top"><?= $layout['path']?></td></tr>
</table>
<?
// home -> 'index'으로 검색 -> 하단 호출
echo layout("home", "tail", "index");
?>
2. 게시판 (board.head.php)
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// 추가
// 그룹 아이디(사이트) -> '게시판 테이블명'으로 검색 -> 상단 호출
echo layout($gr_id, 'head', $bo_table);
// 게시판 관리의 상단 파일 경로
if ($board[bo_include_head])
@include ($board[bo_include_head]);
// 게시판 관리의 상단 이미지 경로
if ($board[bo_image_head])
echo "<img src='$g4[path]/data/file/$bo_table/$board[bo_image_head]' border='0'>";
// 게시판 관리의 상단 내용
if ($board[bo_content_head])
echo stripslashes($board[bo_content_head]);
?>
3. 게시판 (board.tail.php)
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// 추가
// 그룹 아이디(사이트) -> '게시판 테이블명'으로 검색 -> 하단 호출
echo layout($gr_id, 'tail', $bo_table);
// 게시판 관리의 하단 내용
if ($board[bo_content_tail])
echo stripslashes($board[bo_content_tail]);
// 게시판 관리의 하단 이미지 경로
if ($board[bo_image_tail])
echo "<img src='$g4[path]/data/file/$bo_table/$board[bo_image_tail]' border='0'>";
// 게시판 관리의 하단 파일 경로
if ($board[bo_include_tail])
@include ($board[bo_include_tail]);
?>
이걸 활용해서 사이트맵까지 작업을 하려고 하는데 적용하려니 힘드네요..
고수님들의 조언 부탁드립니다.
추천
3
3
댓글 전체
아 나와는 먼 애기인가벼~

아 나와도 먼 애기인가벼~

아 나와도 먼 애기인가벼~

알흠답습니다.
파일을 첨부 안했네요... ㅡ,.ㅡ;
레이아웃 설정을 확인해보시면 쉽게 이해가 가실겁니다.
첨부파일의 layout.lib.php, layout.xml을 extend 폴더에 복사하시고, skin=>layout폴더를 통째로 복사하신 후 layout 호출 파일(layoutMain.php, layoutSub.php)을 사이트 루트에 복사하신 후 웹에서
해당 파일을 호출하시면 됩니다....오늘도 즐거운 하루들 되시길~~
레이아웃 설정을 확인해보시면 쉽게 이해가 가실겁니다.
첨부파일의 layout.lib.php, layout.xml을 extend 폴더에 복사하시고, skin=>layout폴더를 통째로 복사하신 후 layout 호출 파일(layoutMain.php, layoutSub.php)을 사이트 루트에 복사하신 후 웹에서
해당 파일을 호출하시면 됩니다....오늘도 즐거운 하루들 되시길~~
수고 하셨습니다. 그리고 고맙습니다. ^^
수고하셨습니다....
감사합니다. 잘 활용하겠습니다.
그누보드 레이아웃 설정
