- 게시판 스킨 구조
- list.skin.php : 게시판 접속 시 목록 스킨
- view.skin.php : 상세 글 스킨
- write.skin.php : 글쓰기 스킨
- write_update.skin : 새 글 올라가기 전 들르는 곳 (안내 팝업 삽입 등)
- 폼 게시판과 메인 폼이 연동
-> write.skin.php, view.skin.php,메인폼 3개에 똑같은 필드값이 다 들어가야함
1. 게시판 세팅 - 분류(category) 만들기
- 게시판 기본 설정 - 분류 - select option 값 넣어주기
2. 게시판 세팅 - write.skin.php, view.skin.php 세팅
- 여분 필드 이용해서 변수 만들기
- 여분 필드 : wr_1 ~ wr_10 ; 10개 / 게시판 설정 여분필드 : bo_1 ~ bo_10 ; 10개
- 총 20개, DB수정하면 100개 이상도 가능 (아마?)
- label for / input id, name, value 변수 통일
- value 값이 view페이지에 출력됨 / name 값이 데이터로 연동됨 ( DB테이블 필드 이름)
- name에 변수를 넣어야 value 값으로 변수가 담겨 넘어감
<label for="wr_1" class="sound_only">생년월일<strong>필수</strong></label>
<input type="text" name="wr_1" value="<?php echo $wr_1?>" id="wr_1" required class="frm_input required" placeholder="생년월일">
<label for="wr_2" class="sound_only">핸드폰번호<strong>필수</strong></label>
<input type="text" name="wr_2" value="<?php echo $wr_2 ?>" id="wr_2" required class="frm_input required" placeholder="핸드폰번호">
*radio 소스
-name 값이 다 같으므로 라디오마다 저마다 value값 삽입해줘야 함
<input type="radio" name="wr_3" value="여성" <?php echo get_checked($write['wr_3'], '여성'); ?>>
<label for="wr_3" class="">여성</label>
<input type="radio" name="wr_3" value="남성" <?php echo get_checked($write['wr_3'], '남성'); ?>>
<label for="wr_3" class="">남성</label>
<div class="consult_feild">
<span><label for="f1"><input type="radio" id="f1" value="일반세무조사" name="wr_8" <?php echo ($write['wr_8']== '일반세무조사')?>><span class="radio_mark"></span>일반세무조사</label></span>
<span><label for="f2"><input type="radio" id="f2" value="증여/상속 탈루 탈세" name="wr_8" <?php echo ($write['wr_8']== '증여/상속 탈루 탈세') ?>><span class="radio_mark"></span>증여/상속 탈루 탈세</label></span>
<span><label for="f3"><input type="radio" id="f3" value="비정기세무조사" name="wr_8" <?php echo ($write['wr_8']== '비정기세무조사') ?>><span class="radio_mark"></span>비정기세무조사</label></span>
<span><label for="f4"><input type="radio" id="f4" value="조세범칙" name="wr_8" <?php echo ($write['wr_8']== '조세범칙') ?>><span class="radio_mark"></span>조세범칙</label></span>
<span><label for="f5"><input type="radio" id="f5" value="정기 세무조사" name="wr_8" <?php echo ($write['wr_8']== '정기 세무조사') ?>><span class="radio_mark"></span>정기 세무조사</label></span>
<span><label for="f6"><input type="radio" id="f6" value="조세불복" name="wr_8" <?php echo ($write['wr_8']== '조세불복') ?>><span class="radio_mark"></span>조세불복</label></span>
</div>
*select 소스
- category를 select로 처리
<select name ="ca_name" required value=="<?=$ca_name?>">
<option value="의료실비보험01" <? if($ca_name =="의료실비보험01") echo "selected";?>>의료실비보험01</option>
<option value="의료실비보험02" <? if($ca_name =="의료실비보험02") echo "selected";?>>의료실비보험02</option>
<option value="의료실비보험03" <? if($ca_name =="의료실비보험03") echo "selected";?>>의료실비보험03</option>
</select>
- 여분필드 이용
<div class="bo_w_ico write_div">
<select name ="wr_4" required id="wr_4" value="wr_4">
<option value="거주지역">거주지역</option>
<option value="서울" <?php echo ($write['wr_4'] == "서울") ? " selected" : "";?>>서울</option>
<option value="경기" <?php echo ($write['wr_4'] == "경기") ? " selected" : "";?>>경기</option>
<option value="강원" <?php echo ($write['wr_4'] == "강원") ? " selected" : "";?>>강원</option>
</select>
</div>
*checkbox 소스 (배열로 처리)
--> 예제 : write.skin.php에서 체크박스 선택 시 view.skin.php에서 색상과 함께 출력
--> 참고 : gnustudy.com/bbs/board.php?bo_table=skin_board&wr_id=177
1) wirte.skin.php 세팅 : 여분필드에 array 담기
- value, in_array 안에 태그 삽입 (색상은 class로)
<dl>
<dt>기본 색상</dt>
<dd>
<label>
<input type="checkbox" value="<li class='circle red'></li>"<?php echo in_array("<li class='circle red'></li>", $check1) ? ' checked="checked"' : '' ?> name="check1[]">
<span class="checkmark"></span>RED
</label>
<label>
<input type="checkbox" value="<li class='circle blue'></li>"<?php echo in_array("<li class='circle blue'></li>", $check1) ? ' checked="checked"' : '' ?> name="check1[]" >
<span class="checkmark"></span>BLUE
</label>
<label>
<input type="checkbox" value="<li class='circle black'></li>"<?php echo in_array("<li class='circle black'></li>", $check1) ? ' checked="checked"' : '' ?> name="check1[]" >
<span class="checkmark"></span>BLACK
</label>
<label>
<input type="checkbox" value="<li class='circle yellow'></li>"<?php echo in_array("<li class='circle yellow'></li>", $check1) ? ' checked="checked"' : '' ?> name="check1[]" >
<span class="checkmark"></span>YELLOW
</label>
</dd>
</dl>
-상단에 array explode
- 문자열을 구분자로 나누어 배열로 변환
- $check1 = explode( $write['wr_10']);
sql_query(" update $write_table set wr_10 = '$wr_10', wr_10 = '$wr_10' where wr_id = '$wr_id' ")
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css?v2">', 0);
$check1 = explode( $write['wr_10']);
sql_query(" update $write_table set wr_10 = '$wr_10', wr_10 = '$wr_10' where wr_id = '$wr_id' ");
?>
2) wirte_update.skin.php 세팅
- 상단에 array implode
- 배열을 특정 구분자를 기준으로 문자열로 변환
- $wr_10 = implode($_POST['check1']);
- sql_query(" update $write_table set wr_10 = '$wr_10', wr_10 = '$wr_10' where wr_id = '$wr_id' ");
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$wr_10 = implode($_POST['check1']);
sql_query(" update $write_table set wr_10 = '$wr_10', wr_10 = '$wr_10' where wr_id = '$wr_id' ");
alert("정상적으로 접수되었습니다.");
?>
<script> location.href = "<?php echo G5_BBS_URL ?>/write.php?bo_table=<?php echo $bo_table ?>"; </script>
3) view.skin.php 세팅
- 상단에 array explode
- $check1 = explode( $view['wr_10']);
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
$check1 = explode( $view['wr_10']);
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
add_stylesheet('<link rel="stylesheet" href="'.G5_THEME_URL.'/plugin/bxslider/jquery.bxslider.min.css">', 0);
?>
- 변수 호출
<ul style="font-size:0px;">
<?php echo $view['wr_10'] ?>
</ul>
* list.skin.php 변수
<?php echo $list[$i]['wr_1'] ?>
* 여분 필드에 array 담을 때, 한 개에 담길 수 있는 kb양이 제한적
--> 체크박스 옵션이 너무 많다면 array 하나 더 만들어서 다른 변수에 담아서 사용
3. 메인 폼 세팅
- 폼태그 데이터 넘기기
- action = "write_update01.php"
- 새 글 데이터 올라가는 곳
-update01.php를 만든 이유는 "자동입력방지" 알림창 꺼진 스킨 필요
- input token : 고유값, 개발자 작성 (보안유의!)
- wr_subject, wr_content는 게시판 필수 입력값, 벨류값 강제로 지정해서 들어가게끔
<form name="fwrite" id="fwrite" method="post" action="/bbs/write_update01.php" onsubmit="return checkFrm(this);">
<input type="hidden" name="token" value="f30b9b4b4f47b1404925ab006311ec0f"> <!--db넘길때 필요한 토큰 (고유)-->
<input type="hidden" name="bo_table" value="new_form_new"> <!--넘길 게시판, value에 테이블 이름-->
<input type="hidden" name="wr_subject" value="상담이 접수되었습니다."> <!--게시판 필수 필드 숨기기,벨류값 강제 지정-->
<input type="hidden" name="wr_content" value="접수"> <!--게시판 필수 필드 숨기기,벨류값 강제 지정-->
</form>
- 약관 동의 알림창 넣기
<script type="text/javascript">
function checkFrm(obj) {
if(obj.wr_6.checked == false) {
alert('개인정보수집 및 이용 동의에 체크해주세요.');
obj.wr_6.focus();
return false;
}
if(obj.wr_7.checked == false) {
alert('마케팅정보 수신 동의에 체크해주세요.');
obj.wr_7.focus();
return false;
}
}
</script>
<body>
<ul class="agree">
<li><label for="agr1"><input type="checkbox" id="agr1" name="wr_6" value="6" />개인정보수집 및 이용 동의</label></li>
<li><label for="agr2"><input type="checkbox" id="agr2" name="wr_7" value="7"/>마케팅정보 수신 동의</label></li>
</ul>
</body>
- "자동 입력 방지" 알림창 끄기 (write_upadte.php)
if ($is_use_captcha && !chk_captcha()) {
alert('자동등록방지 숫자가 틀렸습니다.');
}
- 완료 시 팝업창 띄우기
- 해당 폼 게시판 스킨에 write_update.skin.php 생성, 팝업창 넣기
<?php
if (!defined('_GNUBOARD_')) exit;
alert("정상적으로 접수되었습니다.");
?>
<script> location.href = "<?php echo G5_BBS_URL ?>/write.php?bo_table=<?php echo $bo_table ?>"; </script>
- 그러면, submit 버튼 클릭 시,
wirte.update.php 로 우선 이동, 거기서 write_update.skin.php이 있으면 들려서 팝업을 띄움
(write_update.skin.php 이 include 되어있음)
@include_once($board_skin_path.'/write_update.head.skin.php'); //$board_skin_path = 해당 게시판 스킨
'CMS > 그누보드' 카테고리의 다른 글
그누보드 게시판 분류 (catogory) (0) | 2020.09.09 |
---|---|
그누보드 문자발송 서비스 (0) | 2020.08.31 |
그누보드 최근 게시글 출력 (0) | 2020.08.30 |
그누보드 서브 페이지 생성 (menu 및 title) (0) | 2020.08.30 |
그누보드 설치방법 및 구조 (head.lib.php) (0) | 2020.08.30 |