여분필드를 활용한 게시판 스킨 제작 - 여분 필드 10개 이상 사용하기

Tip&Tech/아마니&그누보드|2022. 10. 26. 02:30
반응형

그누보드 여분 필드는 이전 강좌에서 살펴본 것과 같이 wr_1 부터 wr_10 까지 총 10개만 제공하고 있습니다.

10개도 적당해 보이긴 하지만 스킨 제작하면서 부족할 경우 참고해서 추가하면 됩니다.

 

방법은 어렵지 않습니다. 

원하는 게시판 테이블에 wr_11, wr_12.... 등과 같이 필드를 생성하고 update 쿼리에서 추가하면 됩니다.

wr_10번 까지는 별도로 수정하지 않아도 이 과정들이 모두 기본으로 적용되어 있어서 그냥 가져다 쓰면 되지만 10번 이후부터는 저런 부분들을 수정해야 사용할 수 있습니다.

 

어떻게 생성하고 추가해야 하는지 좀 더 자세하게 살펴보겠습니다.

 

 

1. 필드 생성

 

phpMyAdmin 을 이용해서 원하는 개수만큼 필드를 생성합니다.

 


 

- 좌측에서 필드를 추가하고 싶은 게시판 테이블 선택

  (게시판 테이블 이름은 g5_write_notice 형식으로 되어 있습니다. 뒤에 notice 부분이 게시판id 입니다)

- 상단 탭 메뉴에서 구조 클릭

Add [10] field(s) 입력란에 원하는 개수 추가 (예를 들어 10개를 추가해보겠습니다)

- 위치는 wr_10 다음에 (wr_10 필드가 마지막에 있으므로 테이블의 마지막으로 선택해도 됩니다)

- 실행

 

 


 

기존에 있던 wr_10 번까지의 여분 필드와 동일한 형식으로 입력합니다.

모두 입력 후 저장 클릭!

 

 


 

정상적으로 추가되었는지 확인하세요.

기존 여분 필드와 필드 속성들이 동일한지 체크

 

 

 

2. 스킨 파일 수정

 

스킨 폴더 안에 write_update.skin.php 파일을 새로 생성하고 내용은 이렇게 하세요.

기본 스킨에는 이 파일이 없을 겁니다.

 

<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$sql = " update $write_table
            set wr_11 = '$wr_11',
                 wr_12 = '$wr_12',
                 wr_13 = '$wr_13',
                 wr_14 = '$wr_14',
                 wr_15 = '$wr_15',
                 wr_16 = '$wr_16',
                 wr_17 = '$wr_17',
                 wr_18 = '$wr_18',
                 wr_19 = '$wr_19',
                 wr_20 = '$wr_20'
          where wr_id = '$wr_id' ";
sql_query($sql);
?>
 

 

* 유의 사항

 

마지막 이 부분 끝에는 쉼표가 절대 들어가면 안 됩니다. 나머지 변수는 쉼표를 꼭 넣어야 하고요.

wr_20 = '$wr_20'

여기서 실수하시는 분들이 꽤 많습니다.

추가된 개수에 상관없이 항상 마지막에는 쉼표를 제거하세요.

 

 

 

 

* 새로 추가한 필드에 정상적으로 값이 저장 및 수정되는지 확인

 

write.skin.php 파일에 추가해서 테스트

 

<input type="text" name="wr_11" value="<?php echo $write['wr_11'] ?>" id="wr_11" class="frm_input" size="20">

....

....

 

 

처음엔 기존 여분 필드와 똑같은 형식으로 추가해보면서 완벽하게 이해를 하신 상태에서

이후에는 필요에 따라 필드명을 원하는 이름으로 생성해도 되고 필드 타입도 변경해서 사용해도 됩니다.

wr_11 이런 필드명은 용도를 한눈에 파악하기 어려운 면도 있죠.

 

 

 

* 유의사항

 

11번 이후부터는 입력 페이지에서 value 값을 넣을 때 반드시 <?php echo $write['wr_11'] ?> 이렇게 해야 합니다.

간혹 <?php echo $wr_11 ?> 이렇게만 하시는 분들이 계시던데 수정 모드일 때 저장된 값을 불러오지 못합니다.

 

이유는 bbs/write.php 파일에서 $wr_ 가변 변수가 10번까지만 설정되어 있기 때문입니다.

여기서 수정해도 되긴 하지만 위 방법처럼 스킨에서 처리하는게 나중에 보안패치할 때 좋겠죠.

 

// 가변 변수로 $wr_1 .. $wr_10 까지 만든다.
for ($i=1; $i<=10; $i++) {
    $vvar = "wr_".$i;
    $$vvar = $write['wr_'.$i];
}

반응형
LIST

댓글()