공지가 있을때까지 구매요청/제휴/견적요청을 받지 않습니다.

특강. [그누보드를 알자2] 그누보드 스킨 > PHP 강좌

본문 바로가기
사이트 내 전체검색

HOT - 펜션예약솔루션 - 그누보드5

HOT - 중고차매매솔루션 - 그누보드5

HOT - 중고차매매솔루션 - 그누보드4

HOT - 펜션예약솔루션 - 그누보드4

NEW - 인터넷뉴스 솔루션 - 그누보드5

계좌정보

  • 국민 : 028201-01-019932
  • 대구 : 068-07-021683-8
  •  
  • 예금주 : 림소프트/김상림
  •  

파트너쉽

PHP 강좌

특강. [그누보드를 알자2] 그누보드 스킨

페이지 정보

작성자 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일12-03-14 02:52 조회8,679회 댓글3건

본문

스킨강좌를 생각하고, 할게 많을거라 생각했습니다만.. 열어보니 많지 않아 보이더군요..

그래서,초보자 분들을 위해 개념좀 살펴보고, 스킨소스도 간간히 살펴보는걸로 시작하겠습니다.


그누보드에 스킨의 종류는 많습니다. 게시판, 멤버관련(외부로그인,회원가입, 폼메일, 스크랩, 패스워드등..), 설문조사, 검색등등..

이중에서 공통적으로 개념적인 부분과 가장 인기?가 많은 게시판과 로그인관련해서 알아보겠습니다.


스킨(skin)은 피부,껍질등의 뜻으로 쓰이지요. 공개보드에서의 이런 스킨개념도 마찬가지입니다.


우리의 알몸을 core라 한다면 옷이 skin에 해당합니다.

플러그인은 팔하나를 더 붙이는 격이 되거나 하겠네요..


그누보드의 가장 핵심기능들은, 회원, 게시판 부분일겁니다. 홈페이지에 있어 가장 기본적이면서 필수로 필요한 부분입니다.

회원이나 게시판이나 눈에 안보이는 부분들이 바늘이면 실과 같이 연결되는 것이 눈에 보이는 스킨일겁니다.

제가 이런 예로 설명을 하는것은 스킨에 대한 부담감이나 두려움?을 해소키 위함입니다.

스킨은 스킨에 불과합니다만, 근데, 이게 단순히 옷을 입는 것이 아닌, 프로그램이다보니 무한한 확장성이 가능하다는 점입니다.

즉, 스킨으로 스킨이 아닌 또다른 플러그인방식의 덩어리처럼 만드는것도 가능하다는 것입니다.


먼저 게시판에 대해 알아보면 게시판은, 기본적으로 글쓰기폼파일, 글쓰기가 실행되는 파일, 작성된 글 내용보는 파일, 글 목록보는 파일, 부가적으로 댓글부분이 있습니다.

여기서 눈에 안보이는 글쓰기 후 실행되는 파일은 그누보드core 파일(bbs/write.update.php)에서 이루어집니다.

그렇게 해서, 게시판 스킨폴더(skin/bbs/basic/)를 보면 아래와 같습니다.


_common.php
ajax.filter.php
list.skin.php
view.skin.php
view_comment.skin.php
write.skin.php

파일명만 보아도 어떤 역할의 파일들이라는 걸 짐작이 갑니다.


이중 _common.php 파일은 바로 앞강좌에서 이야기가 있었고, ajax.filter.php 파일이 부가적으로 들어있습니다.


목록을 보여주는 list.skin.php 파일부터 소스를 열어보면 상단부터 css, table 및 div 태그들로 쌓여있고, for 문이 나옵니다.

여기서 가장 중요한 부분은 for문으로,

<? 
    for ($i=0; $i<count($list); $i++) { 
        $bg = $i%2 ? 0 : 1;
    ?>


위와 같이 시작을 합니다. 저 $list 변수는 어디서 오는 것일까요? bbs/list.php 에서 살펴볼수 있고, 또 그것은 common.php 에서 get_list()라는 함수에서 얻어져 내려옵니다.


get_list() 이 함수가, 리스트 그리고 내용보기 변수를 정의해주는 함수입니다. 글넘버(wr_id)에서 부터 제목, 내용, 작성자등 거의 게시판 테이블의 필드정보를 담고 있습니다.

스킨 중간에 보면 $list[$i][icon_new] 라는 new 아이콘에 대한 변수가 보이는데, get_list() 함수에서 미리 정의되어 있기때문에 사용할수 있다는 뜻이고, 이 $list 변수에는 게시판 아이디값은 없는데, 이를 사용하고 싶다면 get_list() 적당한 부분에
$list['bo_table']=$board[bo_table];


라고 넣어주면, 스킨에서 $list[$i][bo_table] 변수를 사용할수가 있게됩니다.

아참, get_list() 함수는 lib/common.lib.php 에 있습니다.


스킨을 알려면 그 원천적인 것부터 이해하고 있어야 그 맛을 제대로 알고 사용할수 있습니다. 그것을 모르고 스킨에서의 변수나 태그등을 일일이 설명하거나 이해하는 것은 시간낭비입니다.

div를 모르신다면 table 태그를 먼저 공부하시고, 그리고 위 이야기들을 참고하여 스킨을 바꾸는것이 무턱대고 스킨파일을 열어 덤벼들기보다 의미가 있을거라 생각합니다.

스킨파일에는, html태그외 php 소스들이 꽤 보입니다만, 대부분 앞에서 이야기한 부분들입니다. 어느정도 준비가 되신건지 저로서는 알수 없지만, 가능은 할것이라는 말씀은 드릴수 있습니다.

제가 이야기한 것들은 개념부분들이라 세세한 부분이 어려우시면 검색을 하시면 많은정보를 얻으실수 있습니다.

하지만!

전체는 아니더라도,이번강좌에는 내용이 많으니, 이어지는 강좌에서 소스에 대해 어느정도 설명을 붙여 도움드리도록 해보겠습니다.


$list 변수와 같이 사용되는 것이 $view 입니다. 리스트글이니깐 반복문이 사용된것이고, 글 내용보기에는 반복문이 없이 $view으로 변수명이 바뀐것이라 이해하시면 될겁니다.


글작성과 관련하여 $write 변수는 글 수정시 필요한 변수입니다. 당연한 이야기입니다만, 이 변수는 어디서 올까요?

아마 bbs/write.php 파일이라고 짐작이 되실겁니다. 그러나 바로 안보이고, 찾아보면.. 루트의 common.php파일에서 찾을수 있습니다.

$write_table = "";
if (isset($bo_table)) {
    $board = sql_fetch(" select * from {$g4['board_table']} where bo_table = '$bo_table' ");
    if ($board['bo_table']) {
        $gr_id = $board['gr_id'];
        $write_table = $g4['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
        //$comment_table = $g4['write_prefix'] . $bo_table . $g4['comment_suffix']; // 코멘트 테이블 전체이름
        if ($wr_id)
            $write = sql_fetch(" select * from $write_table where wr_id = '$wr_id' ");
    }
}


잠깐 살펴보면 $bo_table 변수가 정의 되어 있으면(isset()) $board 변수도 여기서 넘어오는걸 알고 있고, $board는 게시판이 아니라, 게시판들을 묶은 게시판그룹 테이블입니다. if($board[bo_table]) 의 의미는, 그룹이 있어야 게시판을 만들수 있다는걸 이야기할테고, 이하 $write 라는 변수에서 wr_id 글번호로 검색된 게시판의 정보를 fetch 배열로 담는다는 것이 있습니다.

수정이니깐, 글정보를 가져와야 하는 것과 글내용 보기일때 글정보를 가져오는 건 같습니다. 이때 사용되는 것이 유일무이한 고유값이 사용되고 그누보드 게시판에서는 글번호(wr_id)가 이에 해당합니다.

부가적으로 wr_id이라는 필드명은, 제작자 마음입니다만 통상 글번호를 사용해서 게시판을 만들어 글을 작성하고 글을 추출합니다. 유일무이한 값이면서, 글하나 작성하면 자동적으로 +1 되어 저장이 됩니다.(auto increament)

https://www.google.co.kr/search?hl=ko&newwindow=1&biw=1280&bih=905&noj=1&sclient=psy-ab&q=auto+increament&oq=auto+increament&aq=f&aqi=&aql=&gs_sm=12&gs_upl=2345560l2345560l0l2345757l1l1l0l0l0l0l174l174l0.1l1l0&gs_l=serp.12...2345560l2345560l0l2345758l1l1l0l0l0l0l174l174l0j1l1l0.frgbld

wr_id를 계속 설명하는 이유는, get과 db에 값이 들어가고 나오고를 연결해주는 아주 중요한 변수이기때문입니다.


간단히 원리를 이야기하면..

글작성시 예로,
<?
mysql_query("insert into table_name set wr_subject='글제목',wr_content='글내용',.....");

$wr_id=mysql_insert_id();
?>

위와 같이 글 하나가 작성이 됐다면 바로 아래 mysql_insert_id() 함수가 보이는데, 바로 위에 insert into 된 글에 대한 auto increament 값을 알려줍니다. 그 값이 $wr_id에 담겨 아래와 같이 됩니다.

<?
alert("글이 작성됐습니다.",$g4[bbs_path]."/board.php?wr_id=$wr_id&bo_table=게시판아이디");
?>

이 한줄에 의해 작성된 글이 게시판글보기로 이동이 될겁니다.

물론,어느정도 그누보드 기준으로 이야기 됐습니다만, 다른 게시판이나 소스도 비슷합니다.


이렇게 되면, 글작성시 글작성 된후, 글작성 되고 난 후의 목록 for문 이야기, 그리고 게시글 보는 $view 이야기등 어느정도 개념파악에는 충분하다고 생각이 듭니다.

마지막으로 파일에서 파일로 변수값을 전달하는 방식을 잠깐 설명하고 이번강좌는 정리하겠습니다.

GET과 POST가 있습니다.


똑같이 변수값을 파일에서 파일로 전달을 합니다만 <form method="GET" action="write_ok.php"...> 방식은 action될때, <input 태그나 각종 폼태그(변수값)들의 값들이 브라우져의 url 주소를 통해 그대로 보여져 넘어갑니다. 반면 action 파일만 보일뿐 넘겨지는 변수나 값이 안보이는 방식이 POST 방식으로, 보안과 관련이 되고 POST전송후에 새로고침시 다시전송이라는 창이 뜨는 이유가 됩니다.

눈치채셨겠지만, 글내용보기시 글수정시 GET 변수전달 방식을 통해 글을 추출을 해냅니다.

GET은 위 예에서 글작성 후 ?..... 물음표뒤로 & 표시를 주기로 하여 "변수명=값" 형식으로 사용되며, 글작성후 board.php 파일에서 echo $wr_id; 를 해보면 해당 글번호가 찍히는게 확인됩니다.


이 $wr_id를 이용하여 글에 대한 정보를 추출하여 수정이나 글내용보기가 가능하겠습니다.

만약, 회원이라면 회원고유값을 같이 저장시켜, 해당 회원이 글만 조회하거나 글 정보를 가져온 후 담겨진 회원정보와 일치확인 여부를 통해 비밀글을 구현할수 있겠습니다.

어찌하다보니 계속 이야기를 하게 되는데, 너무 길면 지루해지니 여기정도에서 마무리하고 다음 강좌에서 게시판 스킨파일의 소스를 대략적으로 살펴보도록 하겠습니다.

댓글목록

INBEST님의 댓글

INBEST 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물

인생살이 이든, 학문이든 기초가 중요한데...

지금까지 대~충 알고있어, 항상 초급자에서 벗어나지 못하고 있었는데
림스님의 쪽집게 강의를 들으면서
어쩌면, 잘? 할수 있다는 자신감이 듭니다.

동기를 부여해 주신 림스님께 감사 !!

Total 18건 1 페이지
PHP 강좌 목록
번호 제목 글쓴이 날짜 조회
공지 강좌 들어가기전에.. 댓글6 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-11 3188
17 php 초급에서 반드시 짜 보아야 할 것들 댓글1 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 07-09 3703
16 알고리즘과 경우의 수 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 06-02 3403
15 그누보드 게시판 테이블 그리고 댓글 댓글2 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 05-02 6862
14 웹표준? 댓글2 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 04-13 2962
13 특강. [그누보드를 알자4] 그누보드 스킨(board-list.skin.php) 댓글2 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 04-07 7913
12 특강. [그누보드를 알자3] 그누보드 스킨(board-write.skin.php) 댓글2 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-21 24929
열람중 특강. [그누보드를 알자2] 그누보드 스킨 댓글3 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-14 8680
10 특강. [그누보드를 알자1] 그누보드 루트파일들 댓글3 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-08 7591
9 7강. 썸네일 댓글5 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-07 3378
8 6강. 중간 마무리 댓글2 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 03-03 2357
7 5강. html에서 form 개념과 php, mysql 연관성 댓글3 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-27 4580
6 4강. [문법] 반복문 for, while 댓글7 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-25 3317
5 [그누보드관련] 쉬는 타임 댓글3 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-21 3416
4 3강. [문법] 조건문 if, else, elseif, switch 인기글 rimsoft 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 02-18 19447
게시물 검색

접속자집계

오늘
54
어제
130
최대
425
전체
364,728
그누보드5

림소프트 / 515-08-36933 / 제2014-경북경산-00079 / 양명주 / ifnelse@gmail.com
© Copyright rimsoft.co.kr . All Rights Reserved.

댓글이 달렸습니다.

모바일 버전으로 보기