在之前的原创教程《Phpcms V9广告位循环数据调用方法详解》中讲解了使用eval()函数将广告数据自定义调用出来,而Phpcms V9.6.0 正式版修改了string2array函数,造成原有的eval()调用方式出错,CMSYOU企业网站定制专家经过研究,总结Phpcms V9.6.0 正式版广告调用eval()方式改成string2array()更新方法,与大家分享。
我们可以在论坛看到PHPCMS V9.6.0 正式版更新说明:
string2array函数改成json处理,为了保持兼容函数名称没做变动
具体比较代码得知,phpcms/libs/functions/global.func.php中的函数:
在288、309行的确出现了string2array、array2string函数,具体升级及这两个函数介绍见http://www.cmsyou.com/blog/153.html。
并且在862行改变了广告数据存取到数据库的方式:
function show_ad($siteid, $id) {$siteid = intval($siteid);$id = intval($id);if(!$id || !$siteid) return false;$p = pc_base::load_model('poster_model');$r = $p->get_one(array('spaceid'=>$id, 'siteid'=>$siteid), 'disabled, setting', '`id` ASC');if ($r['disabled']) return '';if ($r['setting']) {$c = string2array($r['setting']);} else {$r['code'] = '';}return $c['code'];}
于是新版Phpcms采用了新的函数string2array保存$r['setting'],存到数据的代码也变化了:
原来存到v9_poster表里边的数据:
现在存的数据格式:
可以看出,由原来的数据,变成了现在的json数据,可谓更高大上了!
点击加载更多