관리자에서 등록한 팝업 일괄로 오늘하루열지않기가 가능한가요?

관리자에서 등록한 팝업 일괄로 오늘하루열지않기가 가능한가요?

QA

관리자에서 등록한 팝업 일괄로 오늘하루열지않기가 가능한가요?

본문


<script>
$(function() {
    $(".hd_pops_reject").click(function() {
        var id = $(this).attr('class').split(' ');
        var ck_name = id[1];
        var exp_time = parseInt(id[2]);
        $("hd_pops").css("display", "none");
        set_cookie(ck_name, 1, exp_time, g5_cookie_domain);
        console.log(id);
    });
    $('.hd_pops_close').click(function() {
        $('.hd_pops').hide();
    });
});
</script>

일괄 닫기말고는 newwin.inc.php 쪽 내용을 수정한 것은 없습니다.

한꺼번에 쿠키삭제하려면 어떤 부분을 수정해야할까요?

이 질문에 댓글 쓰기 :

답변 2

다음과 같이 해 볼 수 있을것 같습니다.

팜고하셔서 원하시는 형식으로 구현하시면 가능하지 않을까 합니다.


<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
if (!defined('_SHOP_')) {
    $pop_division = 'comm';
} else {
    $pop_division = 'shop';
}
$sql = " select * from {$g5['new_win_table']}
          where '".G5_TIME_YMDHIS."' between nw_begin_time and nw_end_time
            and nw_device IN ( 'both', 'pc' ) and nw_division IN ( 'both', '".$pop_division."' )
          order by nw_id asc ";
$result = sql_query($sql, false);
?>
<!-- 팝업레이어 시작 { -->
<div id="hd_pop">
    <h2>팝업레이어 알림</h2>
<?php
for ($i=0; $nw=sql_fetch_array($result); $i++)
{
    // 이미 체크 되었다면 Continue
    if (isset($_COOKIE["hd_pops_{$nw['nw_id']}"]) && $_COOKIE["hd_pops_{$nw['nw_id']}"])
        continue;
?>
    <div id="hd_pops_<?php echo $nw['nw_id'] ?>" class="hd_pops" style="top:<?php echo $nw['nw_top']?>px;left:<?php echo $nw['nw_left']?>px">
        <div class="hd_pops_con" style="width:<?php echo $nw['nw_width'] ?>px;height:<?php echo $nw['nw_height'] ?>px">
            <?php echo conv_content($nw['nw_content'], 1); ?>
        </div>
        <div class="hd_pops_footer">
            <button class="hd_pops_reject" data-popup-id="<?php echo $nw['nw_id']; ?>" data-exp-time="<?php echo $nw['nw_disable_hours']; ?>"><strong><?php echo $nw['nw_disable_hours']; ?></strong>시간 동안 다시 열람하지 않습니다.</button>
            <button class="hd_pops_close" data-popup-id="<?php echo $nw['nw_id']; ?>">닫기 <i class="fa fa-times" aria-hidden="true"></i></button>
        </div>
    </div>
<?php }
if ($i == 0) echo '<span class="sound_only">팝업레이어 알림이 없습니다.</span>';
?>
</div>
<script>
$(function() {
    $(".hd_pops_reject").click(function() {
        var popupId = $(this).data('popup-id');
        var expTime = $(this).data('exp-time');
        $("#hd_pops_" + popupId).css("display", "none");
        set_cookie("hd_pops_" + popupId, 1, expTime, g5_cookie_domain);
    });
    $('.hd_pops_close').click(function() {
        var popupId = $(this).data('popup-id');
        $('#hd_pops_' + popupId).css('display','none');
    });
    $("#hd").css("z-index", 1000);
});
</script>
<!-- } 팝업레이어 끝 -->

* 각 버튼에 data-popup-id 속성을 추가하여 해당 팝업의 ID를 저장
* 각 버튼에 data-exp-time 속성을 추가하여 해당 팝업의 만료 시간을 저장
* JavaScript에서 클릭 이벤트 핸들러에서 data-popup-id를 통해 팝업 ID를 가져와서 해당 팝업을 숨기고 쿠키를 설정

다음과 같이 하면 가능하지 않을까 합니다.

참고하셔서 원하시는 로직으로 구현해 보세요

newwin.inc.php 원본기준 수정


<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
if (!defined('_SHOP_')) {
    $pop_division = 'comm';
} else {
    $pop_division = 'shop';
}
$sql = " select * from {$g5['new_win_table']}
          where '".G5_TIME_YMDHIS."' between nw_begin_time and nw_end_time
            and nw_device IN ( 'both', 'pc' ) and nw_division IN ( 'both', '".$pop_division."' )
          order by nw_id asc ";
$result = sql_query($sql, false);
?>
<!-- 팝업레이어 시작 { -->
<div id="hd_pop">
    <h2>팝업레이어 알림</h2>
<?php
for ($i=0; $nw=sql_fetch_array($result); $i++)
{
    // 이미 체크 되었다면 Continue
    if (isset($_COOKIE["hd_pops_{$nw['nw_id']}"]) && $_COOKIE["hd_pops_{$nw['nw_id']}"])
        continue;
?>
    <div id="hd_pops_<?php echo $nw['nw_id'] ?>" class="hd_pops" style="top:<?php echo $nw['nw_top']?>px;left:<?php echo $nw['nw_left']?>px">
        <div class="hd_pops_con" style="width:<?php echo $nw['nw_width'] ?>px;height:<?php echo $nw['nw_height'] ?>px">
            <?php echo conv_content($nw['nw_content'], 1); ?>
        </div>
        <div class="hd_pops_footer">
            <button class="hd_pops_reject hd_pops_<?php echo $nw['nw_id']; ?> <?php echo $nw['nw_disable_hours']; ?>" data-nw-id="<?php echo $nw['nw_id']; ?>"><strong><?php echo $nw['nw_disable_hours']; ?></strong>시간 동안 다시 열람하지 않습니다.</button>
            <button class="hd_pops_close hd_pops_<?php echo $nw['nw_id']; ?>">닫기 <i class="fa fa-times" aria-hidden="true"></i></button>
        </div>
    </div>
<?php }
if ($i == 0) echo '<span class="sound_only">팝업레이어 알림이 없습니다.</span>';
?>
</div>
<script>
$(function() {
    $(".hd_pops_reject").click(function() {
        var id = $(this).attr('class').split(' ');
        var ck_name = id[1];
        var exp_time = parseInt(id[2]);
        var nw_id = $(this).data('nw-id');
        $("#"+id[1]).css("display", "none");
        set_cookie(ck_name, 1, exp_time, g5_cookie_domain);
        // 쿠키 삭제
        deleteAllCookies();
    });
    $('.hd_pops_close').click(function() {
        var idb = $(this).attr('class').split(' ');
        $('#'+idb[1]).css('display','none');
    });
    $("#hd").css("z-index", 1000);
});
// 모든 쿠키 삭제 함수
function deleteAllCookies() {
    var cookies = document.cookie.split(";");
    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        var eqPos = cookie.indexOf("=");
        var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/";
    }
}
</script>
<!-- } 팝업레이어 끝 -->

제가 질문을 잘못 남긴거같네요 ㅠㅠ 쿠기 삭제가 아니라 일괄로 쿠키 세팅하는거였는데
set_cookie(ck_name, 1, exp_time, g5_cookie_domain); 이게 클릭한 팝업의 쿠키 뿐만 아니라 모든 팝업으로 적용되게 하려면 어떻게 해야할까요?

답변을 작성하시기 전에 로그인 해주세요.
전체 123,672 | RSS
QA 내용 검색

회원로그인

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