감사합니다.(냉무) > 그누3질답

그누3질답

감사합니다.(냉무) 정보

그누보드 감사합니다.(냉무)

본문

>
> 이젠 답변해도 될꺼 같네요..
>
> ※ 메인 페이지를 만들때 초기 화면 (메인 페이지) index.php 파일 관련을 고쳐서 사용하시나요?
> 구조상 쉽게 설명드리면 include형태로 템플릿화 되어있습니다.
>
> 즉 모든 구성은 index.php에서 해결이 되는 1page all-in 방식이라고 생각하시면되요..
>
> index 내용에 모든 내용을 인클루드 하여 인덱스가 변하지 않고 그내용물만 변하게 만듭니다.
>
>
> 구조를 보면..
>
>
> ===================================== index.php ================================================
>  ////////////////////////////////////////////////////////////////
>  // 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
>  // define("_GNUBOARD_", TRUE);
>  //
>  // 이것은 유일하게 index.php에만 있습니다.
>  // 즉! 유일하게 다른 파일을 index.php에서 불러오게 해주는 값이라고 보시면됩니다.
>  ////////////////////////////////////////////////////////////////
>
>  ////////////////////////////////////////////////////////////////
>  //  confing.php //인클루드 시킴
>  //  관련 변수에 대한 설정이 있음! 몇번 보셔야합니다.
>  //  각종 설정을 이파일에서 하실수 있습니다.
>  ////////////////////////////////////////////////////////////////
>
>  ////////////////////////////////////////////////////////////////
>  //  lib 디렉토리에 있는 모든 php 파일을 인클루드 시킴 
>  //  이것은 그누보드에서 반복적으로 사용하는 함수를 따로 분리시켜 논 것 입니다.
>  ////////////////////////////////////////////////////////////////

>  ////////////////////////////////////////////////////////////////
>  //  dbconfig.php 파일 여부로 그누보드의 생성여부 판단
>  //  이파일은 DB 연결 정보가 있는 파일입니다.
>  ////////////////////////////////////////////////////////////////
>
>  ////////////////////////////////////////////////////////////////
>  //  세션파트 와 자동로그인
>  //  자동로그인이 되었는지를 검사하고 세션과 쿠키에 대한 처리를 합니다.
>  ////////////////////////////////////////////////////////////////
>
>  ////////////////////////////////////////////////////////////////
>  //  스킨 패스설정
>  //  그누 보드 특성상 index.php만 열리므로 이곳에 패스가 있어도 무방합니다.
>  // 차후 config.php로 패스 설정까지 옮겨놓으면 관리가 용이 할뜻 합니다.
>  ////////////////////////////////////////////////////////////////
>
>  ////////////////////////////////////////////////////////////////
>  //  $doc 변수 체크  없으면 무조껀 main.php 함수를 호출합니다.
>  //  이것 때문에 보안 취약점이 발생하기도 하였으나, 빠른 버그 패치되었습니다.
>  ////////////////////////////////////////////////////////////////
>
>  ////////////////////////////////////////////////////////////////
>  //  indexexpand.php,
>  //  countinsert.inc.php,
>  //  indexdoctype.php 파일을 인클루드 합니다.
>  //
>  //  이것들은 각각 인덱스 확장과, 문서타입, 카운터 사용에 의한 파일들입니다.
>  ////////////////////////////////////////////////////////////////
>
> ========================================================================================
>
> indexdoctype에 의해서 페이지 스타일을 변경할수가 있습니다.
>
> 몇가지 템플릿화 되어있는데..
> ============================indexdoctype.php===========================================
>    case "NONE" :
>        echo $ob_content;
>        break;
>    // STYLE 은 stylesheet 등만 적용하는 TYPE
>    case "STYLE" :
>        include './head.sub.php';
>        echo $ob_content;
>        include './tail.sub.php';
>        break;
>    // DESIGN 은 상단, 하단 파일을 필요로 하는 TYPE
>    case "DESIGN" :
>        include './head.sub.php';
>        include './head.php';
>        echo $ob_content;
>        include './tail.php';
>        include './tail.sub.php';
> ===========================================================================================
>
> NONE는 상단 , 하단에 아무런 추가 파일이 붙지 않는 순수한 mail.php만 보입니다.
> STYlE는 상단에 head.sub.php가 본문에 main.php가 하단에 tail.sub.php가 붙어서 표시됩니다.
> DESIGN은 상단 head.sub.php 그다음 head.php 본문 main.php가 그밑에 tail.php 하단에 tail.sub.php가 표시됩니다.
>
> 또한 main.php는 index.php?doc=변수 <= 이변수에 파일명 main.php명으로 불러오는것과 같은 디폴트값이기때문에
>
> 메인에 들어가는 본문은 변수에 의해서 꾸준히 바뀌게 됩니다.
>
> 이러한 구조를 이해 하신다면 어느정도 응용이 되실 것이라 확신합니다.
>
> 그럼 일반적인 본문 페이지 구조인 main.php를 보시면
> 그누보드에 대한 구조를 확실하게 다까발려서 보신겁니다.
>
> ===================================== main.php ================================================
>
>  //////////////////////////////////////////////////////////////////////////////////////
>  // if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
>  // 이것은 index에서 선언되었던 "_GNUBOARD_" 의 변수가 있는지 확인합니다.
>  // 즉! index.php가 아닌 직접 또는 다른 페이지에서 불러오면 exit 한다는 뜻이죠.
>  //
>  // *여기서 잠깐 그러면 임의 php파일을 만들어서 본문을 불러올려면
>  // index.php있는 위의변수를 선언해주면 되겠죠?
>  ///////////////////////////////////////////////////////////////////////////////////////

>  ///////////////////////////////////////////////////////////////////////////////////////
>  // define("_DOCTYPE_", "DESIGN");
>  // indexdoctype.php에서 봤던 디자인 템플릿입니다. 이해되시죠? 문서 템플릿을 정해주네요
>  ///////////////////////////////////////////////////////////////////////////////////////
>
>  ///////////////////////////////////////////////////////////////////////////////////////
>  //  본문의 html과 주석을 뺀 핵심 코드는 이것이죠..
>  //  <?
>  //  //  최신글 시작
>  //  $sql = " select bo_table, bo_subject from $cfg[table_board] order by gr_id, bo_table ";
>  //  $result = sql_query($sql);
>  //  for ($i=0; $row=mysql_fetch_array($result); $i++) {
>  //      latest('', $row[bo_table], 5, 70);
>  //      echo "<p>";
>  //  }
>  //  //  최신글 끝
>  //  ?>
>  //
>  //  이것이 바로 최신글 추출입니다.
>  //  가만히 보면 for()함수로 result가 없을때까지 반복해서 출력하는군요..
>  //  즉..게시판수만큼 내용을 뿌려주는거죠..
>  //  이것을 원하는것만 뽑고 싶다면..  이렇게 위의 for() { ~~~ }을 제거한뒤 추가하면 끝난다.
>  //
>  // <?latest('default', freeboard, 5, 70);?>
>  //
>  ///////////////////////////////////////////////////////////////////////////////////////
>
>  ///////////////////////////////////////////////////////////////////////////////////////
>  // 투표 인클루드 이다. (이것은 관리자 세팅에 의해서 보여지기도 하고 안보이기도한다.
>  // <? include "./bbs/vote.php"; ?>
>  ///////////////////////////////////////////////////////////////////////////////////////
>
>  ///////////////////////////////////////////////////////////////////////////////////////
>  // 카운터 인클루드이다  (이것은 config.php에서 카운터 기능을 1,0으로 제어할수있다.
>  // <? include "./bbs/count.php"; ?>
>  ///////////////////////////////////////////////////////////////////////////////////////
>
> ========================================================================================
>
> bbs 의 폴더내 파일들을 상위 디렉토리로 옮겨서 주소를 짧게하려면 수정해야 하는 파일들이 어떤건지 아시나요?
>
> 답은 간단합니다.
> gnu3/의 내용을 전부 이동시키면 됩니다.
>
> 단 위에 bbs/안에 있는 head.php나 main.php, index.php가 기존에 있다면 중뷁이 되니 주의하시길 바래요
>
> 또한가지 ... /?doc=bbs/gnuboard.php&... 의 gnuboard.php 파일명을 임의로 바꾸어서 사용가능한가요?
>
> 위의 답처럼 만들어진 소스를 이용하시거나, 각종에디터로  일일이 수정하시거나.. 하시면됩니다.
>
> 단! 이것은 어느정도 그누보드를 알고있어야 가능할껏이라 생각되네요..
>
> 만들어진 소스 써보니.. 정말 편하더군요.. 테스트를 충분히 해보신후 사용하길 권합니다.
>
> 끝으로... 관심있게 소스를 하나하나 분석하시면 그리 어렵지 않는걸 느낄껍니다.
>
> 제로보드에 공들인 시간의 10/1만큼만... 소비한다면.. 훨신 만족할꺼라 봅니다.
>
> 참고로 압축을 풀어보시면 총 20개의 하위디렉토리와 208개의 파일이 존재 하며,
>          그누보드 인스톨후에는 gnu3/data/member/ , session/ , file/ 디렉토리와
>          gnu3/bbs/dbconfig.php 이 생성됩니다.
>
> 그럼 이상... !!!
>
> ps. 덧말중 최초로 가장 긴글을 씁니다 ...
> ps2. 덧말을 댓글로 변경합니다.. 수정이 용이하지 못해서요.. 오타수정용 :)
>
  • 복사

댓글 전체

© SIRSOFT
현재 페이지 제일 처음으로