kingcms onepage 更新无效问题处理 更新时间单位修改
来源:互联网 发布:ubuntu 卸载opera 编辑:程序博客网 时间:2024/05/17 02:01
今天头一次用kingcms asp 5.1版,确实短小精悍,不过问题也很多,就比如这个单页面定时更新问题。我在按照网上说的把{king:onepage#update time="1"/}放到外部模板</html>后也没作用,再到官网一查发现好多用asp版的都有这问题,现将处理方法总结一下,方便他人.按照本方法处理后不仅解决你更新不能问题,还能自定义更新时间单位(默认是小时).废话不多说了,信不信由你,反正我信了.
(本文中的路径设置均以未变动的原始路径为基础,修改过的请对号入座)
首先说明一下造成此问题的原因.据我初步观察是/page/onepage/update.js中ajax调用/page/system/now.asp无返回值所造成的.这个now.asp就是负责计算时间差的,所以你时间差得不到是没办法更新的.
var datediff=getdom('/page/system/now.asp?datetime=2008%2D5%2D7+14%3A27%3A34');if(datediff>1){getdom('/page/onepage/create.asp?listid=9%2C8%2C1&time=1');};
update.js文件,问题就在这个datediff总是undefined,所以下面的if永不成立自然无法更新.
求人不如求己,人家都开源了咱也没啥好说的,自己动手改吧.改之前先讲下思路,高手看到这里想必自己已经有办法了吧.为了把对cms的影响降到最低,咱们最好是修改update.js.而此文件是由同文件夹下的fun.asp生成的,所以咱们主要修改fun.asp,目的是把判断时间的函数放到update.js,跳过now.asp,从而避免ajax无返回值问题(本人对ajax表示不懂所以没想着怎么解决无返回值问题).
1.首先打开/page/onepage/fun.asp,搜索updatejs函数,将其整体替换为
public function updatejs(l1,l2)dim I1I1="var newdate = new Date(new Date().getTime());var olddate = new Date('" & now() & "');var datediff=olddate.dateDiff('n',newdate);"if validate(l2,2) thenI1=I1&"if(datediff>"&l2&"){getdom('"&king.page&"onepage/create.asp?listid="&server.urlencode(l1)&"&time="&l2&"');};"elseI1=I1&"if(datediff>"&r_uptime&"){getdom('"&king.page&"onepage/create.asp?listid="&server.urlencode(l1)&"');};"end ifupdatejs=I1end function2.同文件夹下新建datemodify.js文件内容如下
Date.prototype.dateAdd = function(interval,number) { var d = this; var k={'y':'FullYear', 'q':'Month', 'm':'Month', 'w':'Date', 'd':'Date', 'h':'Hours', 'n':'Minutes', 's':'Seconds', 'ms':'MilliSeconds'}; var n={'q':3, 'w':7}; eval('d.set'+k[interval]+'(d.get'+k[interval]+'()+'+((n[interval]||1)*number)+')'); return d; } /* 计算两日期相差的日期年月日等 */ Date.prototype.dateDiff = function(interval,objDate2) { var d=this, i={}, t=d.getTime(), t2=objDate2.getTime(); i['y']=objDate2.getFullYear()-d.getFullYear(); i['q']=i['y']*4+Math.floor(objDate2.getMonth()/4)-Math.floor(d.getMonth()/4); i['m']=i['y']*12+objDate2.getMonth()-d.getMonth(); i['ms']=objDate2.getTime()-d.getTime(); i['w']=Math.floor((t2+345600000)/(604800000))-Math.floor((t+345600000)/(604800000)); i['d']=Math.floor(t2/86400000)-Math.floor(t/86400000); i['h']=Math.floor(t2/3600000)-Math.floor(t/3600000); i['n']=Math.floor(t2/60000)-Math.floor(t/60000); i['s']=Math.floor(t2/1000)-Math.floor(t/1000); return i[interval]; }
此文件主要是方便计算时间差,有能力的也可以自己写,其中有对时间单位的定义,以后要修改就按这个改{'y':'FullYear', 'q':'Month', 'm':'Month', 'w':'Date', 'd':'Date', 'h':'Hours', 'n':'Minutes', 's':'Seconds', 'ms':'MilliSeconds'};
再看fun.asp中updatejs的
I1="var newdate = new Date(new Date().getTime());var olddate = new Date('" & now() & "');var datediff=olddate.dateDiff('n',newdate);"看见'n'了吗,这里代表分钟,以后要改时间单位就参照上面的定义输入代表字符就行。
3.最后要修改标签替换函数,因为咱们额外要调用一个datemodify.js,还是打开fun.asp,拉至底部找到function king_tag_onepage_update(tag)函数
整体替换为
function king_tag_onepage_update(tag)dim t_class,listid,jstimelistid=king.getlabel(tag,"listid")jstime=king.getlabel(tag,"time")king_tag_onepage_update="<script src="""&king.page&"onepage/datemodify.js""></script> " & "<script src="""&king.page&"onepage/update.js""></script> " set t_class=new onepageking.savetofile king.page&"onepage/update.js",t_class.updatejs(listid,jstime)'创建日期文件set t_class=nothingend function
至此修改就已经完成了,对于调用标签没有什么变化,只要注意time属性是以你自己定义的时间单位来计算的还有就是要刷新两次才能看到效果。
- kingcms onepage 更新无效问题处理 更新时间单位修改
- echarts动态时间轴,以秒为单位更新
- weblogic更新文件无效的问题
- Django中更新数据库无效的问题
- MergeCursor引起的CursorAdapter更新无效问题
- 修改ubuntu时区及更新时间
- lua文件热更新无效和资源热更新无效的问题
- 更新时间
- kingcms留言模块修改
- Centos 7 修改时间区和更新时间
- 修复 Ubuntu apt 更新时签名无效的问题
- ubuntu12.04.4更新软件源“GPG签名无效”的问题
- Xcode更新或者重新安装导致插件无效问题的解决方案
- 解决适配器(Adapter)数据更新调用 notifyDataSetChanged()无效问题
- 解决maven jar包 miss 更新无效的问题。
- 修复 Ubuntu apt 更新时签名无效的问题
- 解决maven jar包 miss更新无效的问题
- access 更新时间类型遇到的问题
- 监视MySQL的所有执行语句
- 程序员数学之总结《理解矩阵》
- Discuz X2.0数据字典(数据库表作用解释)
- UCenter 1.5.1 Release 20100519 数据字典
- DiscuzX 数据字典 超详细
- kingcms onepage 更新无效问题处理 更新时间单位修改
- Qt QSS样式表
- (2011.08.06)三种不同方式实现对分支结点和叶结点的不同表示
- Eclipse快捷键
- Qt隐藏鼠标
- CEGUI的窗口管理
- 我的宝宝
- C++拷贝构造函数(深拷贝,浅拷贝)
- 对以前的事的回忆