레이아웃 시스템에대해.. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

레이아웃 시스템에대해.. 정보

레이아웃 시스템에대해..

본문

레이아웃 시스템을 구축해서.. 폴더별로 여러가지 레이아웃 업로드, 관리자에서 레이아웃선택하게 해주려고하는데요..

인덱스에다가.. 해당레이아웃에 인쿠르드해서 불러와서 보여줄수 있는것 같은데.. 감이안잡히네요..

index.php
echo voyage_basic($config[cf_voyage_basic]);

이런식으로불러와서  헤더,푸터 파일에
include_once("$g4[path]/voyage/basic/$config[cf_voyage_basic]/head.php");

이렇게 해서 불러올수있는것같은데 불러오지 못하네요.

저와 비슷한시스템을 쓰고있는빌더가 그누xe 빌더하고오누리빌더인데..

저도  해당빌더를참고해서 짜봤는데왜저만오류가날까요??

adm 와.lib파일 그리고 bbs? 이세가지 연동시켜줘야 작동이될까요??

아니면 config.php여기에 직접 해당 레이아웃들이모여있는폴더로바로걸어줘야하는건가요??

차근차근 해가면서 빌더를준비하려고 합니다. ( 완성도높이려면..)
  • 복사

댓글 전체

이미  航海 님 께서는 많은 것을 알고 계시고
겸손함이 완벽함을 추고 하시고져..
유비무환? 이시라 사료 됩니다만..^^
많으신 그누 고수님들 께서 답변을 주시리라..^^
제가 이해력이 떨어지는건지 어떤 오류가 난다는 건지 이해가 잘 안되서요.
include 가 안된다는 것인지? 아니면 헤더가 오류난다는 것인지

오류가 나는 부분을 좀더 오픈해주시면 답변이 가능할꺼같다는 생각이 드네요.^^
Warning: include_once(./head.php) [function.include-once]: failed to open stream: No such file or directory in /home/mali/public_html/index.php on line 3

Warning: include_once() [function.include]: Failed opening './head.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/mali/public_html/index.php on line 3

Fatal error: Call to undefined function () in /home/mali/public_html/index.php on line 5

이말인즉슨 인덱스를불러오지못하고 해당라인이 오류있다는말인데요.. 뭘빠트린건지..
도통모르겠습니다..
저도 현재 개인 사이트를 오누리님의 빌더를 참고해서
템플릿을 통한 레이아웃 변경 시스템을 만들었습니다.

항해님도 오누리빌더를 참고 하셨다고 하니 제 경우를 참고로 말씀드릴게요.
(그누XE 빌더도 오누리빌더와 방식은 거의 흡사합니다.)

1. 먼저 디비를 생성해야 합니다.템플릿 값을 저장해야 하니까요.
전 cf_template_skin 이라는 필드[varchar (255)]를 g4_config에 추가 했습니다.

2. 그 다음 관리자가 템플릿을 설정해줘야 하므로..관리자 페이지의
config_form.php 파일에 다음과 같이 추가 해줬습니다.

<th>템플릿 스킨</th>
<td><select id="cf_template_skin" name="cf_template_skin" required itemname="템플릿 스킨">
<?
$arr = get_skin_dir("template");
for ($i=0; $i<count($arr); $i++) {
echo "<option value='$arr[$i]'>$arr[$i]</option>\n";
}
?></select>
<script type="text/javascript"> document.getElementById("cf_template_skin").value="<?=$config[cf_template_skin]?>";</script></td>
</tr>

$arr = get_skin_dir("template"); 라인에서 알 수 있다 시피 /skin/template/ 에 템플릿 스킨 파일을 위치시킨것을 알 수 있을 겁니다.
또한 이 부분은 따로 페이지를 만들어도 되고 저처럼 그냥 기존의 config_form 에 넣어도 됩니다.

3. config_form_update.php에 추가
cf_template_skin          = '$_POST[cf_template_skin]',

여기까지 하면 일단 관리자가 정한 템플릿 값을 디비에 저장하는데 성공 할 것입니다.

4. /extend/ 디렉토리에 원하는 이름으로 (예:builder.php) 아래와 같은 내용을 넣어서 파일을 하나 만들어 주세요.

<?
$template_skin_path = "$g4[path]/skin/template/$config[cf_template_skin]";
?>

5. 기존의 head.php 파일의 모든 내용은 /skin/template/스킨명/head.php 에 넣으시고
아래처럼 대체 하십시요.

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
include_once("$g4[path]/head.sub.php");
include_once("$g4[path]/lib/latest.lib.php");
include_once("$g4[path]/lib/visit.lib.php");
include_once("$g4[path]/lib/outlogin.lib.php");
include_once("$template_skin_path/head.php"); // 템플릿에 있는 헤드를 불러오라는 얘기입니다.
?>

6.tail.php 파일의 내용도 head.php와 같은 방식으로 템플릿쪽으로 넘겨주면 됩니다.

전 위의 방법으로 템플릿형태를 구성했고 현재까지 잘돌아갑니다.
감사합니다. 연구좀해보고 적용해봐야겠네요..


ps.새해복 많이 받으시고 스킨과 팁 잘쓰고 있습니다. 감사합니다.
      특히 우리 이천이지님을 도와주신것 감사합니다 ㅋㅋ.
      이천이지행님께 시하님의말씀 많이 듣고있습다. -ㅅ-
© SIRSOFT
현재 페이지 제일 처음으로