테스트 사이트 - 개발 중인 베타 버전입니다

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

굼떠 1년 전 조회 2,053

</p>

<p><script></p>

<p>$(function() {</p>

<p>    $(".hd_pops_reject").click(function() {</p>

<p>        var id = $(this).attr('class').split(' ');</p>

<p>        var ck_name = id[1];</p>

<p>        var exp_time = parseInt(id[2]);</p>

<p>        $("hd_pops").css("display", "none");</p>

<p>        set_cookie(ck_name, 1, exp_time, g5_cookie_domain);</p>

<p>        console.log(id);</p>

<p>    });</p>

<p>    $('.hd_pops_close').click(function() {</p>

<p>        $('.hd_pops').hide();</p>

<p>    });</p>

<p>});</p>

<p></script></p>

<p>

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

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

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트

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

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

</p>

<p><?php

if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가</p>

<p>if (!defined('_SHOP_')) {

    $pop_division = 'comm';

} else {

    $pop_division = 'shop';

}</p>

<p>$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);

?></p>

<p><!-- 팝업레이어 시작 { -->

<div id="hd_pop">

    <h2>팝업레이어 알림</h2></p>

<p><?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;

?></p>

<p>    <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></p>

<p><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를 가져와서 해당 팝업을 숨기고 쿠키를 설정

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

굼떠
1년 전
답변 감사드립니다~!!

댓글을 작성하려면 로그인이 필요합니다.

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

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

newwin.inc.php 원본기준 수정

</p>

<p><?php

if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가</p>

<p>if (!defined('_SHOP_')) {

    $pop_division = 'comm';

} else {

    $pop_division = 'shop';

}</p>

<p>$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);

?></p>

<p><!-- 팝업레이어 시작 { -->

<div id="hd_pop">

    <h2>팝업레이어 알림</h2></p>

<p><?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;

?></p>

<p>    <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></p>

<p><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);

});</p>

<p>// 모든 쿠키 삭제 함수

function deleteAllCookies() {

    var cookies = document.cookie.split(";");</p>

<p>    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>

<!-- } 팝업레이어 끝 -->

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인