梁鹏程个人作品集,帆子博客

最新碎语:听说,常说晚安的人通常都不会早睡。 Heard that people used to say good night, generally will not go to bed early.

您的位置:梁鹏程个人作品集,帆子博客 >工作简记> ECShop用js(jQuery)操作cookie,实现广告可勾选今日不再显示;

ECShop用js(jQuery)操作cookie,实现广告可勾选今日不再显示;

一、后台添加 “广告位” 和 “广告”

(1)广告位模版:

<ul class="left-ad">
{foreach from=$ads item=ad}
<li>
{$ad}
</li>
{/foreach}
</ul>

(2)广告的媒介类型为“图片”;


二、修改ecshop文件(includes/lib_insert.php):

(1)找到

function insert_ads($arr){
........
        switch ($row['media_type'])
        {
            case 0: // 图片广告
                $src = (strpos($row['ad_code'], 'http://') === false && strpos($row['ad_code'], 'https://') === false) ?
                        DATA_DIR . "/afficheimg/$row[ad_code]" : $row['ad_code'];
                $ads[] = "<a href='affiche.php?ad_id=$row[ad_id]&amp;uri=" .urlencode($row["ad_link"]). "'
                target='_blank'><img src='$src' width='" .$row['ad_width']. "' height='$row[ad_height]'
                border='0' /></a>";
                break;
 ......
}

(2)把里面case 0的代码修改成(添加了几行)


            case 0: // 图片广告
                $src = (strpos($row['ad_code'], 'http://') === false && strpos($row['ad_code'], 'https://') === false) ?
                        DATA_DIR . "/afficheimg/$row[ad_code]" : $row['ad_code'];
                $ads[] = "<a href='affiche.php?ad_id=$row[ad_id]&amp;uri=" .urlencode($row["ad_link"]). "'
                target='_blank'><img src='$src' width='" .$row['ad_width']. "' height='$row[ad_height]'
                border='0' /></a>
                <div class='text'>
                今天不再顯示
                <input name='cb' id='nodisplay$row[ad_id]' value='$row[ad_id]' type='checkbox'>
                <span>關閉 X</span>
                </div>";
                break;


三、前台模版文件(index.dwt)

(1)在<body></body>之间插入代码:

<div class="index-ad-left index-float-ad">
    {insert name='ads' id=1 num=4}
</div>

id:广告位的id

num:要显示的广告数量


(2)载入jq和jq的cookie插件

{insert_scripts files='jquery-1.11.2.min.js,jquery.cookie.js'}

(3)在页面脚部写JS代码:
<script type="text/javascript">
// 飄浮廣告cookie操作(今日不再顯示)
$(function(){
	// 讀取cookie,把對應的廣告設為不可見
	if($.cookie('ad_id_cookie')){
		var arr_id = new Array();
		arr_id = $.cookie('ad_id_cookie').split(',');
		for (var i = 0; i < arr_id.length; i++) {
			$('#nodisplay'+arr_id[i]).parents('li').hide();
		};
	}

	// 寫入cookie操作
	$('.index-float-ad ul li .text > span').click(function(){

		// 把點擊關閉的廣告設為不可見
		$(this).parents('li').slideUp();

		// 如果勾選了‘今日不再顯示’
		if($(this).siblings('input:checkbox').is(':checked')){

			var ad_id = $(this).siblings('input:checkbox').val(); // 得到勾選的廣告id

			// 如果cookie裏存在廣告id		
			if($.cookie('ad_id_cookie')){
				ad_id = $.cookie('ad_id_cookie')+','+ad_id; // 把cookie裏的id和新的id用","連接起來
				ad_id = $.unique(ad_id.split(',').sort()); // 去掉重覆的id
			}

			// 寫入cookie
			$.cookie('ad_id_cookie', ad_id, { expires:1 });
		}
	})
})
</script>


(4)css样式参考

/*漂浮廣告*/
.index-ad-left{ position: absolute; top: 210px; z-index: 99; width: 700px;}
.index-ad-left li{ float: left; margin-left: 25px; margin-bottom: 20px;}
.index-ad-left li img{ width: 315px;}
.index-ad-left li .text{ height: 35px; line-height: 35px; background-color: #c0c0c0; color: #333; text-align: center;}
.index-ad-left li .text span{ display: inline-block; margin-left: 35px; cursor: pointer;}

.index-ad-right{ position: absolute; top: 210px; right: 5px; z-index: 99;}
.index-ad-right li{ margin-bottom: 20px;}
.index-ad-right li img{ width: 250px;}
.index-ad-right li .text{ height: 35px; line-height: 35px; background-color: #c0c0c0; color: #333; text-align: center;}
.index-ad-right li .text span{ display: inline-block; margin-left: 35px; cursor: pointer;}


附:前端HTML demo

最终效果:

点击查看原图


附:jquery.cookie.js使用方法

1.创建一个会话 cookie:

$.cookie('cookie_name', 'cookie_value');
注:当没有指明 cookie有效时间时,所创建的cookie有效期默认到用户关闭浏览器为止,所以被称为“会话cookie(session cookie)”。

2.创建一个cookie并设置有效时间为 3天:
$.cookie('cookie_name', 'cookie_value', { expires: 3 });
注:当指明了cookie有效时间时,所创建的cookie被称为“持久 cookie (persistent cookie)”。

3.创建一个cookie并设置 cookie的有效路径:
$.cookie('cookie_name', 'cookie_value', { expires: 3, path: '/' });
注:在默认情况下,只有设置 cookie的网页才能读取该 cookie。
如果想让一个页面读取另一个页面设置的cookie,必须设置cookie的路径。

4.读取cookie:
$.cookie('cookie_name'); // cookie存在 => 'cookie_value'
$.cookie('not_existing'); // cookie不存在 => null
5.删除cookie,通过传递null作为cookie的值即可:
$.cookie('cookie_name', null);

----------相关参数的解释---------------
1).expires: 365
定义cookie的有效时间,值可以是一个数字(从创建cookie时算起,以天为单位)或一个Date对象。如果省略,那么创建的cookie是会话cookie,将在用户退出浏览器时被删除。

2).path: '/'
默认情况:只有设置cookie的网页才能读取该cookie。
定义cookie的有效路径。默认情况下, 该参数的值为创建 cookie 的网页所在路径(标准浏览器的行为) 。
如果你想在整个网站中访问这个cookie需要这样设置有效路径:path: '/'。
如果你想删除一个定义了有效路径的 cookie,你需要在调用函数时包含这个路径:$.cookie('cookie_name', null,{ path: '/' });。

3).domain: 'example.com'
默认值:创建 cookie的网页所拥有的域名。

4).secure: true
默认值:false。如果为true,cookie的传输需要使用安全协议(HTTPS)。

5).raw: true
默认值:false。
默认情况下,读取和写入 cookie 的时候自动进行编码和解码(使用encodeURIComponent 编码,decodeURIComponent 解码)。要关闭这个功能设置 raw: true 即可。


---

转载请注明本文标题和链接:《ECShop用js(jQuery)操作cookie,实现广告可勾选今日不再显示;

发表评论

路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交