모바일 게시판에서 상단 하단 파일을 별도로 관리하는 방법 - 게시판스킨강좌, 그누보드5강좌

본문 바로가기
전체검색

게시판스킨강좌

그누보드, 영카트 초보 제작자분들을 위한 다양한 스킨 제작 활용 팁을 공유합니다.

모바일 게시판에서 상단 하단 파일을 별도로 관리하는 방법

관리자 17-09-26 23:19

그누보드 모바일에서는 게시판 상단 하단 파일을 별도로 설정할 수 없게 되어 있습니다.

게시판 설정 여분 필드를 사용해서 모바일에서도 상 하단 파일을 사용할 수 있도록 수정하는 방법입니다.


게시판 설정에 있는 여분 필드 bo_1, bo_2 두 개를 사용했습니다.


1. 수정 파일 : bbs/board_head.php


if (G5_IS_MOBILE) {
    // 모바일의 경우 설정을 따르지 않는다.
    include_once(G5_BBS_PATH.'/_head.php');

    echo html_purifier(stripslashes($board['bo_mobile_content_head']));
} else {
 

위 내용을 이렇게 수정


if (G5_IS_MOBILE) {
    if(is_include_path_check($board['bo_1'])) {  //파일경로 체크
        @include ($board['bo_1']);
    } else {    //파일경로가 올바르지 않으면 기본파일을 가져옴
        include_once(G5_BBS_PATH.'/_head.php');
    }
    echo html_purifier(stripslashes($board['bo_mobile_content_head']));
} else {



 

2. 수정 파일 : bbs/board_tail.php


if (G5_IS_MOBILE) {

    echo html_purifier(stripslashes($board['bo_mobile_content_tail']));
    // 모바일의 경우 설정을 따르지 않는다.
    include_once(G5_BBS_PATH.'/_tail.php');
} else {
 

위 내용을 이렇게 수정


if (G5_IS_MOBILE) {
    echo html_purifier(stripslashes($board['bo_mobile_content_tail']));
    if(is_include_path_check($board['bo_2'])) {  //파일경로 체크
        @include ($board['bo_2']);
    } else {    //파일경로가 올바르지 않으면 기본파일을 가져옴
        include_once(G5_BBS_PATH.'/_tail.php');
    }
} else {
 



3. 수정 파일 : adm/board_form.php


3-1.

아래 내용을 찾은 후 빨간색 부분 추가


...................................................
$board['bo_include_head'] = '_head.php';
$board['bo_include_tail'] = '_tail.php';
$board['bo_1'] = '_head.php';
$board['bo_2'] = '_tail.php';
 


3-2.


게시판 상단 파일 경로, 하단 파일 경로 설정 부분 밑에 아래 내용 전체를 추가


        <tr>
            <th scope="row"><label for="bo_1">모바일 상단 파일 경로</label></th>
            <td>
                <input type="text" name="bo_1" value="<?php echo $board['bo_1'] ?>" id="bo_1" class="frm_input" size="50">
            </td>
            <td class="td_grpset">
                <input type="checkbox" name="chk_grp_mobile_include_head" value="1" id="chk_grp_mobile_include_head">
                <label for="chk_grp_mobile_include_head">그룹적용</label>
                <input type="checkbox" name="chk_all_mobile_include_head" value="1" id="chk_all_mobile_include_head">
                <label for="chk_all_mobile_include_head">전체적용</label>
            </td>
        </tr>
        <tr>
            <th scope="row"><label for="bo_2">모바일 하단 파일 경로</label></th>
            <td>
                <input type="text" name="bo_2" value="<?php echo $board['bo_2'] ?>" id="bo_2" class="frm_input" size="50">
            </td>
            <td class="td_grpset">
                <input type="checkbox" name="chk_grp_mobile_include_tail" value="1" id="chk_grp_mobile_include_tail">
                <label for="chk_grp_mobile_include_tail">그룹적용</label>
                <input type="checkbox" name="chk_all_mobile_include_tail" value="1" id="chk_all_mobile_include_tail">
                <label for="chk_all_mobile_include_tail">전체적용</label>
            </td>
        </tr>
 


3-3.


하단에 있는 여분 필드 설정 부분에서 $i=3 으로 수정


<?php for ($i=3; $i<=10; $i++) { ?>



정상적으로 수정됐다면 이렇게 추가되어 있을 겁니다.

기본 입력 내용은 게시판을 새로 생성했을 때 자동으로 입력됩니다.

기존에 이미 생성된 게시판들은 별도로 직접 입력해야 합니다.

게시판 개수가 많으면 팁을 모두 적용 후에 그룹적용이나 전체적용 체크박스를 활용하셔도 됩니다.


a4b1baf90099eb0b002ddc11a931b6cd_1506434572_5785.gif



4. 수정파일 : board_form_update.php



4-1.


원본 소스를 보면 아래 내용들과 비슷한 부분이 있을 텐데

bo_1, bo_2 와 관련된 내용을 기존 코드 바로 밑에 추가합니다.


추가 1.


$bo_1 = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($bo_1, 0, 255));
$bo_2 = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($bo_2, 0, 255));


추가 2.


if ($file = $bo_1) {
    $file_ext = pathinfo($file, PATHINFO_EXTENSION);

    if( ! $file_ext || ! in_array($file_ext, array('php', 'htm', 'html')) || ! preg_match('/^.*\.(php|htm|html)$/i', $file) ) {
        alert('모바일 상단 파일 경로의 확장자는 php, htm, html 만 허용합니다.');
    }
    $_POST['bo_1'] = $file;
}

if ($file = $bo_2) {
    $file_ext = pathinfo($file, PATHINFO_EXTENSION);

    if( ! $file_ext || ! in_array($file_ext, array('php', 'htm', 'html')) || ! preg_match('/^.*\.(php|htm|html)$/i', $file) ) {
        alert('모바일 하단 파일 경로의 확장자는 php, htm, html 만 허용합니다.');
    }
    $_POST['bo_2'] = $file;
}



추가 3.


if(!is_include_path_check($bo_1, 1)) {
    alert('모바일 상단 파일 경로에 포함시킬수 없는 문자열이 있습니다.');
}

if(!is_include_path_check($bo_2, 1)) {
    alert('모바일 하단 파일 경로에 포함시킬수 없는 문자열이 있습니다.');
}



4-2.


상단 하단 파일 경로 입력 오른쪽에 있는 그룹적용과 전체적용 체크박스를 사용할 수 있게 수정합니다.


그룹적용

아래 내용을 찾은 후 빨간색 부분 추가

.......................................................
if (is_checked('chk_grp_include_head'))         $grp_fields .= " , bo_include_head = '{$bo_include_head}' ";
if (is_checked('chk_grp_include_tail'))         $grp_fields .= " , bo_include_tail = '{$bo_include_tail}' ";
if (is_checked('chk_grp_mobile_include_head'))         $grp_fields .= " , bo_1 = '{$bo_1}' ";
if (is_checked('chk_grp_mobile_include_tail'))         $grp_fields .= " , bo_2 = '{$bo_2}' ";
 


전체적용

아래 내용을 찾은 후 빨간색 부분 추가

.....................................................
if (is_checked('chk_all_include_head'))         $all_fields .= " , bo_include_head = '{$bo_include_head}' ";
if (is_checked('chk_all_include_tail'))         $all_fields .= " , bo_include_tail = '{$bo_include_tail}' ";
if (is_checked('chk_all_mobile_include_head'))         $all_fields .= " , bo_1 = '{$bo_1}' ";
if (is_checked('chk_all_mobile_include_tail'))         $all_fields .= " , bo_2 = '{$bo_2}' ";


이제 PC 에서처럼 각 게시판 설정에서 모바일용 상단 하단 파일을 설정해서 사용할 수 가 있습니다.


a4b1baf90099eb0b002ddc11a931b6cd_1506435096_0756.gif 



실제 적용이 잘 되는지 테스트를 해보겠습니다.

basic 테마 사용 기준으로 모바일 폴더에 head2.php 와 tail2.php 파일을 생성하고 이렇게 적용해봤습니다.


a4b1baf90099eb0b002ddc11a931b6cd_1506435935_1118.gif 



원본과는 다르게 head2.php 파일에서는 외부로그인이나 글씨 확대 축소 등을 삭제했고

tail2.php 파일에서는 카파리이트 등 하단 내용 전체를 삭제했습니다. 잘 적용되네요.


a4b1baf90099eb0b002ddc11a931b6cd_1506436092_7517.png 

로그인 후 댓글 작성 가능합니다.
그누스킨닷컴

그누스터디는 그누보드, 영카트를 이용하시는 초보 사용자를 위한 정보를 공유합니다.

E-MAIL : gnustudy@naver.com / 카카오톡 : gnustudy / 텔레그램 : gnustudy
제작 문의를 제외한 일반 문의는 QA 게시판을 이용해주세요.

Copyright © GNUSTUDY. All rights reserved.