홈페이지 구조론 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

홈페이지 구조론 정보

홈페이지 구조론

본문

고수분들의 좋은글이 많은곳에 이런 허접한 글을 올리게 되어서 죄송합니다.
물을 흐리는건 아닌지 모르겠군요.

이글의 원조는 플록님이시고.. 아마도
플록님은 토리님의 구조에서 발생된듯 하고..

제가 모르는 언급하지 않은 앞선 가르침을 주신분에게 감사합니다.

플록님의 글에서 많은 도움을 받았습니다.

이 구조도는 대충.. 그림과 비슷합니다.
낙서장같은 sc8000.net을 보시고 눈치것 알아채야 합니다.
문제점은.. 특이한 경우의 게시판의 경우 링크를 약간 수정해 줘야 된다는것입니다.
그 특이한 이란 극소수이니.. 거의 95%는 문제는 없더군요.

재미난게..(밑줄..)

즉.. 재미난다고 해야할지 모르겠지만.. 이미지를 그누보드 하위에 넣어두면
이미지 링크를 자체의 로칼에서 작성해서 보는것을 그누보드 하위폴더로만 넣어주면

링크 수정없이 다 처리된다는것이죠.. 덕분에 로칼에서 보고.. 웹에서 보는데 이상없이 돌아갑니다.
물론 하나의 단점이 있긴하지만..

그림에서 보시듯이.. menu아래에 있는 _image(로칼)는 그누보드(서버)의 하위 _image에 넣어주시면
됩니다. 게시판일경우 링크가 ../_image/xxxx.gif 형태로 불러오므로 링크가 맞다는것이죠

즉 로칼에서 볼때는.. menu/_image에서 보지만.. 서버에서는 gn/_image에서 보죠..
링크는 동일하게
../_image/xxxx.gif
가 되고요

여기서 단점은.. 게시판은 다 되지만.. 컨텐츠의 경우는...
root / _image 디렉토리에 넣어줘야 된다는 것입니다.

이건 해봐야.. 이해가 되실듯..

이글에서 left.php 는  nav.php 와 동일한 의미의미
right.php는 banner.php와 동일합니다.


-------------------------------------------------------------

파일의 구성은 3개로 이루어 집니다.

그누보드에 head.php, tail,php 그리고 index.php입니다.

보드에서는 ../head.php상단파일 인쿠루드 하시고
하단파일은 ../tail.php 하시면 됩니다.
이건 거국적 셋팅이다 보니 그냥 하시면 될듯 싶군요.

head는.. top과 left  를 호출하고
tail은.. right와 bottom을 호출합니다.

여기서 중간인 body는 게시판의 경우는 게시판이 들어가고

또는 컨텐츠적인 내용이 들어가면.. 그 내용을 집어 넣으시면 됩니다.

head.php---------------------------------------------------------------------------------------------------------
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$g4_path = ".";
include_once("$g4[path]/lib/latest.lib.php");
include_once("$g4[path]/head.sub.php");
include_once("$g4[path]/lib/outlogin.lib.php");
include_once("$g4[path]/lib/poll.lib.php");
include_once("$g4[path]/lib/visit.lib.php");
include_once("$g4[path]/lib/connect.lib.php");
include_once("$g4[path]/lib/popular.lib.php");

$gnusr[root]="/home/sc8000/menu"; //webpage의 절대 경로

if ($ca_id == "") $ca_id = $gr_id;
if ($ca_id == "" && $bo_table == "") $ca_id = 'main'; 

$size1 = "20%";
$size2 = "700";
$size3 = "20%";

include_once("$gnusr[root]/".$ca_id."/top.php");

echo '<table border="0" cellpadding="0" cellspacing="0"><tr><td align="center" valign="top">';

include_once("$gnusr[root]/".$ca_id."/left.php");

echo '</td><td width="'.$size2.'" align="center" valign="top">';
// 여기 에코는 두번째 즉 바디부분의 열어주기
?>

--------------------------------------------------------------------------------------------------------


include_once("$g4[path]/lib/latest.lib.php");
include_once("$g4[path]/head.sub.php");
include_once("$g4[path]/lib/outlogin.lib.php");
include_once("$g4[path]/lib/poll.lib.php");
include_once("$g4[path]/lib/visit.lib.php");
include_once("$g4[path]/lib/connect.lib.php");
include_once("$g4[path]/lib/popular.lib.php");
요넘은 잘 아시듯이 그저..
그누에서 사용되는 인쿠르드 입니다. 그저 해주시면 되지요.

$gnusr[root]="/home/sc8000/menu"; //webpage의 절대 경로
이넘은 head에서 손대야 되는 유일한 넘입니다.

즉.. 세가지 파일에서 이넘만 수정하시면 모든 홈페이지에 적용하는데 문제가 없습니다.

if ($ca_id == "") $ca_id = $gr_id;
if ($ca_id == "" && $bo_table == "") $ca_id = 'main'; 

이넘에 대해서 대략 설명을 하면.. main이란 넘을 기초적으로 index페이지로 지정한 루틴이고요
$ca_id = $gr_id; 여기서 이부분이 중요합니다.

그림에서 보시듯이.. 그룹 아이디로 구분을 지어야지만.. 여러모로 단축되고요

만약 $ca_id = $bo_table; 같은 형태로 넣으시면.. 게시판마다 디렉토리를 생성해야 되므로
피곤해집니다.
물론 그걸 원하시면 그렇게 해야지요.

$size1 = "20%";
$size2 = "700";
$size3 = "20%";
 이부분은 사진의 오른쪽 위에 보시면..
3개의 네모가 있죠.. 그 네모의 크기를 배당해 주는것입니다.
없이도 설정이 가능한데..

일단.. 여기서는 head.php에 넣었지만..  되도록 자신의 디렉토리에서 top.php에 넣어주는게
좋습니다.
echo '<table border="0" cellpadding="0" cellspacing="0"><tr><td align="center" valign="top">';

echo '</td><td width="'.$size2.'" align="center" valign="top">';
                        요기에 보시면 size2라고 변수를 넣어주죠.
size1도 사용하실려면..윗쭐 뒤에 width를 추가해야죠.. 귀찮다보니.

중간넘만 셋팅을 해서 사용합니다 즉 size2만 쓰면 대충 다 되는듯 싶더군요.
나머지는 알아서 해야되는것도 있고 사실상.. 저야 17인트 lcd를 쓰지만.
어떤곳은 15인치라서 1024가 최대인곳도 있으니.. 적당히 배치해야 되니말입니다.

600은 너무 작고 700이 적당한듯 해서 쓰고 있습니다.
그래서 그 (그림 오른쪽 위에 참고..) 테이블을 열어주는 코딩입니다.

일단 합쳐진 형태
http://sc8000.net/gn/bbs/board.php?bo_table=photo_2
를 보시고

(이 사이트는 플록님 구조에 따라 left.php가 nav.php / right.php가 banner.php로 구성되었음)
http://www.sc8000.net/menu/photo/banner.php 를 보시면..
오른쪽에 들어갈것이 보일것입니다.
http://www.sc8000.net/menu/photo/top.php

이라고 하면 윗쪽이겠지요.
http://www.sc8000.net/menu/photo/bottom.php 라면 아래쪽

즉.. 다섯개를 합성해서 나타내는것이죠.


tail.php-------------------------------------------------------------------------------------------------------------
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

echo '</td><td width=$size3>';  // 이 에코는.. 배너부분을 열어주는것
include_once("$gnusr[root]/".$ca_id."/right.php");
echo '</td></tr></table>';

include_once("$gnusr[root]/".$ca_id."/bottom.php");
include_once("$g4[path]/tail.sub.php");
?>

너무 심플해서 설명하게 없을듯 싶군요.


index.php------------------------------------------------

<?
// 상대 경로
$g4_path = ".";
include_once("$g4_path/common.php");
$g4[title] = "";
include_once("$g4[path]/head.php");
include_once("$gnusr[root]/".$ca_id."/body.php");
include("$g4[path]/tail.php");

?>
---------------------------------------------------------------------


전부입니다. 세개 파일을 다 적었군요..

include_once("$g4[path]/head.php");
include_once("$gnusr[root]/".$ca_id."/body.php");
include("$g4[path]/tail.php");

여기서 보시듯.. head가 좌측과 위를 구성
tail 일... right와 bottom을 구성.. body.php만 호출이 되는것이죠.

게시판의 경우는.. 저 body가.. 게시판으로 대치되는것이죠.

플록님의 구조도와는 사뭇다른게.. 전 게시판의 오른쪽에 배너를 좀 넣어야 되다보니
수정된것입니다.

그룹형태로 디렉토리를 잡은것도 그렇고요.. ^^;;
추천
1
  • 복사

댓글 15개

앗.. 오늘.. 영카트를 공부하다 보니 이게 영카트 구조의 모방에서 발생된듯 싶군요.
중대? 까지는 아니라도 ..$ ca_id 변수는 영카트에서 자체적으로 사용하나 봅니다.

즉.. 이 변수를 사용하시면.. 곤란합니다. 영카트 사용하시는분은.. 다른 변수로 바꾸세요.

기회가 되면 지우고 다시 적어야하나. 쩝.
pearly님 애 많이 쓰셨네요.
비슷한 작업을 해봤지만 pearly님 글을 보니 역시나 머리에 쥐가 납니다.

얼마전 gnu3.xxx에 저의 구조를 적용하다가 게시판 분류 변수가 $ca_id 라는것을 알았습니다.
gnu3.xxx초기에 잠간 보고 건너뛴 벌로 엉뚱한데서 원인을 한 참 찾아본적이 있답니다.

내용가운데 아래는 어떤 경우인지 궁금해집니다.
>그 특이한 이란 극소수이니.. 거의 95%는 문제는 없더군요.

- 부천에 계시군요, 반갑습니다!
저도 반갑습니다. ^^ 언제 기회가 되면 여러만나실분과 함께 술잔을 기울어도 좋겠군요 ^^;;

95% 저말은 별거 없습니다. 그냥 해본말입니다. 5%쯤 겁주는 말이라고 해두죠 ^^

달력스킨을 적용하다가 그 무슨 변수인지..기억이 ^^.. 호출파일의 경로와 호출파일을 알려주는 변수..
그녀석의 경우에..

index.php를.. 계속 돌려주는가 봅니다. 물론 잘못된것도 아니고 정상(?) 적 이지만.. 그 스킨을 만드신
분과 구조적상황이 상이하여.. 생기는 링크의 오류겠죠.. 그래서 그런경우 몇몇 링크수정이 따라야 된다는
이야기 였습니다.

제가 vb프로그래머라서.. 프로그램은 좀 하는데 php는 당최 처음이라서 if문 하나 만드는데도 구문오류때문에 여간 힘든게 아닙니다. 구문오류가 제일 무섭답니다. ^^;;
링크없는 트랙백 당하는게 꼭 뒤통수 맞는듯.. 누군지도 모르겠고.. 쩝.
기능은 좋긴한데.. 보완해야 될것들이 좀 있는게 아닌듯 싶습니다.

그누자체에서 트랙백을 주면.. 제목 내용을 다 넘겨주시는데..
이왕이면.. 사용자의 아이디도 넘겨주시고 삭제권도도 주시는게 어떨까요?
일방통행이라서 힘들라나..
전혀 모르겠습니다. 그랬으면 한다는거죠.
© SIRSOFT
현재 페이지 제일 처음으로