오히려 더 단순하게 만들 수 있을 것 같은데요? > 그누4 질문답변

그누4 질문답변

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

오히려 더 단순하게 만들 수 있을 것 같은데요? 정보

답변 오히려 더 단순하게 만들 수 있을 것 같은데요?

본문

1. 저는 그룹과 테이블명 자체를 일관성 있게 통일합니다. 예를 들어서 그룹명이 common이고 테이블 명에 free라고 주고 싶으면, common_free라고 이름을 짓습니다. 즉, 모든 그룹명을 접두어로 붙이는 거죠. 즉, common_으로 시작되는 모든 게시판들은 common 그룹에 속한다는 것이죠.
2. 그리고, preg_match()함수를 통해, 앞 부분을 추출해서 switch문에서 분기 시킵니다. 예를 들어서 아래와 같이 말이죠.


switch (TRUE) {
case preg_match("/^(papa_)/", $bo_table) : //아빠 관련 테이블
$doc="papa";
$top = "papa";
$nav = "papa";
$body = "papa";
$banner = "main";
$bottom = "main";
break;
case preg_match("/^(torry_)/", $bo_table) : //똘이 관련 테이블
$doc="torry";
$top = "torry";
$nav = "torry";
$body = "torry";
$banner = "main";
$bottom = "main";
break;
case preg_match("/^(suzy_)/", $bo_table) : //수지 관련 테이블
$doc="suzy";
$top = "suzy";
$nav = "suzy";
$body = "suzy";
$banner = "main";
$bottom = "main";
break;
case preg_match("/^(common_)/", $bo_table) : //테스트 관련 테이블
$doc="test";
$top = "test";
$nav = "test";
$body = "test";
$banner = "main";
$bottom = "main";
break;
case preg_match("/^(papa)/", $gr_id) : //아빠 관련 그룹
$doc="papa";
$top = "papa";
$nav = "papa";
$body = "papa";
$banner = "main";
$bottom = "main";
break;
case preg_match("/^(torry)/", $gr_id) : //똘이 관련 그룹
$doc="torry";
$top = "torry";
$nav = "torry";
$body = "torry";
$banner = "main";
$bottom = "main";
break;
case preg_match("/^(suzy)/", $gr_id) : //수지 관련 그룹
$doc="suzy";
$top = "suzy";
$nav = "suzy";
$body = "suzy";
$banner = "main";
$bottom = "main";
break;
case preg_match("/^(common)/", $gr_id) : //테스트 관련 그룹
$doc="test";
$top = "test";
$nav = "test";
$body = "test";
$banner = "main";
$bottom = "main";
break;
}

switch ($doc) {
case (papa)://아빠 관련 $doc
$doc="papa";
$top = "papa";
$nav = "papa";
$body = "papa";
$banner = "main";
$bottom = "main";
$my_title = "아빠의 인터넷";
break;

case (torry):
$doc="torry";//똘이 관련 $doc
$top = "torry";
$nav = "torry";
$body = "torry";
$banner = "main";
$bottom = "main";
$my_title = "똘이의 인터넷";
break;

case (suzy):
$doc="suzy";//수지 관련 $doc
$top = "suzy";
$nav = "suzy";
$body = "suzy";
$banner = "main";
$bottom = "main";
$my_title = "수지의 인터넷";
break;

case (test):
$doc="test";//test 관련 $doc
$top = "test";
$nav = "test";
$body = "test";
$banner = "main";
$bottom = "main";
$my_title = "똘이와 수지와 아빠의 인터넷";
break;

default:
$doc="test";//default $doc
$top = "main";
$nav = "test";
$body = "test";
$banner = "main";
$bottom = "main";
$my_title = "똘이와 수지와 아빠의 인터넷";
break;
}


3. 그리고 저는 각 페이지들을 잘라서 모듈화 시켰습니다. 위의 링크에서 어떻게 모듈화 시켰는지 보시죠.

4. head.php, index.php와 tail.php의 필요한 각 부분에서 그 모듈을 호출합니다.
네비게이션: include "$g4[absolute_path]/pages/nav/{$doc}.php";
바디: include "$g4[absolute_path]/pages/body/{$doc}.php";
배너: include "$g4[absolute_path]/pages/banner/{$doc}.php";
아래: include "$g4[absolute_path]/pages/bottom/{$doc}.php";

※. "$g4[absolute_path]"는 모듈화된 페이지들의 절대 경로를 common.php에 선언 해 놓은 것입니다.

위와 같이 했을 때, 루트에 파일을 올릴 필요도 없이 깔끔해 지고 아주 단순해 집니다.
>
> 3.**대 버전과 포에버의 큰 차이점중 하나가 주소체계인데요.
> 이전의 doc 타입이 그리워 지는군요.
> indexdoctype.php 파일에 미리 상,하단 파일을 지정해 놓고 불러올 파일에서 한줄만 적어주면 됐는데, 포에버에서는 불러올 페이지마다 몇줄씩 위,아래로 적으려니 보통 일이 아니군요.
> 소스 관리하기도 불편하고.
> 그래서 말인데 예전처럼 포에버에서
>
> indexdoctype.php 파일에 미리 상,하단 파일을 지정해 놓고
>
> http://홈페이지주소/?doc=test.php
>
> 이렇게 불러올 수 없을까요?
> 어떻게 하면 될것도 같은데 개념이 안잡힙니다.
>
  • 복사

댓글 전체

sjsjin님! 그 불필요한 부분을 좀 알려 주십시오.  혼자서 하다 보니 딱히 물어볼 곳도 없고 해서......

바로 이런 부분 때문에, 부끄러움을 무릅쓰고, 쏘스를 공개한 것입니다.

부탁합니다.
초창기에 제가 만들었던 방법이네요....또한 제가 몇 군데 작업해준 것이기도 하구요...
주 메뉴에 따른 head.php 를 별도로 불러올 때(여기 sir처럼) 자주 사용합니다.
아마 여기 sir 도 위처럼(tail.php 제외) 사용하는 걸로 알고 있습니다. (조금 단순화 해서 쓰고 있을 겁니다.)

근데 좀 불필요한 코딩들도 있네요...
조금 정리해서 단순화 해서 쓰시면 더 좋을 듯 합니다.
조금 복잡하기는 하지만 나름대로 체계적인 것 같습니다. (훌륭합니다.~개인적인 생각)
일부 외국 소스중에서 똘이님과 같은 구조로 된 듯 한 느낌을 받은 적이 있습니다.
저도 똘이님이 구조를 적용해봐야 겠습니다. 저에게는 많은 도움이 될 듯 그러나 쉽게
성공할 것 같지는 않으므로 필요시 도움을 청해도 될런지...
^.^  위의 코드도 어깨너머로 보고 두드려 맞춘 건데.....  제대로 작동하더군요.

혹시 위의 코드보다 더 효과적으로 쓰일 수 있는 다른 방법이나, 단축시킬 다른 방법을 아시는 분은 알려주십시오.
© SIRSOFT
현재 페이지 제일 처음으로