그누정신님 이거 참고해보세요.(4977번 게시물 답변임...) > 그누3질답

그누3질답

그누정신님 이거 참고해보세요.(4977번 게시물 답변임...) 정보

그누보드 그누정신님 이거 참고해보세요.(4977번 게시물 답변임...)

본문

www
│--본경로에 index.php존재함(gnu3폴더 내용을 www폴더에 설치했을경우)
│--본경로에 head.sub.php , head.php , tail.php , tail.sub.php 존재함 그외 파일포함
│--그누관련폴더들(많아서생략)
│--[ps2 폴더] ->폴더내에 index.php존재
│--[ngc 폴더] ->폴더내에 index.php존재
│--[xbox 폴더] ->폴더내에 index.php존재
│--[image 폴더]
│--[bbs 폴더]
│--[기타등등 폴더](많아서 생략)

이런 형태를 말씀하시는 거라 생각됩니다.
물론 할수 있습니다.
기본디렉토리에 index.php 파일을 두고 폴더내에있는 index.php 파일을 열어서 인클루드와 참조되는 파일을 모두 ../ 로 상위경로로 변경하면 됩니다.
http://.../ps2
http://.../ngc
http://.../xbox
의 주소로 접근이 가능합니다.
인덱스가 따로 존재할뿐 각각의 폴더내에 ps2_head.php 와 ps2_tail.php 는 따로 만들어야 합니다.
폴더내에 만들어 놓을수도 있고 www경로로 빼서 폴더내의 index.php 에서 참조경로와 파일이름만 수정하면 되겠죠.
그리고 그누보드가 업데이트되면서 index.php 파일에 수정해야 하는 부분이 생기면 모조리 다 고쳐줘야 합니다. 이거 얼마나 비효율적인가요?
매번 업데이트때마다 골치아픕니다. 폴더 내에 만들어두면 작업이 더 많아져요.
위에서 말하는 방법은 각각의 컨텐츠에 접근할때마다 매번 새로운 index.php 파일을 열어야 합니다.
트래픽도 증가할테죠? 속도도 당연히 느려지구요.

그럴바엔 index.php 파일은 하나로 쓰는게 좋을듯 싶습니다.
어차피 ps2_head.php 와 ps2_tail.php 같이 개별컨텐츠의 head 와 tail 파일이 존재하여야 한다면 index.php 파일은 하나만 있는게 훨씬 깔끔하고 유지관리하기 쉽지요.

단순히 http://.../ps2 의 접근방식을 원하신다면 어쩔수 없습니다.
유지관리가 힘들고 과다트래픽발생도 감수하셔야 합니다.
차라리 서버관리자에게 2차도메인 지원을 해달라고 조르는게 나을수도 있습니다.
http://ps2.gameking.com/
http://ngc.gameking.com/
http://xbox.gameking.com/
이런식으로 말이죠.
만약에 2차도메인이 가능하다면 개별폴더를 만들지 않고 index.php를 하나로 쓰는방법으로 만드는게 좋지요.
각각의 2차도메인 참조주소는 http://gameking.com/?doc=ps2.php 라고 서버관리자에게 포워딩 주소를 알려주시면 되겠지요.
선택은 그누정신님의 몫입니다.

저는 지금부터 index.php의 파일이 하나만 사용한다 가정하고 설명하겠습니다.
갑자기 파일첨부가 안되에서 링크로 올립니다.
첨부링크를 보시면 그림대로 만드실 계획이라 생각됩니다.
그림이 좀 많이 허접하지요? 여기 포토샵이 없어서 쩝 ㅡㅡ;
main.php의 허접도.gif
대충 보시는 그림대로 상단에는 각각의 컨텐츠로 접근하기위한 3개의 링크태그가 걸리게 될겁니다.
처음에 해당사이트 주소로 접근하게되면 index.php파일을 읽게 될테이고, index는 main.php 파일을 호출하게 됩니다. 이때 main.php 파일이 호출되기전에 head.sub.php , head.php , tail.php , tail.sub.php 파일을 main.php 의 상단과 하단에 포합될것입니다. 물론 main.php 의 상단에 DESIGN으로 설정된 경우이지요.
index.php 파일을 열어서 하단에 스위치 문에 있는 DESIGN을 좀더 이해가 쉽게 FIRST로 고쳐버리세요.
main.php파일에서도 상단에 DESIGN을 FIRST로 고치시고요.
그래야 제대로 불러올수 있지요.
다시 index.php로 가서 3개의 case문을 추가합니다.
======================================================================================
switch (_DOCTYPE_) {
// NONE 는 상단과 하단 파일이 필요없는 TYPE
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 "FIRST" :
include './head.sub.php';
include './head.php';
echo $ob_content;
include './tail.php';
include './tail.sub.php';
break;
case "PS2" :
include './head.sub.php';
include './ps2_head.php';
echo $ob_content;
include './ps2_tail.php';
include './tail.sub.php';
break;
case "NGC" :
include './head.sub.php';
include './ngc_head.php';
echo $ob_content;
include './ngc_tail.php';
include './tail.sub.php';
break;
case "XBOX" :
include './head.sub.php';
include './xbox_head.php';
echo $ob_content;
include './xbox_tail.php';
include './tail.sub.php';
break;
// 나머지 TYPE 은 오류
default :
if (!file_exists($doc) && $doc) {
echo "$doc 파일이 존재하는지 확인하여 주십시오.";
exit;
}
echo "_DOCTYPE_ 오류 : NONE , STYLE , DESIGN 중 하나를 사용하세요.

";
echo $ob_content;
break;
}
======================================================================================
그리고 각각의 파일을 또한 만드셔야 겠지요?
ps2.php , ngc.php , xbox.php 파일들이 각각의 main.php 에 해당하는 파일이라 생각하시면 됩니다.
main.php ->(head.sub.php , head.php, tail.php, tail.sub.php 인클루드)
ps2 ->(head.sub.php , ps2_head.php, ps2_tail.php, tail.sub.php 인클루드)
ngc ->(head.sub.php , ngc_head.php, ngc_tail.php, tail.sub.php 인클루드)
xbox ->(head.sub.php , xbox_head.php, xbox_tail.php, tail.sub.php 인클루드)
각각의 페이지상단에 DOCTYPE를 PS2 나 NGC등등으로 수정해야 겠지요?
ps2.php상단에 다음과 같이 되어야 한다는 말입니다.
==========================================================
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

define("_DOCTYPE_", "PS2");
==========================================================
각각의 페이지에 같은 메인이미지를 사용할수도 있고 다른 메인이미지를 사용해도 됩니다.
위에서 ps2_head.sub.php 와 ps2_tail.sub.php 에 해당하는 파일은 head.sub.php 와 tail.sub.php 를 인클루드되도록 짜여져 있습니다.
그 이유는 게시판 때문입니다.
게시판의 경우 그냥 게시판 하나 생성해서 게시판 접근후 소스보기를 해보세요.
소스의 내용을 보시면 아시겠지만 상단에 index의 개별 case설정과는 무관하게 head.sub.php 와 tail.sub.php가 의무적으로 인클루드 된다는것을 확인할수 있습니다.
게시판설정에서 각각의 컨텐츠에 해당하는 상단과 하단에 해당하는 ps2_head.php와 ps2_tail.php를 적어주시면 되겠지요.
이런식으로 작업하시면 됩니다.
참고가 되셨으면 좋겠군요.
개별접근보다는 2차도메인을 나은 방법인듯 합니다.

  • 복사

댓글 전체

하위폴더에만들고 하는것도 괜찮겠네요. 분류하기는 쉬울테니 말입니다.
하위폴더에 넣으신다면 index.php 파일에서 경로가 약간 수정되어야 겠네요.
case "PS2" :
include './head.sub.php';
include '.ps2/head.php';
echo $ob_content;
include '.ps2/tail.php';
include './tail.sub.php';
break;
이런식으로 해도 나쁘진 않겠네요.
그룹기능을 좀 활용해도 좋을듯 싶은데요. 아직 그룹기능사용예를 못봐서 잘은 모르겠습니다.
아니요. 처음 방식대로 할려고 했는데 비추천 하셔서 그냥 제가 저 말을 꺼내기전에 답변하려 했던 2번의 경우로 하기로 했습니다. 그런데 INDEX파일은 말씀대로 기존 한개의 파일만 존재하게 하고 PS2, XBOX, NGC등의 폴더등은 하위폴더로 만드는것도 번거로운 건가요? 그럼 그누로는 아주 소규모 사이트 아니 작더라도 각섹션 구분을 하기가 불편한 구조로 되어있다는 거네요..
아 맞습니다. 실수했군요.
만약 처음 질문했던 방식대로 한다면
?doc=ps2/ps2.php 를 읽으실 싶요는 없을겁니다.
http://.../ps2 로 접근하면 그 폴더의 index.php 파일에 의해서 ps2.php가 자동으로 로드될테니까요.
즉 ps2.php는 본래의 main.php와 같은 역할을 하게 되겠죠.
상세한 답변 감사합니다. ^^ 그럼 각각의 PS2, NGC, XBOX등은 www루트 폴더의 하위폴더로 생성하고 그 하위폴더에는 각각의 main.php역할을 해줄 파일과 이미지들이 들어있는 폴더를 넣어주고 외부로그인 인틀루드 문을 입력할때는 경로를 <? include "./bbs/outlogin.php"; ?> 이렇게 하지말고 상위폴더 <? include "../bbs/outlogin.php"; ?> 이렇게 해줘야 하는건가요?
© SIRSOFT
현재 페이지 제일 처음으로