루미님의 팝업을 게시판에 적용하려는데, 어렵네요

루미님의 팝업을 게시판에 적용하려는데, 어렵네요

QA

루미님의 팝업을 게시판에 적용하려는데, 어렵네요

본문

루미님의 팝업을 갤러리 스킨에 적용하려는데,

리스트 스킨에서 뷰페이지를 불러올수 없어서 

아래와 같이 도움을 요청드립니다.

도와주시면 감사하겠습니다.

 

-----

이 팝업은 JQeury와 CSS로 제작되었으며, plugin 폴더 안에 넣었습니다.

루미님의 안내에 따라 list.skin.php에 아래의 코드를 적용했습니다. 

add_stylesheet('<link rel="stylesheet" href="'.G5_PLUGIN_URL.'/rumipopup/rumiPopup.css?ver='.G5_CSS_VER.'">', 0);

add_javascript('<script src="'.G5_PLUGIN_URL.'/rumipopup/jquery.rumiPopup.js?ver='.G5_CSS_VER.'"></script>', 0);

 

그리고 이 스킨의 맨 하단에 아래의 자바스크립트를 넣었습니다.

<script>

$(document).ready(function() {

$("#btn_pop").click(function() {

rumiPopup.popup({

width : 800, // 팝업창 가로크기

height : 600, // 팝업창 세로크기

fadeIn : true, // 팝업시 fadeIn

fadeinTime : 500, // fadein 지연시간

url : "sample.php", // 불러올 문서 URL

title : "기본팝업창", // 팝업창 제목

buttonView : true, // 하단 사용자 버튼 (true - 표시, false - 숨김)

reloadBtn : true, // 새로 고침 버튼 (true - 표시, false - 숨김)

button : { /* 사용자 버튼 추가 */

"전송" : function(){

$("#rumiIframe").contents().find("#btn_submit").trigger("click");

},

"닫기" : function(){

rumiPopup.close(); // 팝업창 닫기

},

},

open : function(){

/* 팝업창이 열리면서 실행됩니다. */

$("div.rumiButton button:contains('닫기')").css({"background":"#555"});

$("div.rumiButton button:contains('삭제')").css({"background":"#555"}).hide();

},

close : function() {

/* 팝업창이 닫힐때 실행됩니다. */

}

});

});

</script>

 

루미님의 안내에 따르면

- "id"가 "btn_pop"인 버튼을 클릭하면 'sample.php'이 팝업창으로 열리게 됩니다.

 

---

여기서 

'sample.php' 대신 view페이지를 불러와야 합니다.

갤러리 스킨의 list.skin.php에서 아래의 부분을 수정하면 될 듯한데,  

                <div class="gall_con">
                    <div class="gall_img">
                        <a href="<?php echo $list[$i]['href'] ?>">
                        <?php
                        if ($list[$i]['is_notice']) { // 공지사항  ?>
                            <span class="is_notice">공지</span>
                        <?php } else {
                            $thumb = get_list_thumbnail($board['bo_table'], $list[$i]['wr_id'], $board['bo_gallery_width'], $board['bo_gallery_height'], false, true);

                            if($thumb['src']) {
                                $img_content = '<img src="'.$thumb['src'].'" alt="'.$thumb['alt'].'" >';
                            } else {
                                $img_content = '<span class="no_image">no image</span>';
                            }

                            echo $img_content;
                        }
                         ?>
                        </a>
                    </div>

 

방법을 찾지 못하고 있습니다요.

"id"가 "btn_pop"를 적용해서 view페이지를 불러오는 방법을 알려주시면 정말로 고맙겠습니다.

이 질문에 댓글 쓰기 :

답변 2

스킨 폴더에 업로드
rumiPopup.css
jquery.rumiPopup.js

 

스킨 폴더에 _common.php 파일생성

<?php
if(strpos($_SERVER['SCRIPT_NAME'], "theme")===false) {
    include_once('../../../common.php');
} else {
    include_once('../../../../../common.php');
}

 

스킨 폴더에 view.php 파일생성

<?php
include_once('./_common.php');
if (!$board['bo_table']) {
   alert('존재하지 않는 게시판입니다.', G5_URL);
}
check_device($board['bo_device']);
if (isset($write['wr_is_comment']) && $write['wr_is_comment']) {
    goto_url(get_pretty_url($bo_table, $write['wr_parent'], '#c_'.$wr_id));
}
if (!$bo_table) {
    $msg = "bo_table 값이 넘어오지 않았습니다.\\n\\nboard.php?bo_table=code 와 같은 방식으로 넘겨 주세요.";
    alert($msg);
}
$g5['board_title'] = ((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']);
// wr_id 값이 있으면 글읽기
if ((isset($wr_id) && $wr_id) || (isset($wr_seo_title) && $wr_seo_title)) {
    // 글이 없을 경우 해당 게시판 목록으로 이동
    if (!isset($write['wr_id'])) {
        $msg = '글이 존재하지 않습니다.\\n\\n글이 삭제되었거나 이동된 경우입니다.';
        alert($msg, get_pretty_url($bo_table));
    }
    // 그룹접근 사용
    if (isset($group['gr_use_access']) && $group['gr_use_access']) {
        if ($is_guest) {
            $msg = "비회원은 이 게시판에 접근할 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.";
            alert($msg, G5_BBS_URL.'/login.php?wr_id='.$wr_id.$qstr.'&url='.urlencode(get_pretty_url($bo_table, $wr_id, $qstr)));
        }
        // 그룹관리자 이상이라면 통과
        if ($is_admin == "super" || $is_admin == "group") {
            ;
        } else {
            // 그룹접근
            $sql = " select count(*) as cnt from {$g5['group_member_table']} where gr_id = '{$board['gr_id']}' and mb_id = '{$member['mb_id']}' ";
            $row = sql_fetch($sql);
            if (!$row['cnt']) {
                alert("접근 권한이 없으므로 글읽기가 불가합니다.\\n\\n궁금하신 사항은 관리자에게 문의 바랍니다.", G5_URL);
            }
        }
    }
    // 로그인된 회원의 권한이 설정된 읽기 권한보다 작다면
    if ($member['mb_level'] < $board['bo_read_level']) {
        if ($is_member)
            alert('글을 읽을 권한이 없습니다.', G5_URL);
        else
            alert('글을 읽을 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.', G5_BBS_URL.'/login.php?wr_id='.$wr_id.$qstr.'&url='.urlencode(get_pretty_url($bo_table, $wr_id, $qstr)));
    }
    // 본인확인을 사용한다면
    if ($board['bo_use_cert'] != '' && $config['cf_cert_use'] && !$is_admin) {
        // 인증된 회원만 가능
        if ($is_guest) {
            alert('이 게시판은 본인확인 하신 회원님만 글읽기가 가능합니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.', G5_BBS_URL.'/login.php?wr_id='.$wr_id.$qstr.'&url='.urlencode(get_pretty_url($bo_table, $wr_id, $qstr)));
        }
        if (strlen($member['mb_dupinfo']) == 64 && $member['mb_certify']) { // 본인 인증 된 계정 중에서 di로 저장 되었을 경우에만
            goto_url(G5_BBS_URL."/member_cert_refresh.php?url=".urlencode(get_pretty_url($bo_table, $wr_id, $qstr)));
        }
        if ($board['bo_use_cert'] == 'cert' && !$member['mb_certify']) {
            alert('이 게시판은 본인확인 하신 회원님만 글읽기가 가능합니다.\\n\\n회원정보 수정에서 본인확인을 해주시기 바랍니다.', G5_URL);
        }
        if ($board['bo_use_cert'] == 'adult' && !$member['mb_adult']) {
            alert('이 게시판은 본인확인으로 성인인증 된 회원님만 글읽기가 가능합니다.\\n\\n현재 성인인데 글읽기가 안된다면 회원정보 수정에서 본인확인을 다시 해주시기 바랍니다.', G5_URL);
        }
    }
    // 자신의 글이거나 관리자라면 통과
    if (($write['mb_id'] && $write['mb_id'] === $member['mb_id']) || $is_admin) {
        ;
    } else {
        // 비밀글이라면
        if (strstr($write['wr_option'], "secret"))
        {
            // 회원이 비밀글을 올리고 관리자가 답변글을 올렸을 경우
            // 회원이 관리자가 올린 답변글을 바로 볼 수 없던 오류를 수정
            $is_owner = false;
            if ($write['wr_reply'] && $member['mb_id'])
            {
                $sql = " select mb_id from {$write_table}
                            where wr_num = '{$write['wr_num']}'
                            and wr_reply = ''
                            and wr_is_comment = 0 ";
                $row = sql_fetch($sql);
                if ($row['mb_id'] === $member['mb_id'])
                    $is_owner = true;
            }
            $ss_name = 'ss_secret_'.$bo_table.'_'.$write['wr_num'];
            if (!$is_owner)
            {
                if (!get_session($ss_name))
                    goto_url(G5_BBS_URL.'/password.php?w=s&bo_table='.$bo_table.'&wr_id='.$wr_id.$qstr);
            }
            set_session($ss_name, TRUE);
        }
    }
    // 한번 읽은글은 브라우저를 닫기전까지는 카운트를 증가시키지 않음
    $ss_name = 'ss_view_'.$bo_table.'_'.$wr_id;
    if (!get_session($ss_name))
    {
        sql_query(" update {$write_table} set wr_hit = wr_hit + 1 where wr_id = '{$wr_id}' ");
        // 자신의 글이면 통과
        if ($write['mb_id'] && $write['mb_id'] === $member['mb_id']) {
            ;
        } else if ($is_guest && $board['bo_read_level'] == 1 && $write['wr_ip'] == $_SERVER['REMOTE_ADDR']) {
            // 비회원이면서 읽기레벨이 1이고 등록된 아이피가 같다면 자신의 글이므로 통과
            ;
        } else {
            // 글읽기 포인트가 설정되어 있다면
            if ($config['cf_use_point'] && $board['bo_read_point'] && $member['mb_point'] + $board['bo_read_point'] < 0)
                alert('보유하신 포인트('.number_format($member['mb_point']).')가 없거나 모자라서 글읽기('.number_format($board['bo_read_point']).')가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.');
            insert_point($member['mb_id'], $board['bo_read_point'], ((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']).' '.$wr_id.' 글읽기', $bo_table, $wr_id, '읽기');
        }
        set_session($ss_name, TRUE);
    }
    $g5['title'] = strip_tags(conv_subject($write['wr_subject'], 255))." > ".$g5['board_title'];
} else {
    if ($member['mb_level'] < $board['bo_list_level']) {
        if ($member['mb_id'])
            alert('목록을 볼 권한이 없습니다.', G5_URL);
        else
            alert('목록을 볼 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.', G5_BBS_URL.'/login.php?'.$qstr.'&url='.urlencode(G5_BBS_URL.'/board.php?bo_table='.$bo_table.($qstr?'&':'')));
    }
    // 본인확인을 사용한다면
    if ($board['bo_use_cert'] != '' && $config['cf_cert_use'] && !$is_admin) {
        // 인증된 회원만 가능
        if ($is_guest) {
            alert('이 게시판은 본인확인 하신 회원님만 글읽기가 가능합니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.', G5_BBS_URL.'/login.php?wr_id='.$wr_id.$qstr.'&url='.urlencode(get_pretty_url($bo_table, $wr_id, $qstr)));
        }
        if (strlen($member['mb_dupinfo']) == 64 && $member['mb_certify']) { // 본인 인증 된 계정 중에서 di로 저장 되었을 경우에만
            goto_url(G5_BBS_URL."/member_cert_refresh.php?url=".urlencode(get_pretty_url($bo_table, $wr_id, $qstr)));
        }
        if ($board['bo_use_cert'] == 'cert' && !$member['mb_certify']) {
            alert('이 게시판은 본인확인 하신 회원님만 글읽기가 가능합니다.\\n\\n회원정보 수정에서 본인확인을 해주시기 바랍니다.', G5_URL);
        }
        if ($board['bo_use_cert'] == 'adult' && !$member['mb_adult']) {
            alert('이 게시판은 본인확인으로 성인인증 된 회원님만 글읽기가 가능합니다.\\n\\n현재 성인인데 글읽기가 안된다면 회원정보 수정에서 본인확인을 다시 해주시기 바랍니다.', G5_URL);
        }
    }
    if (!isset($page) || (isset($page) && $page == 0)) $page = 1;
    $g5['title'] = $g5['board_title'].' '.$page.' 페이지';
}
$is_auth = $is_admin ? true : false;
include_once(G5_PATH.'/head.sub.php');
$width = $board['bo_table_width'];
if ($width <= 100)
    $width .= '%';
else
    $width .='px';
// IP보이기 사용 여부
$ip = "";
$is_ip_view = $board['bo_use_ip_view'];
if ($is_admin) {
    $is_ip_view = true;
    if ($write && array_key_exists('wr_ip', $write)) {
        $ip = $write['wr_ip'];
    }
} else {
    // 관리자가 아니라면 IP 주소를 감춘후 보여줍니다.
    if (isset($write['wr_ip'])) {
        $ip = preg_replace("/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/", G5_IP_DISPLAY, $write['wr_ip']);
    }
}
// 분류 사용
$is_category = false;
$category_name = '';
if ($board['bo_use_category']) {
    $is_category = true;
    if (array_key_exists('ca_name', $write)) {
        $category_name = $write['ca_name']; // 분류명
    }
}
// 추천 사용
$is_good = false;
if ($board['bo_use_good'])
    $is_good = true;
// 비추천 사용
$is_nogood = false;
if ($board['bo_use_nogood'])
    $is_nogood = true;
$admin_href = "";
// 최고관리자 또는 그룹관리자라면
if ($member['mb_id'] && ($is_admin === 'super' || $group['gr_admin'] === $member['mb_id']))
    $admin_href = G5_ADMIN_URL.'/board_form.php?w=u&bo_table='.$bo_table;
// 게시물 아이디가 있다면 게시물 보기를 INCLUDE
if (isset($wr_id) && $wr_id) {
    include_once(G5_BBS_PATH.'/view.php');
}
include_once(G5_PATH.'/tail.sub.php');

 

list.skin.php 파일 수정

<?php
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/rumiPopup.css">', 0);
add_javascript('<script src="'.$board_skin_url.'/jquery.rumiPopup.js"></script>', 0);
?>
<?php for ($i=0; $i<count($list); $i++) { ?>
<div class="popupLayer" data-id="<?php echo $list[$i]['wr_id']; ?>" data-subject="<?php echo $list[$i]['wr_subject']; ?>">
<?php echo $list[$i]['wr_subject']; ?>
</div>
<?php } ?>
<script>
$(document).on('click', '.popupLayer', function(e){
    rumiPopup.popup({
        width : 800, // 팝업창 가로크기
        height : 600, // 팝업창 세로크기
        fadeIn : true, // 팝업시 이펙트종류
        fadeinTime : 500, // 이펙트 지연시간
        url : "<?php echo $board_skin_url; ?>/view.php?bo_table=<?php echo $bo_table; ?>&wr_id="+$(this).attr('data-id'),
        title : $(this).attr('data-subject'), // 팝업창 제목
        buttonView : true,
        reloadBtn : true,
        button : {
            "닫기" : function(){
                rumiPopup.close(); // 팝업창 닫기
            },
        },
        open : function(){
            $("div.rumiButton button:contains('닫기')").css({"background":"#555"});
            $("div.rumiButton button:contains('삭제')").css({"background":"#555"}).hide();
        },
        close : function() {
        }
    });
});
</script>

게시판의 목록에서 제목을 클릭하면 팝업창이 뜨고,
팝업창 안의 목록에서 제목을 클릭하면 그 팝업창 안에 다시 팝업창이 겹쳐집니다.
그리고 그 겹쳐진 두 번째 팝업창에서 목록을 클릭하면 두 번째 팝업창에 세 번째 팝업창이 겹쳐집니다.
이 내용을 도해하면 아래와 같습니다.

 [ 게시판 목록 페이지 ]
----------------------------------------------------------------------------------------------
 제목(테스트)
----------------------------------------------------------------------------------------------
* 위의 제목(테스트)를 클릭하면 아래처럼 정상적으로 팝업창이 생김

[ 게시판 팝업창 ]
|---------------------------------------------------------------------------------------------|
| 제목(테스트)                                                                                        X |
|---------------------------------------------------------------------------------------------|
|                                                                                                            | 
|                                                                                                            | 
|                                                                                                            | 
|__________________________________________________________________________________________|
* 위의 팝업창의 목록에서 제목(테스트)를 클릭하면 아래처럼 새로운 팝업창이 아래 겹쳐짐

[ 게시판 팝업창 ]
|---------------------------------------------------------------------------------------------|
| 제목(테스트)                                                                                        X |
|---------------------------------------------------------------------------------------------|
| 제목(테스트)                                                                                        X |
|---------------------------------------------------------------------------------------------|
|                                                                                                            |
|                                                                                                            |
|                                                                                                            |
|__________________________________________________________________________________________|
* 위의 아래쪽의 두 번째 팝업창의 목록에서 제목(테스트)를 클릭하면 아래처럼 세 번째 팝업창이 두 번째 팝업창 아래 겹쳐짐

[ 게시판 팝업창 ]
|---------------------------------------------------------------------------------------------|
| 제목(테스트)                                                                                        X |
|---------------------------------------------------------------------------------------------|
| 제목(테스트)                                                                                        X |
|---------------------------------------------------------------------------------------------|
| 제목(테스트)                                                                                        X |
|---------------------------------------------------------------------------------------------|
|                                                                                                            |
|                                                                                                            |
|                                                                                                            |
|__________________________________________________________________________________________|

팝업창에선 목록가기 버튼은 없애야죠 아니면 관리자만 보이게 한다든지요
내용만 보고 창 닫아야죠
팝업창에서 목록,내용 그냥 보고 팝업 아닐땐  팝업되고 이걸 구현 하려면 복잡합니다.

자바스크립트 크릭이벤트를 사용하여 트리거를 만들어서 
<div id="btn_pop" class="" 이곳에 wr_id 값을 넣어서 연동해 주면 될 것입니다....>팝업띄우기</div>
이것을 만들고 클릭하면 팝업이 뜰 것입니다.

url : "<?php echo G5_BBS_URL; ?>/board.php?bo_table=<?php echo $bo_table; ?>&wr_id=<?php echo $list[$i]['wr_id'] ?>", // 불러올 문서 URL

안되면 의로를 맡기세요...

답변을 작성하시기 전에 로그인 해주세요.
전체 3

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT