re: 제로보드, 그누보드 스킨 문제

bjh7588
답변채택률 86.7%
2011.02.17 17:47

질문자 인사

정말 대단해요! 당신의 지식에 감탄하고 갑니다.^^ ㅜㅜ하나하나 따라해보겠습니다 답변 정말 감사드려요!!!

제로보드를 몇 년간 사용해 보면서 제일 어려운 점은 DB의 접속 및 필드 추가입니다.

DB에서 필드를 하나 잘못 추가하면 홈페이지 전체가 망가져 버릴 수도 있어서 초보자에겐 무척 힘들죠.

 

제로보드에서 매매 게시판 스킨을 찾아보시면 분명 원하는 스킨이 있을 겁니다.

그런 경우 보통은 스킨 칸 구성이 변수 및 여분 필드를 추가해서 입력받는 방식을 사용하고 있을 겁니다.

더구나 원하는 양식처럼 만드려면 부득이하게 여분의 필드를 추가해야 하는 경우가 생기게 됩니다.

 

여분의 필드는 제로보드 전체에서 필요할 수도 있고, 아닐 수도 있는데요.

DB의 접속은 phpMyadmin이라는 프로그램을 통해 간단하게 접속하여 필드를 추가할 수 있습니다.

 

 

1. DB접속 후 일단 필드를 추가 적용할 게시판의 필드를 찾습니다.

 - 왼쪽 리스트를 보시면 'zetyx_board_게시판 아이디'라고 된 테이블이 해당 게시판의 테이블입니다.

 

2. 그 테이블을 클릭하면 오른쪽 화면이 바뀌면서 해당 게시판의 필드가 리스트화되어 뜹니다.

 

3. 스크롤을 내려보시면 다음과 같은 실행 명령 글이 있습니다.

  Add [  1  ] field(s)   ● 테이블의 마지막   ○ 테이블의 처음  ○ [   no  ▼] 다음에  <실행>

 

이 명령은 선택된 테이블에 필드를 간단하게 추가할 때 사용하는 것입니다.

하지만 기본적으로 제로보드는 게시판마다 2개의 여분필드(x,y)를 제공하기 때문에 보통은 필요없습니다.

 

4. 여분필드로도 모자란다면 3번을 그대로 놓고 <실행>버튼을 누르시면 페이지가 이동됩니다.

 

5. 그러면 바뀐 페이지를 다음과 같이(또는 원하는대로) 타입을 설정하고 <저장>버튼을 누릅니다.

 

필드   필드이름
종류    CHAR  (해당 속성에 맞는 타입을 선택. 보통 여분필드는 CHAR-문자열 제한-를 사용) 
길이/값   255   (문자열제한값. LONGTEXT 선택시엔 지정하는 의미가 없음.)  
Collation     euckr_korean_ci  (한국어 배열)
Null         null   (제로보드의 예비필드처럼 null로 지정하였음. 필요하면 Not null 가능.)

 

6. 그럼 필드는 잘 추가가 되나, 값 저장시 잘 저장이 되는지 판단해야 합니다.

 

 

DB 필드 추가 작업은 끝났습니다만, 그럼 해당스킨에서 필드를 사용할 수 있도록 해야겠죠?

스킨을 알맞게 수정하시되, 해당 필드에도 값이 입력되도록 해야합니다.

 

해당 스킨 폴더에도 제로보드 폴더처럼 write.php 파일이 있습니다.

그걸 여시면 미리 수정해 만들어둔 입력칸이 있겠죠?

 

Ex) 예비필드 사용시 추가되는 입력 필드란.

<input type=text name=zx value="<?=$data[x]?>" <?=size(100)?> maxlength=100 class=input style=width:50%;>

 

여분필드를 추가하면 저 빨간 부분을 해당 필드 명칭으로 수정을 해주셔야 합니다.

저 숫자는 필드입력란의 크기이므로 같게 입력해 주시고요.

x와 zx는 변수로 받을 명칭이니 꼭 잘 생각해서 넣어주셔야 합니다.

그래서 보통은 헷갈리지 않도록 db에 추가된 필드명칭 그대로 입력하지요.

 

스킨에서 정상적으로 보여질 수 있도록 스킨의 view.php 파일도 수정해야 합니다.

 

Ex) 처음 부분에서 변수를 받아오도록 추가.

  $sitelink1 = str_replace(">","><font class=list_eng></b>",$sitelink1);
  $sitelink2 = str_replace(">","><font class=list_eng></b>",$sitelink2);

   $x = str_replace("","",$x);

위의 것을 알맞게 수정해야 되고요. 역시 위에서 쓰셨던 명칭대로 쓰셔야 잘 실행이 됩니다.

또, 보여질 부분이 있는 곳까지 스크롤을 내려서 출력을 할 부분에 다음과 같이 출력 선언을 해줍니다.

 

<?=$data['x']?>

 

 

또, 실질적으로 변수를 받아 처리하는 부분에서 처리를 못하면 곤란하겠죠?

제로보드 파일의 write_ok.php를 엽니다.

 

다음과 같은 부분을 찾아서 추가해 주세요

 

  $sitelink1=addslashes(del_html($sitelink1));
  $sitelink2=addslashes(del_html($sitelink2));
  $email=addslashes(del_html($email));
  $homepage=addslashes(del_html($homepage));

// 원하는 만큼 아까의 변수를 잘 추가.
        $변수명=addslashes(del_html($변수명));

       

// 홈페이지 주소의 경우 http:// 가 없으면 붙임
  if((!eregi("http://",$homepage))&&$homepage) $homepage="http://".$homepage;

// 각종 변수 설정
  $ip=$REMOTE_ADDR; // 아이피값 구함;;
  $reg_date=time(); // 현재의 시간구함;;

  $x = $zx;
  $y = $zy;

 // 변수를 인식하도록 변수 추가(예비필드의 경우는 이미 추가되어 있으므로 생략)

  $변수명 = $변수명;

 

그리고 변수를 함께 처리하도록 write_ok.php의 다음과 같은 글 작성 쿼리부분에 변수를 추가해 줍니다.

수정글, 답변글의 일반/공지 전환 처리부분 모두 추가해 주셔야 정상작동 됩니다.

 

 @mysql_query("update $t_board"."_$id set headnum='$headnum',prev_no='$prev_no',next_no='$next_no',child='$child',depth='$depth',arrangenum='$arrangenum',father='$father',name='$name',email='$email',homepage='$homepage',subject='$subject',memo='$memo',sitelink1='$sitelink1',sitelink2='$sitelink2',use_html='$use_html',reply_mail='$reply_mail',is_secret='$is_secret',x='$x',y='$y',변수명='$변수명',category='$category' $del_que1 $del_que2 where no='$no'") or error(mysql_error());

 


이렇게 좀 수정해 주시면 나중에 원하는 양식으로 잘 만들 수도 있을거예요.

제로보드4의 경우는 DB만 잘 수정해 주시면 무한한 응용이 가능한 지라...

 

도움이 되셨으면 좋겠습니다.

+ Recent posts