안녕하세요?
현재 kboard_setting.php에 다음과 같이 새로운 값을 추가했습니다:
<tr valign="top"> <th scope="row"><label for="myskin_number">게시물 표시</label></th> <td> <select name="myskin_number" id="myskin_number" class=""> <?php if(!$board->myskin_number) $board->myskin_number=1;?> <option value="1"<?php if($board->myskin_number == 1):?> selected<?php endif?>>basic-grey</option> <option value="2"<?php if($board->myskin_number == 2):?> selected<?php endif?>>elegant-aero</option> <option value="3"<?php if($board->myskin_number == 3):?> selected<?php endif?>>smart-green</option> <option value="4"<?php if($board->myskin_number == 4):?> selected<?php endif?>>white-pink</option> <option value="5"<?php if($board->myskin_number == 5):?> selected<?php endif?>>bootstrap-frm</option> <option value="6"<?php if($board->myskin_number == 6):?> selected<?php endif?>>dark-matter</option> <option value="7"<?php if($board->myskin_number == 0):?> selected<?php endif?>>랜덤</option> </select> <p class="description">스킨 번호를 지정합니다.</p> </td> </tr>
그리고 index.php 파일에 다음과 같은 항목을 추가했습니다.
1.
if(!current_user_can('activate_plugins')) wp_die('KBoard : 관리 권한이 없습니다.');
$board_id = isset($_POST['board_id'])?intval($_POST['board_id']):'';
$board_name = isset($_POST['board_name'])?addslashes($_POST['board_name']):'';
$skin = isset($_POST['skin'])?$_POST['skin']:'';
$page_rpp = isset($_POST['page_rpp'])?$_POST['page_rpp']:'';
$myskin_number = isset($_POST['myskin_number'])?$_POST['myskin_number']:'';
...
2.
if(!$board_id){
$wpdb->query("INSERT INTO `{$wpdb->prefix}kboard_board_setting` (`board_name`, `skin`, `page_rpp`, '$myskin_number', `use_comment`, `use_editor`, `permission_read`, `permission_write`, `admin_user`, `use_category`, `category1_list`, `category2_list`, `created`) VALUE ('$board_name', '$skin', '$page_rpp', '$myskin_number', '$use_comment', '$use_editor', '$permission_read', '$permission_write', '$admin_user', '$use_category', '$category1_list', '$category2_list', '$create')");
$board_id = $wpdb->insert_id;
}
else{
$wpdb->query("UPDATE `{$wpdb->prefix}kboard_board_setting` SET `board_name`='$board_name', `skin`='$skin', `page_rpp`='$page_rpp', `myskin_number`='$myskin_number', `use_comment`='$use_comment', `use_editor`='$use_editor', `permission_read`='$permission_read', `permission_write`='$permission_write', `use_category`='$use_category', `category1_list`='$category1_list', `category2_list`='$category2_list', `admin_user`='$admin_user' WHERE `uid`='$board_id'");
}
3.
$wpdb->query("CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}kboard_board_setting` (
`uid` bigint(20) unsigned NOT NULL auto_increment,
`board_name` varchar(127) NOT NULL,
`skin` varchar(127) NOT NULL,
`use_comment` varchar(5) NOT NULL,
`use_editor` varchar(5) NOT NULL,
`permission_read` varchar(127) NOT NULL,
`permission_write` varchar(127) NOT NULL,
`admin_user` text NOT NULL,
`use_category` varchar(5) NOT NULL,
`category1_list` text NOT NULL,
`category2_list` text NOT NULL,
`page_rpp` int(10) unsigned NOT NULL,
`myskin_number` int(10) unsigned NOT NULL,
이렇게 추가하고 editor.php 파일에서는
$skinno = $board->myskin_number;
if ($skinno == 1) {
echo 'layout1';
}
elseif ($skinno == 2) {
echo 'layout2';
}
...
이런식으로 추가했습니다.
하지만 값이 제대로 전달이 되지 않고 있습니다. 누락된 부분이 오류가 있는 부분을 알려주시면 감사하겠습니다.
항상 감사합니다.
쿼리가 정확한건가요?
$wpdb->query("INSERT INTO `{$wpdb->prefix}kboard_board_setting` (`board_name`, `skin`, `page_rpp`, '$myskin_number', `use_comment`, `use_editor`, `permission_read`, `permission_write`, `admin_user`, `use_category`, `category1_list`, `category2_list`, `created`) VALUE ('$board_name', '$skin', '$page_rpp', '$myskin_number', '$use_comment', '$use_editor', '$permission_read', '$permission_write', '$admin_user', '$use_category', '$category1_list', '$category2_list', '$create')");
위 코드에서 $myskin_number 값이 추가된 위치는 컬럼명이 들어가야 합니다. VALUE 부분에 해당 값을 넣어주셔야 합니다.
테이블을 수정하지 말고
$meta = new KBoardMeta($board_id);
$meta->use_direct_url = isset($_POST['use_direct_url'])?$_POST['use_direct_url']:'';
이런식으로 메타에 값을 추가해주시는걸 추천합니다!
echo $meta->use_direct_url; 이렇게 해주시면 값을 출력할 수 있습니다.
답변 감사합니다.
index.php 파일에
if($board_id){
$meta = new KBoardMeta($board_id);
$meta->use_direct_url = isset($_POST['use_direct_url'])?$_POST['use_direct_url']:'';
$meta->mynew_skin_number = isset($_POST['mynew_skin_number'])?$_POST['mynew_skin_number']:'';
...
와 같이 추가하고
kboard-setting.php 파일에
<tr valign="top"> <th scope="row"><label for="mynew_skin_number">게시물 표시</label></th> <td> <select name="mynew_skin_number" id="mynew_skin_number" class=""> <option value="1"<?php if($meta->mynew_skin_number == 1):?> selected<?php endif?>>basic-grey</option> <option value="2"<?php if($meta->mynew_skin_number == 2):?> selected<?php endif?>>elegant-aero</option> <option value="3"<?php if($meta->mynew_skin_number == 3):?> selected<?php endif?>>smart-green</option> </select> <p class="description">스킨 번호를 지정합니다.</p> </td> </tr>
위와 비슷하게 추가했는데도 editor.php에서 echo $meta->mynew_skin_number;를 해도 값이 출력되지 않습니다. 메타에 값을 추가할 경우 위의 두 군데 이외에 또 해 주어야 하는 설정이 있을까요?
감사합니다.
관리자쪽 설정에서는 $meta->mynew_skin_number 값이 제대로 저장되나요?
관리자쪽에는 문제 없어 보입니다.
스킨의 editor.php 파일에서 사용하시려면
<?php
$meta = new KBoardMeta($board->id);
echo $meta->mynew_skin_number;
?>
이렇게 먼저 KBoardMeta 클래스를 생성해주셔야 합니다^^
말씀하신 방법대로 $meta를 editor.php에 추가하니 잘 되네요.
대단히 감사합니다.