织梦DedeCMS使用JS记录浏览历史并调用历史记录教程
织梦CMS中内置了两个非常重要的Cookie读写函数,它们位于 include/js/dedeajax2.js 文件中。这两个函数极大地简化了JS操作Cookie的复杂度,让开发者能够轻松实现浏览历史记录功能。
核心函数代码如下:
//读写cookie函数
function GetCookie(c_name)
{
if (document.cookie.length > 0)
{
c_start = document.cookie.indexOf(c_name + "=")
if (c_start != -1)
{
c_start = c_start + c_name.length + 1;
c_end = document.cookie.indexOf(";",c_start);
if (c_end == -1)
{
c_end = document.cookie.length;
}
return (document.cookie.substring(c_start,c_end));
}
}
return null
}
function SetCookie(c_name,value,expiredays)
{
var exdate = new Date();
exdate.setDate(exdate.getDate() + expiredays);
document.cookie = c_name + "=" +escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString()); //使设置的有效时间正确。增加toGMTString()
}
增加自定义记录函数
在原有函数基础上,增加一个专门用于记录浏览历史的自定义函数 getCookies,该函数可以同时存储文章ID、标题和图片地址。
function getCookies(ids,title,img){
var saveid = GetCookie('id');
var savetitle = GetCookie('products');
var saveimg = GetCookie('images');
if(saveid != null && savetitle != null && saveimg != null)
{
var saveids = saveid.split(',');
var savetitles = savetitle.split(',');
var saveimgs = saveimg.split(',');
var hasid = false;
saveid = "";
savetitle = "";
saveimg = "";
j = 1;
for(i=saveids.length-1;i>=0;i--)
{
if(saveids[i]==ids && hasid) continue;
else {
if(saveids[i]==ids && !hasid) hasid = true;
saveid += (saveid=="" ? saveids[i] : ','+saveids[i]);
savetitle += (savetitle=="" ? savetitles[i] : ','+savetitles[i]);
saveimg += (saveimg=="" ? saveimgs[i] : ','+saveimgs[i]);
j++;
if(j==10 && hasid) break;
if(j==9 && !hasid) break;
}
}
if(hasid) { return false; }
else saveid += ','+ids;
savetitle += ','+title;
saveimg += ','+img;
SetCookie('id',saveid,1);
SetCookie('products',savetitle,1);
SetCookie('images',saveimg,1);
}
else
{
SetCookie('id',ids,1); //这个是ID。用来做链接用的
SetCookie('products',title,1); //这个是标题,用来显示在页面的
SetCookie('images',img,1); //这个是图片
}
}
在页面中引用JS并调用记录函数
在需要记录浏览历史的文章页面中,首先引入 dedeajax2.js 文件,然后调用 getCookies 函数将当前文章信息存入Cookie。
<script language="javascript" type="text/javascript" src="{dede:global.cfg_cmsurl/}/include/js/dedeajax2.js"></script>
<script language="javascript" type="text/javascript">
getCookies({dede:field.id/},'{dede:field.title/}','{dede:field.litpic/}')
function CheckLogin2(){
var taget_obj = document.getElementByIdx_x_x('_userlogin');
myajax = new DedeAjax(taget_obj,false,false,"","","");
myajax.SendGet2("{dede:global.cfg_cmspath/}/member/ajax_loginsta2.php");
DedeXHTTP = null;
}
</script>
调用并显示浏览历史记录
在需要展示浏览历史的位置(如侧边栏),使用以下代码读取Cookie并动态生成历史列表。同时提供“清空”按钮功能,方便用户清除记录。
<div class="Recommend h-394">
<h1 class="rec-bg"><span class="span-rt-3"><a onclick="destroy_cookie()">清空</a></span>最近浏览过的文章</h1>
<ul class="w-223 browse " id="viewHistory">
<script type="text/javascript">
function destroy_cookie(){
SetCookie('id','',1);
SetCookie('products','',1);
SetCookie('images','',1);
document.getElementByIdx_x_x('viewHistory').innerHTML="";
window.alert('你已成功清除浏览历史记录!');
}
</script>
<script type="text/javascript">
var saveid = GetCookie('id');
var savetitle = GetCookie('products');
var saveimg = GetCookie('images');
if(saveid != null && savetitle != null)
{
var saveids = saveid.split(',');
var savetitles = savetitle.split(',');
var saveimgs = saveimg.split(',');
var hasid = false;
saveid = "";
savetitle = "";
saveimg = "";
for(i=saveids.length-1;i>=0;i--)
{
document.write("<li>" +"<div class='w-53'><a href=\"/plus/view.php?aid="+saveids[i]+"\" title=\""+savetitles[i]+"\"><img src='"+saveimgs[i]+"' width='52' height='51'/></a></div><p class='w-53-rt'><a href=\"/plus/view.php?aid="+saveids[i]+"\" title=\""+savetitles[i]+"\">"+savetitles[i]+"</a></p></li>");
}
}
</script>
</ul>
</div>
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
