글쓴사람 combel
글쓴시간2004년 9월 2일 오후 4시 8분 51초
    제목Include 문제?
분할 템플릿 방식인데 게시판이 인클루드된 후의 FOOTER값이 출력이 되지 않습니다.
index.php의 내용은

$tpl=new Template;
$tpl->define(array(
    '>MAIN' => './bbs.php',
    'HEADER' => '_layout/'.$CONF[LAYOUT].'?HEADER',
    'BODY' => '_layout/'.$CONF[LAYOUT].'?BODY',
    'FOOTER' => '_layout/'.$CONF[LAYOUT].'?FOOTER',
));

$tpl->print_('HEADER');
$tpl->print_('BODY');
$tpl->print_('FOOTER');

이렇게 됩니다.

사이트의 구조가 기본 레이아웃이 있고 거기에 컨텐츠가 들어가는 방식으로 만들려고 했는데 잘 안되네요. BODY에 {# MAIN}이 있습니다. bbs.php 안에는 스킨 때문에 템플릿을 다시 정의하는데 이것이 문제인지...
관리자 $tpl->define('FOOTER', '_layout/'.$CONF[LAYOUT].'?FOOTER');
$tpl->print_('FOOTER');

만 해서 잘 작동하는지 확인해 보시구요..

잘되는데 위 코드는 여전히 안된다면.. 소스 올려주시기 바랍니다.
04-09-02 16:40
combel 목록과 본문보기 부분은 어떻게 해결되었는데 쓰기 페이지에서 계속 같은 현상이 발생되네요. 해결했다고 하지만 어떤 문제때문에 그런 현상이 발생됐는지 감을 잡을 수가 없네요. 혹시 php상의 에러때문에 그럴수도 있는 것인지요. FOOTER뿐 아니라 BODY에서 bbs.php를 인클루드한 후부터 전혀 출력이 되지 않고 있습니다.
04-09-03 09:42
combel bbs.php --------------------------------------
<?
EXTRACT($_GET);
INCLUDE './lib/uFunc.php';
INCLUDE '../_config/db.connect.php';
INCLUDE './conf/table/'.$ID.'/var.php';
$tbl = 'boards_' . $ID;
if($sCategory or $sKeyword) search(1);

//@INCLUDE '../_template/Template.class.php';
$tpl=new Template('./bbs/skin/'.$CONF[SKIN]);
$tpl->assign(array(
    'URL_LIST' => "./?ID=$ID&page=$page",
    'URL_SEARCH_LIST' => "./?ID=$ID&page=$page".$gets,
    'URL_WRITE' => "./?Q=E&ID=$ID&page=$page".$gets,
    'CNF_WIDTH' => $CONF[WIDTH],
    'CNF_ALIGN' => $CONF[ALIGN],
));

switch($Q) {
    case 'R' : // 읽기
        $tpl->define(array('read' => 'read.html'));
        include_once './_READ.php';
        $tpl->print_('read');
        break;
    case 'E' : // 새글, 수정, 답변
        $tpl->define(array('edit' => 'edit.html'));
        include_once './_EDIT.php';
        $tpl->print_('edit');
        break;
    default : // 목록
        $tpl->define(array('list' => 'list.html'));
        include_once './_LIST.php';
        $tpl->print_('list');
        break;
} // End Switch -> Q

@$rs->free();
$db->disconnect();
?>
04-09-03 09:43
combel _EDIT.php -------------------------------------
<?
// 기본 히든필드
$hidden = "<input type='hidden' name='mode' value=\"$mode\">\n";
$hidden .= "<input type='hidden' name='ID' value=\"$ID\">\n";
$hidden .= "<input type='hidden' name='page' value=\"$page\">\n";

switch($mode) {
    case 'E' :    // 수정
        $title = "EDIT";
        $hidden .= "<input type='hidden' name='bUID' value=\"$bUID\">\n";

        $data = $db->getRow("SELECT * FROM $tbl WHERE bUID=$bUID", array(), DB_FETCHMODE_ASSOC);
        if($data[bHTML]) $check = "checked";

        $tpl->assign(array(
            'NAME' => $data[bName],
            'EMAIL' => $data[bEmail],
            'HOMEPAGE' => $data[bHome],
            'SUBJECT' => stripslashes($data[bSubject]),
            'HTML' => $check,
            'CONTENTS' => stripslashes($data[bContents]),
            'LINK' => stripslashes($data[bLink]),
        ));
        break;

    case 'R' :    // 답변
        $title = "REPLY";

        $data = $db->getRow("SELECT * FROM $tbl WHERE bUID=$bUID", array(), DB_FETCHMODE_ASSOC);

        $hidden .= "<input type='hidden' name='bIDX' value=\"$data[bIDX]\">\n";
        $hidden .= "<input type='hidden' name='bGID' value=\"$data[bGID]\">\n";
        $hidden .= "<input type='hidden' name='bDepth' value=\"$data[bDepth]\">\n";
        $hidden .= "<input type='hidden' name='bStep' value=\"$data[bStep]\">\n";

        $tpl->assign(array(
            'REPLY' => "1",
            'P_SUBJECT' => str_replace('<', '&lt;', stripslashes($data[bSubject])),
            'P_CONTENTS' => nl2br(str_replace('<', '&lt;', stripslashes($data[bContents]))),
        ));

    default :
        $title = "WRITE";
} // End Switch -> mode

$tpl->assign(array(
    'FORM_START' => "<form name='edit' method='post' enctype='multipart/form-data' action='./execute.php' onSubmit='return checkForm(this);'>",
    'FORM_END' => "</form>",
    'TITLE' => $title,
    'HIDDEN' => $hidden,
    'ISHTML' => $CONF[isHTML],
    'ISFILE' => $CONF[isFILE],
    'ISLINK' => $CONF[isLINK],
));
?>
04-09-03 09:44
관리자 같은 구조를 만들어 놓고 해보면.. 예전에도 해봤지만 잘되는데요.

아무 메세지 없이 출력이 안된다면.. 혹시나 에러출력수준이 0 일지 모르니

error_reporting(E_ALL); 또는

error_reporting(E_ALL & ~E_NOTICE);

로 하시고 디버깅해보시기 바랍니다. @ 도 빼시구요..

지금 코드로 봐서.. ~E_NOTICE 안붙이면 Notice 가 꽤 나올거 같네요.

시원하게 해결해드리지 못해 안타깝네요..
04-09-03 11:02
combel 답변 감사드립니다. 문제 해결 됬습니다.
템플릿의 문제가 아닌 PEAR의 문제였네요. -_-; 아~ 창피하네요.. @rs->free(); 이 부분이 문제가 되었습니다.
이것 때문에 어제부터 골머리 썩을걸 생각하면 ㅠ.ㅠ;

템플릿 언더바 알면 알수록 정말 매력적인 놈이라고 느낍니다. 관리자님의 노고에 찬사를 보냅니다. ^^
04-09-03 13:03
관리자 해결돼서 다행이네요.. 수고 많으셨습니다.^^
04-09-03 13:26
    이름
비밀번호
 
Since 2003-03-03 hosted on vultr.com